Explorar o código

feat: 完成Devcloud日志入库部分,并进行相应测试

181250114 %!s(int64=4) %!d(string=hai) anos
pai
achega
aa50645baa

+ 9 - 6
src/main/java/com/seecoder/dataanalysis/analysis/DevcloudDataAnalysisService.java

@@ -1,9 +1,6 @@
 package com.seecoder.dataanalysis.analysis;
 
-import com.seecoder.dataanalysis.data.entity.devcloud.BugInfo;
-import com.seecoder.dataanalysis.data.entity.devcloud.DevcloudInfo;
-import com.seecoder.dataanalysis.data.entity.devcloud.DevcloudProject;
-import com.seecoder.dataanalysis.data.entity.devcloud.TreeNodeInfo;
+import com.seecoder.dataanalysis.data.entity.devcloud.*;
 import com.seecoder.dataanalysis.data.entity.devcloud.display.FormatGroup;
 import com.seecoder.dataanalysis.data.entity.devcloud.display.FormatStudent;
 import com.seecoder.dataanalysis.vo.devcloud.*;
@@ -57,13 +54,13 @@ public interface DevcloudDataAnalysisService {
      * op_type=106 用户插入/更新节点
      * @param treeNodeInfoDTO op_type=106的日志
      */
-    DevcloudInfo updateDevInfoType106(TreeNodeInfoDTO treeNodeInfoDTO);
+//    DevcloudInfo updateDevInfoType106(TreeNodeInfoDTO treeNodeInfoDTO);
 
     /**
      * op_type=107 用户删除节点
      * @param treeNodeDeletionDTO op_type=107的日志
      */
-    DevcloudInfo updateDevInfoType107(TreeNodeDeletionDTO treeNodeDeletionDTO);
+//    DevcloudInfo updateDevInfoType107(TreeNodeDeletionDTO treeNodeDeletionDTO);
 
     /**
      * op_type=108 将成员加入某项目中
@@ -71,6 +68,12 @@ public interface DevcloudDataAnalysisService {
      */
     DevcloudProject updateDevInfoType108(AddProjectDTO addProjectDTO);
 
+    /**
+     * op_type=109 将项目A与项目B关联
+     * @param relateProjectDTO op_type=109的日志
+     */
+    ProjectRelate updateDevInfoType109(RelateProjectDTO relateProjectDTO);
+
     /**
      * 根据学生id,分析并返回学生的个人情况
      * @param user_id 学生的用户id

+ 286 - 14
src/main/java/com/seecoder/dataanalysis/analysis/impl/DevcloudDataAnalysisServiceImpl.java

@@ -5,15 +5,17 @@ import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudInfoDao;
 import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudProjectDao;
 import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudUserDao;
 import com.seecoder.dataanalysis.data.dao.devcloud.ProjectRelateDao;
-import com.seecoder.dataanalysis.data.entity.devcloud.BugInfo;
-import com.seecoder.dataanalysis.data.entity.devcloud.DevcloudInfo;
-import com.seecoder.dataanalysis.data.entity.devcloud.DevcloudProject;
+import com.seecoder.dataanalysis.data.entity.devcloud.*;
 import com.seecoder.dataanalysis.data.entity.devcloud.display.FormatGroup;
 import com.seecoder.dataanalysis.data.entity.devcloud.display.FormatStudent;
 import com.seecoder.dataanalysis.vo.devcloud.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
 /**
  * @author Peng Yiyan
  * @since 2022/03/12
@@ -33,34 +35,304 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
 
     @Override
     public DevcloudInfo updateDevInfoType100(BugInfoDTO bugInfoDTO){
-        return null;
+        Integer projectId = bugInfoDTO.getProjectId();
+        DevcloudInfo devcloudInfo;
+        Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
+        if(!result.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+        }else {
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        }
+        List<BugInfo> bugInfoList = devcloudInfo.getBugList();
+        boolean exist = false;
+        for(int i=0;i<bugInfoList.size();i++){
+            //如果已经存在bug_id,则视为对bugInfo的修改
+//            System.out.println("--------"+bugInfoList.get(i).getBugId());
+            if(bugInfoList.get(i).getBugId().equals(bugInfoDTO.getBugId())){
+                exist = true;
+                bugInfoList.get(i).setBugId(bugInfoDTO.getBugId());
+                bugInfoList.get(i).setUserId(bugInfoDTO.getUserId());
+                bugInfoList.get(i).setPriority(bugInfoDTO.getPriority());
+                bugInfoList.get(i).setTitle(bugInfoDTO.getTitle());
+                bugInfoList.get(i).setDescription(bugInfoDTO.getDescription());
+                bugInfoList.get(i).setTimeToTake(bugInfoDTO.getTimeToTake());
+                bugInfoList.get(i).setBugState(bugInfoDTO.getBugState());
+            }
+        }
+        //如果不存在bug_id,将bugInfo加入List
+        if(!exist){
+            BugInfo bugInfoNew = new BugInfo();
+            bugInfoNew.setBugId(bugInfoDTO.getBugId());
+            bugInfoNew.setUserId(bugInfoDTO.getUserId());
+            bugInfoNew.setPriority(bugInfoDTO.getPriority());
+            bugInfoNew.setTitle(bugInfoDTO.getTitle());
+            bugInfoNew.setDescription(bugInfoDTO.getDescription());
+            bugInfoNew.setTimeToTake(bugInfoDTO.getTimeToTake());
+            bugInfoNew.setBugState(bugInfoDTO.getBugState());
+
+            bugInfoList.add(bugInfoNew);
+        }
+
+        devcloudInfo.setBugList(bugInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
     }
 
     @Override
     public DevcloudInfo updateDevInfoType101(CommitInfoDTO commitInfoDTO){
-        return null;
+        Integer projectId = commitInfoDTO.getProjectId();
+        DevcloudInfo devcloudInfo;
+
+        Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
+        if(!result.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+        }else {
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        }
+
+        List<CommitInfo> commitInfoList = devcloudInfo.getCommitList();
+
+        boolean exist = false;
+        for(int i=0;i<commitInfoList.size();i++){
+            if(commitInfoList.get(i).getCommitId().equals(commitInfoDTO.getCommitId())){
+                exist = true;
+                break;
+            }
+        }
+
+        if(!exist){
+            //新建commit信息
+            CommitInfo commitInfo = new CommitInfo();
+            commitInfo.setCommitId(commitInfoDTO.getCommitId());
+            commitInfo.setUserId(commitInfoDTO.getUserId());
+            commitInfo.setCommitName(commitInfoDTO.getCommitName());
+            commitInfo.setCommitTime(commitInfoDTO.getCommitTime());
+            commitInfo.setMessage(commitInfoDTO.getMessage());
+            commitInfo.setType(commitInfoDTO.getType());
+
+            commitInfoList.add(commitInfo);
+        }else {
+            System.out.println("请勿重复插入");
+        }
+
+        devcloudInfo.setCommitList(commitInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
     }
 
     @Override
-    public DevcloudInfo updateDevInfoType102(TestInfoDTO testInfoDTO){ return null;}
+    public DevcloudInfo updateDevInfoType102(TestInfoDTO testInfoDTO){
+        Integer projectId = testInfoDTO.getProjectId();
+        DevcloudInfo devcloudInfo;
 
-    @Override
-    public DevcloudInfo updateDevInfoType103(PipelineCreationDTO pipelineCreationDTO){ return null;}
+        Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
+        if(!result.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+        }else {
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        }
+
+        List<TestInfo> testInfoList = devcloudInfo.getTestList();
+
+        boolean exist = false;
+        for(int i=0;i<testInfoList.size();i++){
+            if(testInfoList.get(i).getApiTestId().equals(testInfoDTO.getApiTestId())){
+                exist = true;
+                break;
+            }
+        }
+
+        //新建测试信息
+        if(!exist){
+            TestInfo testInfo = new TestInfo();
+            testInfo.setApiTestId(testInfoDTO.getApiTestId());
+            testInfo.setUserId(testInfoDTO.getUserId());
+            testInfo.setSuccess(testInfoDTO.getSuccess());
+            testInfo.setFailure(testInfoDTO.getFailure());
+
+            testInfoList.add(testInfo);
+        }else {
+            System.out.println("请勿重复插入");
+        }
+
+        devcloudInfo.setTestList(testInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
+    }
 
     @Override
-    public DevcloudInfo updateDevInfoType104(PipelineDeletionDTO pipelineDeletionDTO){ return null;}
+    public DevcloudInfo updateDevInfoType103(PipelineCreationDTO pipelineCreationDTO){
+        Integer projectId = pipelineCreationDTO.getProjectId();
+        DevcloudInfo devcloudInfo;
+
+        Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
+        if(!result.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+        }else {
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        }
+
+        List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
+
+        boolean exist = false;
+        for(int i=0;i<pipelineInfoList.size();i++){
+            if(pipelineInfoList.get(i).getPipelineId().equals(pipelineCreationDTO.getPipelineId())){
+                exist = true;
+                break;
+            }
+        }
+
+        //新建流水线信息
+        if(!exist){
+//            System.out.println(pipelineInfoList.size());
+//            System.out.println(pipelineCreationDTO.getPipelineId());
+            PipelineInfo pipelineInfo = new PipelineInfo();
+            pipelineInfo.setPipelineId(pipelineCreationDTO.getPipelineId());
+
+            pipelineInfoList.add(pipelineInfo);
+        }else {
+            System.out.println("请勿重复插入");
+        }
+
+        devcloudInfo.setPipelineList(pipelineInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
+    }
 
     @Override
-    public DevcloudInfo updateDevInfoType105(PipelineDeployDTO pipelineDeployDTO){ return null;}
+    public DevcloudInfo updateDevInfoType104(PipelineDeletionDTO pipelineDeletionDTO){
+        Integer projectId = pipelineDeletionDTO.getProjectId();
+        Integer pipelineId = pipelineDeletionDTO.getPipelineId();
+        DevcloudInfo devcloudInfo;
+
+        Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
+        if(!result.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+        }else {
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        }
+
+        List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
+
+        //找到对应的id,删除
+        for(int i=0;i<pipelineInfoList.size();i++){
+            if(pipelineInfoList.get(i).getPipelineId().equals(pipelineId)){
+//                System.out.println("will remove");
+                pipelineInfoList.remove(i);
+                break;
+            }
+        }
+
+        devcloudInfo.setPipelineList(pipelineInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
+    }
 
     @Override
-    public DevcloudInfo updateDevInfoType106(TreeNodeInfoDTO treeNodeInfoDTO){ return null;}
-    
+    public DevcloudInfo updateDevInfoType105(PipelineDeployDTO pipelineDeployDTO){
+        Integer projectId = pipelineDeployDTO.getProjectId();
+        Integer pipelineId = pipelineDeployDTO.getPipelineId();
+        DevcloudInfo devcloudInfo = devcloudInfoDao.findById(projectId).get();
+        List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
+
+        //找到对应的id,存入部署信息
+        for(int i=0;i<pipelineInfoList.size();i++){
+            if(pipelineInfoList.get(i).getPipelineId().equals(pipelineId)){
+                List<RecordInfo> recordInfoList = pipelineInfoList.get(i).getRecordList();
+                RecordInfo recordInfo = new RecordInfo();
+                recordInfo.setRecordId(pipelineDeployDTO.getRecordId());
+                recordInfo.setUserId(pipelineDeployDTO.getUserId());
+                recordInfo.setResult(pipelineDeployDTO.getResult());
+                recordInfoList.add(recordInfo);
+                break;
+            }
+        }
+
+        devcloudInfo.setPipelineList(pipelineInfoList);
+        devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
+    }
+
+//    @Override
+//    public DevcloudInfo updateDevInfoType106(TreeNodeInfoDTO treeNodeInfoDTO){
+//        return null;
+//    }
+//
+//    @Override
+//    public DevcloudInfo updateDevInfoType107(TreeNodeDeletionDTO treeNodeDeletionDTO){
+//        return null;
+//    }
+
     @Override
-    public DevcloudInfo updateDevInfoType107(TreeNodeDeletionDTO treeNodeDeletionDTO){ return null;}
+    public DevcloudProject updateDevInfoType108(AddProjectDTO addProjectDTO){
+        Integer projectId = addProjectDTO.getProjectId();
+        DevcloudProject devcloudProject;
+
+        Optional<DevcloudProject> result = devcloudProjectDao.findById(projectId);
+
+        if(!result.isPresent()){
+            devcloudProject = new DevcloudProject();
+            devcloudProject.setProjectId(projectId);
+            List<Integer> members = new ArrayList<>();
+            devcloudProject.setUserIds(members);
+            devcloudProjectDao.save(devcloudProject);
+        }else {
+            devcloudProject = devcloudProjectDao.findById(projectId).get();
+        }
+
+        List<Integer> memberIds = devcloudProject.getUserIds();
+        if(!memberIds.contains(addProjectDTO.getUserId())){
+            memberIds.add(addProjectDTO.getUserId());
+        }
+
+        devcloudProject.setUserIds(memberIds);
+        devcloudProjectDao.save(devcloudProject);
+
+        //处理完项目-用户关系,现在处理用户-项目关系
+        Integer userId = addProjectDTO.getUserId();
+        DevcloudUser devcloudUser;
+
+        Optional<DevcloudUser> result1 = devcloudUserDao.findById(userId);
+
+        if(!result1.isPresent()){
+            devcloudUser = new DevcloudUser();
+            devcloudUser.setUserId(userId);
+            List<Integer> projects = new ArrayList<>();
+            devcloudUser.setProjectIds(projects);
+        }else {
+            devcloudUser = devcloudUserDao.findById(userId).get();
+        }
+
+        List<Integer> projectIds = devcloudUser.getProjectIds();
+        if(!projectIds.contains(addProjectDTO.getProjectId())){
+            projectIds.add(addProjectDTO.getProjectId());
+        }
+
+        devcloudUser.setProjectIds(projectIds);
+        devcloudUserDao.save(devcloudUser);
+
+        return devcloudProject;
+    }
 
     @Override
-    public DevcloudProject updateDevInfoType108(AddProjectDTO addProjectDTO){ return null;}
+    public ProjectRelate updateDevInfoType109(RelateProjectDTO relateProjectDTO){
+        Integer projectAId = relateProjectDTO.getProjectAId();
+        ProjectRelate projectRelate;
+
+        Optional<ProjectRelate> result = projectRelateDao.findById(projectAId);
+        if(!result.isPresent()){
+            projectRelate = new ProjectRelate();
+            projectRelate.setProjectId(projectAId);
+            projectRelate.setRelateId(relateProjectDTO.getProjectBId());
+            projectRelateDao.save(projectRelate);
+        }else {
+            projectRelate = projectRelateDao.findById(projectAId).get();
+            projectRelate.setRelateId(relateProjectDTO.getProjectBId());
+            projectRelateDao.save(projectRelate);
+        }
+
+        return projectRelate;
+    }
 
 
     @Override

+ 154 - 0
src/test/java/com/seecoder/dataanalysis/devcloud/impl/DevcloudDataAnalysisServiceImplTest.java

@@ -0,0 +1,154 @@
+package com.seecoder.dataanalysis.devcloud.impl;
+
+import com.seecoder.dataanalysis.analysis.DevcloudDataAnalysisService;
+import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudInfoDao;
+import com.seecoder.dataanalysis.data.entity.devcloud.*;
+import com.seecoder.dataanalysis.vo.devcloud.*;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@SpringBootTest
+public class DevcloudDataAnalysisServiceImplTest {
+    @Autowired
+    private DevcloudDataAnalysisService devcloudDataAnalysisService;
+
+    @Autowired
+    private DevcloudInfoDao devcloudInfoDao;
+
+    @Test
+    void saveDevInfo(){
+        DevcloudInfo devcloudInfo = new DevcloudInfo(12);
+        devcloudInfoDao.save(devcloudInfo);
+    }
+
+    @Test
+    void type100(){
+//        DevcloudInfo devcloudInfo = devcloudInfoDao.findById(1).get();
+//        List<BugInfo> bugInfos = devcloudInfo.getBugList();
+//        System.out.println(bugInfos);
+
+        BugInfo bugInfo = new BugInfo();
+        bugInfo.setBugId(1).setUserId(1).setTitle("aaa").setPriority("high").setDescription("一个bug").setTimeToTake(100).setBugState("未修复");
+
+//        bugInfos.add(bugInfo);
+//        devcloudInfo.setBugList(bugInfos);
+//        devcloudInfoDao.save(devcloudInfo);
+
+        BugInfoDTO bugInfoDTO = new BugInfoDTO();
+        bugInfoDTO.setBugId(2);
+        bugInfoDTO.setProjectId(1);
+        bugInfoDTO.setTitle("是个人");
+        bugInfoDTO.setUserId(1);
+        bugInfoDTO.setPriority("low");
+        bugInfoDTO.setDescription("bbb");
+        bugInfoDTO.setTimeToTake(12000);
+        bugInfoDTO.setBugState("已修复");
+
+        devcloudDataAnalysisService.updateDevInfoType100(bugInfoDTO);
+    }
+
+    @Test
+    void type101(){
+//        DevcloudInfo devcloudInfo = devcloudInfoDao.findById(12).get();
+//        List<CommitInfo> commitInfos = devcloudInfo.getCommitList();
+
+        CommitInfoDTO commitInfoDTO = new CommitInfoDTO();
+        commitInfoDTO.setProjectId(22);
+        commitInfoDTO.setCommitId("aaaa123456");
+        commitInfoDTO.setCommitName("道士");
+        commitInfoDTO.setCommitTime("2022-03-19");
+        commitInfoDTO.setMessage("feat: 完善购物功能");
+        commitInfoDTO.setUserId(9);
+        commitInfoDTO.setType("bug_list");
+
+        devcloudDataAnalysisService.updateDevInfoType101(commitInfoDTO);
+    }
+
+    @Test
+    void type102(){
+//        DevcloudInfo devcloudInfo = devcloudInfoDao.findById(12).get();
+//        List<TestInfo> testInfos = devcloudInfo.getTestList();
+
+        TestInfoDTO testInfoDTO = new TestInfoDTO();
+        testInfoDTO.setProjectId(123);
+        testInfoDTO.setApiTestId(123);
+        testInfoDTO.setUserId(10);
+        testInfoDTO.setSuccess(30);
+        testInfoDTO.setFailure(0);
+
+        devcloudDataAnalysisService.updateDevInfoType102(testInfoDTO);
+    }
+
+    @Test
+    void type103(){
+//        DevcloudInfo devcloudInfo = devcloudInfoDao.findById(12).get();
+//        List<PipelineInfo> pipelineInfos = devcloudInfo.getPipelineList();
+
+        PipelineCreationDTO pipelineCreationDTO = new PipelineCreationDTO();
+        pipelineCreationDTO.setPipelineId(1);
+        pipelineCreationDTO.setProjectId(12);
+        pipelineCreationDTO.setProjectName("aaaaa");
+
+        PipelineCreationDTO pipelineCreationDTO2 = new PipelineCreationDTO();
+        pipelineCreationDTO2.setPipelineId(1);
+        pipelineCreationDTO2.setProjectId(12);
+        pipelineCreationDTO2.setProjectName("aaaaabbbb");
+
+        devcloudDataAnalysisService.updateDevInfoType103(pipelineCreationDTO);
+        devcloudDataAnalysisService.updateDevInfoType103(pipelineCreationDTO2);
+    }
+
+    @Test
+    void type104(){
+        PipelineDeletionDTO pipelineDeletionDTO = new PipelineDeletionDTO();
+        pipelineDeletionDTO.setPipelineId(2);
+        pipelineDeletionDTO.setProjectId(12);
+        pipelineDeletionDTO.setDeleteDeployId(1);
+
+        devcloudDataAnalysisService.updateDevInfoType104(pipelineDeletionDTO);
+    }
+
+    @Test
+    void type105(){
+        PipelineDeployDTO pipelineDeployDTO = new PipelineDeployDTO();
+        pipelineDeployDTO.setProjectId(12);
+        pipelineDeployDTO.setPipelineId(2);
+        pipelineDeployDTO.setRecordId(10);
+        pipelineDeployDTO.setUserId(20);
+        pipelineDeployDTO.setResult("部署成功");
+        pipelineDeployDTO.setSuccess(true);
+        pipelineDeployDTO.setType("部署成功");
+
+        devcloudDataAnalysisService.updateDevInfoType105(pipelineDeployDTO);
+    }
+
+    @Test
+    void type108(){
+        AddProjectDTO addProjectDTO = new AddProjectDTO();
+        addProjectDTO.setProjectId(12);
+        List<Integer> members = new ArrayList<>();
+        members.add(1);
+        members.add(2);
+        addProjectDTO.setUserId(3);
+
+        AddProjectDTO addProjectDTO1 = new AddProjectDTO();
+        addProjectDTO1.setProjectId(12);
+        addProjectDTO1.setUserId(4);
+
+        devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO);
+        devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO1);
+    }
+
+    @Test
+    void type109(){
+        RelateProjectDTO relateProjectDTO = new RelateProjectDTO();
+        relateProjectDTO.setProjectAId(12);
+        relateProjectDTO.setProjectBId(2);
+
+        devcloudDataAnalysisService.updateDevInfoType109(relateProjectDTO);
+    }
+}