Pārlūkot izejas kodu

refactor: 更改commit获取方式,延迟获取

370774330@qq.com 5 gadi atpakaļ
vecāks
revīzija
ac19823016

+ 23 - 8
web/src/main/java/cn/seecoder/web/controller/gitlab/HookController.java

@@ -6,6 +6,8 @@ import cn.seecoder.web.core.commit.model.CommitRule;
 import cn.seecoder.web.model.enums.CommitRelatedEnum;
 import cn.seecoder.web.model.po.project.CommitPO;
 import cn.seecoder.web.model.vo.GitWebHookVO;
+import cn.seecoder.web.model.vo.Response;
+import cn.seecoder.web.model.vo.project.CommitVO;
 import cn.seecoder.web.service.bug_list.BugListService;
 import cn.seecoder.web.service.project.CommitService;
 import cn.seecoder.web.service.tree.TreeNodeService;
@@ -14,10 +16,9 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * @author chenyz
@@ -26,7 +27,6 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Api(tags = "GitLab Hook API")
 @RestController
-@RequestMapping("/hook")
 public class HookController {
 
     private final BugListService bugListService;
@@ -58,7 +58,7 @@ public class HookController {
      * 所有分支的push都分析
      */
     @ApiOperation(value = "push回调接口", httpMethod = "POST")
-    @PostMapping
+    @PostMapping("/hook")
     @ApiImplicitParam(name = "gitWebHookVO",dataType = "object", paramType = "body")
     public void pushHook(@RequestBody GitWebHookVO gitWebHookVO) throws ServiceException {
 
@@ -87,15 +87,30 @@ public class HookController {
             switch (rule.getType()){
                 case FEAT:
                     treeNodeService.updateNodeState(rule.getId(),rule.getState());
-                    commitService.save(new CommitPO(commit,projectId, CommitRelatedEnum.BUG_ID));
+                    commitService.save(new CommitPO(commit,projectId, CommitRelatedEnum.BUG_ID, rule.getId()));
                     break;
                 case FIX:
                     bugListService.updateState(rule.getState(), rule.getId());
-                    commitService.save(new CommitPO(commit,projectId, CommitRelatedEnum.BUG_ID));
+                    commitService.save(new CommitPO(commit,projectId, CommitRelatedEnum.BUG_ID, rule.getId()));
                     break;
                 case UNKNOWN:
                     break;
             }
         }
     }
+
+    @ApiOperation(value = "获取某个需求树结点的所有commit信息", httpMethod = "GET")
+    @GetMapping("/commits/tree")
+    @ApiImplicitParam(name = "treeId",dataType = "int", paramType = "query")
+    public Response<List<CommitVO>> getTreeCommits(@RequestParam("treeId") Integer treeId){
+        return Response.buildSuccess(commitService.getTreeCommit(treeId));
+    }
+
+    @ApiOperation(value = "获取bug list中一个bug关联的所有commit信息", httpMethod = "GET")
+    @GetMapping("/commits/bug_list")
+    @ApiImplicitParam(name = "bugId",dataType = "int", paramType = "query")
+    public Response<List<CommitVO>> getBugCommits(@RequestParam("bugId") Integer bugId){
+        return Response.buildSuccess(commitService.getBugCommit(bugId));
+    }
+
 }

+ 4 - 0
web/src/main/java/cn/seecoder/web/dao/project/CommitMapper.java

@@ -28,4 +28,8 @@ public interface CommitMapper {
 
     @Select("select count(*) from commit where id = #{id}")
     int isExist(String id);
+
+    @Select("select * from commit where related_id = #{id} and related_type = #{type}")
+    List<CommitPO> selectByRelatedIdAndType(@Param("id") int id,@Param("type") CommitRelatedEnum type);
+
 }

+ 4 - 2
web/src/main/java/cn/seecoder/web/model/po/project/CommitPO.java

@@ -36,11 +36,13 @@ public class CommitPO {
      */
     private Integer projectId;
 
-    public CommitPO(GitWebHookVO.Commit commit, Integer projectId, CommitRelatedEnum type){
+    public CommitPO(GitWebHookVO.Commit commit, Integer projectId, CommitRelatedEnum type, Integer relatedId){
         BeanUtils.copyProperties(commit,this);
         this.gitlabUsername = commit.getAuthor().getName();
         this.email = commit.getAuthor().getEmail();
         this.projectId = projectId;
-        relatedType = type;
+        this.relatedType = type;
+        this.relatedId = relatedId;
+
     }
 }

+ 0 - 2
web/src/main/java/cn/seecoder/web/model/vo/project/CommitVO.java

@@ -24,8 +24,6 @@ public class CommitVO {
     private String timestamp;
     @ApiModelProperty("commit 用户的gitlab用户名")
     private String gitlabUsername;
-    @ApiModelProperty("门户id")
-    private String userId;
 
     public CommitVO(CommitPO po) {
         BeanUtils.copyProperties(po,this);

+ 16 - 0
web/src/main/java/cn/seecoder/web/service/impl/project/CommitServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.seecoder.web.service.impl.project;
 
 import cn.seecoder.web.model.enums.CommitRelatedEnum;
+import cn.seecoder.web.model.vo.project.CommitVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import cn.seecoder.web.dao.project.CommitMapper;
@@ -8,6 +9,7 @@ import cn.seecoder.web.model.po.project.CommitPO;
 import cn.seecoder.web.service.project.CommitService;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author PuHong Weng
@@ -39,4 +41,18 @@ public class CommitServiceImpl implements CommitService {
     public boolean isResolved(String id) {
         return 1 == commitMapper.isExist(id);
     }
+
+    @Override
+    public List<CommitVO> getTreeCommit(Integer treeId) {
+        return commitMapper.selectByRelatedIdAndType(treeId,CommitRelatedEnum.TREE_ID).stream()
+                .map(CommitVO::new)
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public List<CommitVO> getBugCommit(Integer bugId) {
+        return commitMapper.selectByRelatedIdAndType(bugId,CommitRelatedEnum.BUG_ID).stream()
+                .map(CommitVO::new)
+                .collect(Collectors.toList());
+    }
 }

+ 5 - 0
web/src/main/java/cn/seecoder/web/service/project/CommitService.java

@@ -2,6 +2,7 @@ package cn.seecoder.web.service.project;
 
 import cn.seecoder.web.model.enums.CommitRelatedEnum;
 import cn.seecoder.web.model.po.project.CommitPO;
+import cn.seecoder.web.model.vo.project.CommitVO;
 
 import java.util.List;
 
@@ -22,4 +23,8 @@ public interface CommitService {
      * @param id commit hash id
      */
     boolean isResolved(String id);
+
+    List<CommitVO> getTreeCommit(Integer treeId);
+
+    List<CommitVO> getBugCommit(Integer bugId);
 }