Explorar el Código

feat: buglist service和mapper

缺少分析commit功能,缺少测试
370774330@qq.com hace 5 años
padre
commit
97113d5a7b

+ 1 - 1
web/src/main/java/seecoder/devcloud/web/controller/gitlab/HookController.java

@@ -26,7 +26,7 @@ public class HookController {
      */
     @ApiOperation(value = "push回调接口", httpMethod = "POST")
     @PostMapping("/push")
-    @ApiImplicitParam(value = "gitWebHookVO",dataType = "object", paramType = "body")
+    @ApiImplicitParam(name = "gitWebHookVO",dataType = "object", paramType = "body")
     public void pushHook(@RequestBody GitWebHookVO gitWebHookVO)
     {
         System.out.println(gitWebHookVO);

+ 28 - 0
web/src/main/java/seecoder/devcloud/web/dao/project/BugListMapper.java

@@ -0,0 +1,28 @@
+package seecoder.devcloud.web.dao.project;
+
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.UpdateProvider;
+import seecoder.devcloud.web.dao.provider.GeneralInsertUpdateSqlProvider;
+import seecoder.devcloud.web.model.po.project.BugListPO;
+
+import java.util.List;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Mapper
+public interface BugListMapper {
+
+    @InsertProvider(type = GeneralInsertUpdateSqlProvider.class, method = "insert")
+    int insert(BugListPO bugListPO, String... ignoredCols);
+
+    @UpdateProvider(type= GeneralInsertUpdateSqlProvider.class, method="updateById")
+    int update(BugListPO bugListPO);
+
+    @Select("select * from bug_list where project_id = #{projectId}")
+    List<BugListPO> selectByProjectId(int projectId);
+}

+ 26 - 0
web/src/main/java/seecoder/devcloud/web/model/enums/BugListPriorityEnum.java

@@ -0,0 +1,26 @@
+package seecoder.devcloud.web.model.enums;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+public enum BugListPriorityEnum {
+
+    HIGH("紧急"),
+
+    MIDDLE("一般"),
+
+    LOWEST("宽松");
+
+    private final String value;
+
+    BugListPriorityEnum(String value) {
+
+        this.value = value;
+    }
+    @Override
+    public String toString(){
+        return value;
+    }
+}

+ 19 - 0
web/src/main/java/seecoder/devcloud/web/model/enums/BugListStateEnum.java

@@ -0,0 +1,19 @@
+package seecoder.devcloud.web.model.enums;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+public enum  BugListStateEnum {
+
+    PENDING("等待处理"),
+    PROCESSING("处理中"),
+    FINISHED("已修复");
+
+    private final String value;
+
+    BugListStateEnum(String value){
+        this.value = value;
+    }
+}

+ 47 - 0
web/src/main/java/seecoder/devcloud/web/model/po/project/BugListPO.java

@@ -0,0 +1,47 @@
+package seecoder.devcloud.web.model.po.project;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import seecoder.devcloud.web.model.enums.BugListPriorityEnum;
+import seecoder.devcloud.web.model.enums.BugListStateEnum;
+
+import java.sql.Timestamp;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BugListPO {
+
+    private Integer id;
+
+    private String title;
+
+    private String description;
+
+    /**
+     * 预计需要时间, 单位毫秒
+     */
+    private Long expectedTimeCost;
+
+    private Timestamp startTime;
+
+    private Timestamp endTime;
+
+    private BugListPriorityEnum priority;
+
+    private BugListStateEnum state;
+
+    /**
+     * 关联的项目
+     */
+    private Integer projectId;
+
+}

+ 27 - 0
web/src/main/java/seecoder/devcloud/web/model/vo/project/BriefCommitVO.java

@@ -0,0 +1,27 @@
+package seecoder.devcloud.web.model.vo.project;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Data
+@ApiModel("用于需求树、bug list查看关联commit的信息")
+public class BriefCommitVO {
+
+    @ApiModelProperty("id")
+    private String id;
+    @ApiModelProperty("描述")
+    private String message;
+    @ApiModelProperty("标题")
+    private String title;
+    @ApiModelProperty("commit时间")
+    private String timestamp;
+    @ApiModelProperty("commit作者名称")
+    private String author;
+
+}

+ 35 - 0
web/src/main/java/seecoder/devcloud/web/model/vo/project/BugListCreateVO.java

@@ -0,0 +1,35 @@
+package seecoder.devcloud.web.model.vo.project;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import seecoder.devcloud.web.model.enums.BugListPriorityEnum;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Data
+@ApiModel("创建buglist表单")
+public class BugListCreateVO {
+
+
+
+
+    @ApiModelProperty("标题")
+    private String title;
+
+    @ApiModelProperty("描述")
+    private String description;
+
+    @ApiModelProperty("预计花销时间,单位毫秒")
+    private Long expectedTimeCost;
+
+    @ApiModelProperty("优先级:‘紧急’、‘一般’、‘宽松’。默认一般")
+    private BugListPriorityEnum priority = BugListPriorityEnum.MIDDLE;
+
+    @ApiModelProperty("关联的项目id")
+    private Integer projectId;
+
+}

+ 26 - 0
web/src/main/java/seecoder/devcloud/web/model/vo/project/BugListUpdateBasicVO.java

@@ -0,0 +1,26 @@
+package seecoder.devcloud.web.model.vo.project;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import seecoder.devcloud.web.model.enums.BugListPriorityEnum;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Data
+@ApiModel("更新bug list基本信息表单")
+public class BugListUpdateBasicVO {
+
+
+    @ApiModelProperty("优先级")
+    private BugListPriorityEnum priority;
+    @ApiModelProperty("标题")
+    private String title;
+    @ApiModelProperty("描述")
+    private String description;
+    @ApiModelProperty("预计花销时间,单位毫秒")
+    private Long ExpectedTimeCost;
+}

+ 55 - 0
web/src/main/java/seecoder/devcloud/web/model/vo/project/BugListVO.java

@@ -0,0 +1,55 @@
+package seecoder.devcloud.web.model.vo.project;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import seecoder.devcloud.web.model.enums.BugListPriorityEnum;
+import seecoder.devcloud.web.model.enums.BugListStateEnum;
+import seecoder.devcloud.web.model.po.project.BugListPO;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Data
+@ApiModel("BugList info")
+public class BugListVO {
+
+    @ApiModelProperty("id")
+    private Integer id;
+
+    @ApiModelProperty("标题")
+    private String title;
+
+    @ApiModelProperty("描述")
+    private String description;
+
+    @ApiModelProperty("预计花销时间,单位毫秒")
+    private Long ExpectedTimeCost;
+
+    @ApiModelProperty("创建时间")
+    private Timestamp startTime;
+
+    @ApiModelProperty("修复时间,没修复前返回null")
+    private Timestamp endTime;
+
+    @ApiModelProperty("优先级")
+    private BugListPriorityEnum priority;
+
+    @ApiModelProperty("状态")
+    private BugListStateEnum state = BugListStateEnum.PENDING;
+
+    @ApiModelProperty
+    private List<BriefCommitVO> commits = new ArrayList<>();
+
+
+    public BugListVO(BugListPO bugListPO){
+        BeanUtils.copyProperties(bugListPO,this);
+    }
+}

+ 81 - 0
web/src/main/java/seecoder/devcloud/web/service/impl/project/BugListServiceImpl.java

@@ -0,0 +1,81 @@
+package seecoder.devcloud.web.service.impl.project;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import seecoder.devcloud.web.dao.project.BugListMapper;
+import seecoder.devcloud.web.model.enums.BugListStateEnum;
+import seecoder.devcloud.web.model.po.project.BugListPO;
+import seecoder.devcloud.web.model.vo.project.BugListCreateVO;
+import seecoder.devcloud.web.model.vo.project.BugListUpdateBasicVO;
+import seecoder.devcloud.web.model.vo.project.BugListVO;
+import seecoder.devcloud.web.service.project.BugListService;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/3/21
+ * @description:
+ */
+@Service
+public class BugListServiceImpl implements BugListService {
+
+    private final BugListMapper bugListMapper;
+
+    @Autowired
+    public BugListServiceImpl(BugListMapper bugListMapper) {
+        this.bugListMapper = bugListMapper;
+    }
+
+
+    @Override
+    public void create(BugListCreateVO vo) {
+        BugListPO po = BugListPO.builder()
+                .title(vo.getTitle())
+                .description(vo.getDescription())
+                .expectedTimeCost(vo.getExpectedTimeCost())
+                .state(BugListStateEnum.PENDING)
+                .priority(vo.getPriority())
+                .startTime(null)
+                .endTime(null)
+                .projectId(vo.getProjectId())
+                .build();
+        bugListMapper.insert(po, "startTime");
+    }
+
+    @Override
+    public void finish(Integer id) {
+        BugListPO bugListPO = new BugListPO();
+        bugListPO.setId(id);
+        bugListPO.setState(BugListStateEnum.FINISHED);
+        bugListMapper.update(bugListPO);
+    }
+
+    @Override
+    public List<BugListVO> list(Integer projectId) {
+        List<BugListPO> pos = bugListMapper.selectByProjectId(projectId);
+        List<BugListVO> vos = pos.stream().map(x->new BugListVO(x)).collect(Collectors.toList());
+        //todo 获取commit信息,填入
+        return vos;
+    }
+
+
+    @Override
+    public void updateBasicInfo(BugListUpdateBasicVO vo) {
+        BugListPO po = BugListPO.builder()
+                .priority(vo.getPriority())
+                .title(vo.getTitle())
+                .description(vo.getDescription())
+                .expectedTimeCost(vo.getExpectedTimeCost())
+                .build();
+        bugListMapper.update(po);
+    }
+
+    @Override
+    public void handlerConfig(){
+        //todo 处理commit信息
+    }
+
+
+}

+ 2 - 0
web/src/main/java/seecoder/devcloud/web/service/impl/project/ProjectServiceImpl.java

@@ -63,6 +63,8 @@ public class ProjectServiceImpl implements ProjectService {
             throw new ServiceException("创建项目时发生异常[" + e.getMessage() + "]", e);
         }
         projectMapper.insertProject(projectPO);
+
+
         // TODO:在对应的gitlab仓库中注册WEBHOOK
         //seecoderGitlabApi.addWebHook()
         return new ProjectVO(projectPO);

+ 24 - 1
web/src/main/java/seecoder/devcloud/web/service/project/BugListService.java

@@ -1,9 +1,32 @@
 package seecoder.devcloud.web.service.project;
 
+import seecoder.devcloud.web.model.vo.project.BugListCreateVO;
+import seecoder.devcloud.web.model.vo.project.BugListUpdateBasicVO;
+import seecoder.devcloud.web.model.vo.project.BugListVO;
+
+import java.util.List;
+
 /**
  * @author PuHong Weng
  * @date 2021/3/21
  * @description:
  */
-public class BugListService {
+public interface BugListService {
+
+    void create(BugListCreateVO bugListCreateVO);
+
+    void finish(Integer id);
+
+    List<BugListVO> list(Integer projectId);
+
+    void handlerConfig();
+
+    /**
+     * 更改基本信息,可以更改的信息如下
+     *     private BugListPriorityEnum priority;
+     *     private String title;
+     *     private String description;
+     *     private Long ExpectedTimeCost;
+     */
+    void updateBasicInfo(BugListUpdateBasicVO vo);
 }