Procházet zdrojové kódy

feat: 增加注册用户时的入库

181250114 před 4 roky
rodič
revize
506ef89497

+ 8 - 0
src/main/java/com/seecoder/dataanalysis/analysis/DevcloudDataAnalysisService.java

@@ -3,6 +3,7 @@ package com.seecoder.dataanalysis.analysis;
 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.data.entity.eval.User;
 import com.seecoder.dataanalysis.vo.devcloud.*;
 
 /**
@@ -80,6 +81,13 @@ public interface DevcloudDataAnalysisService {
      */
     Project updateDevInfoType110(ProjectDTO projectDTO);
 
+    /**
+     * op_type=111 在devcloud系统注册用户时,判断用户是否已经在门户其他系统注册过
+     * 如果没有注册过,则将用户的信息存储入库
+     * @param userDTO op_type=111的日志
+     */
+    User updateDevInfoType111(UserDTO userDTO);
+
     /**
      * 根据学生id,分析并返回学生的个人情况
      * @param user_id 学生的用户id

+ 62 - 13
src/main/java/com/seecoder/dataanalysis/analysis/impl/DevcloudDataAnalysisServiceImpl.java

@@ -419,9 +419,41 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
         project.setDescription(projectDTO.getDescription());
 
         projectDao.save(project);
+
+        //添加项目之后,初始化项目的devInfo
+        DevcloudInfo devcloudInfo;
+        Optional<DevcloudInfo> result2 = devcloudInfoDao.findById(projectId);
+        if(!result2.isPresent()){
+            devcloudInfo = new DevcloudInfo(projectId);
+            devcloudInfoDao.save(devcloudInfo);
+        }
+
         return project;
     }
 
+    @Override
+    public User updateDevInfoType111(UserDTO userDTO){
+        Integer userId = userDTO.getUserId();
+        User user;
+
+        Optional<User> result = userDao.findById(userId);
+        if(!result.isPresent()){
+            user = new User();
+        }else {
+            System.out.println("该用户已存在");
+            return userDao.findByUserId(userId);
+        }
+
+        user.setUserId(userId);
+        user.setUsername(userDTO.getUsername());
+        user.setRole(userDTO.getRole());
+        user.setEmail(userDTO.getEmail());
+        user.setPhone(userDTO.getPhone());
+
+        userDao.save(user);
+        return user;
+    }
+
 
     @Override
     public FormatStudent getStudentAnalysis(Integer user_id){
@@ -431,10 +463,10 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
 
         Optional<DevcloudUser> result = devcloudUserDao.findById(user_id);
         if(!result.isPresent()){
-            devcloudUser = devcloudUserDao.findById(user_id).get();
-        }else {
             System.out.println("没有查找到学生id");
             return null;
+        }else {
+            devcloudUser = devcloudUserDao.findById(user_id).get();
         }
 
         //放入展示数据
@@ -559,6 +591,7 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
             users.add(userDao.findByUserId(userId));
         }
         int n = userIds.size();
+//        System.out.println("n: "+n);
 
         formatGroup.setProjects(projects);
         formatGroup.setStudents(users);
@@ -570,17 +603,14 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
 
         Integer commit_times=0,valid_commit_time=0,buglist_commit=0,feature_commit=0;
         //记录小组不同成员的commit贡献
-//        Integer commitTimesA=0,commitTimesB=0,commitTimesC=0,commitTimesD=0;
-        Integer[] commitTimes = new Integer[n];
+        int[] commitTimes = new int[n];
         List<String> commit_msg_overview = new ArrayList<>();
         Integer test_success=0,test_failure=0,test_times=0,test_concurrency_count=0;
         //记录小组不同成员的test贡献
-//        Integer testTimesA=0,testTimesB=0,testTimesC=0,testTimesD=0;
-        Integer[] testTimes = new Integer[n];
+        int[] testTimes = new int[n];
         Integer pipeline_deploy=0,pipeline_pass=0,pipeline_failure=0;
         //记录小组不同成员的deploy贡献
-//        Integer pipeTimesA=0,pipeTimesB=0,pipeTimesC=0,pipeTimesD=0;
-        Integer[] pipeTimes = new Integer[n];
+        int[] pipeTimes = new int[n];
 
         //
         for(int i=0;i<projects.size();i++){
@@ -589,7 +619,8 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
 
             //遍历devInfo中的commit信息
             List<CommitInfo> commitInfos = devcloudInfo.getCommitList();
-            commit_times = commitInfos.size();
+//            System.out.println("commitInfosSize: "+commitInfos.size());
+            commit_times += commitInfos.size();
             for(CommitInfo commitInfo : commitInfos){
                 for(int j=0;j<userIds.size();j++){
                     Integer user_id = userIds.get(j);
@@ -613,7 +644,7 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
             }
             //遍历devInfo中的test信息
             List<TestInfo> testInfos = devcloudInfo.getTestList();
-            test_times = testInfos.size();
+            test_times += testInfos.size();
             for(TestInfo testInfo : testInfos){
                 for(int j=0;j<userIds.size();j++){
                     Integer user_id = userIds.get(j);
@@ -661,7 +692,13 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
             Contribution contribution = new Contribution();
             contribution.setName(users.get(i).getUsername());
             contribution.setTimes(commitTimes[i]);
-            contribution.setProportion(Double.valueOf(df.format(commitTimes[i]/commit_times)));
+            Double value;
+            if(commit_times == 0){
+                value = 0.0;
+            }else {
+                value = (double)commitTimes[i]/(double)commit_times;
+            }
+            contribution.setProportion(Double.valueOf(df.format(value)));
             commitContribution.add(contribution);
         }
         commit.setCommit_contribution(commitContribution);
@@ -675,7 +712,13 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
             Contribution contribution = new Contribution();
             contribution.setName(users.get(i).getUsername());
             contribution.setTimes(testTimes[i]);
-            contribution.setProportion(Double.valueOf(df.format(testTimes[i]/test_times)));
+            Double value;
+            if(test_times == 0){
+                value = 0.0;
+            }else {
+                value = (double)testTimes[i]/(double)test_times;
+            }
+            contribution.setProportion(Double.valueOf(df.format(value)));
             testContribution.add(contribution);
         }
         test.setTest_contribution(testContribution);
@@ -688,7 +731,13 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
             Contribution contribution = new Contribution();
             contribution.setName(users.get(i).getUsername());
             contribution.setTimes(pipeTimes[i]);
-            contribution.setProportion(Double.valueOf(df.format(pipeTimes[i]/pipeline_deploy)));
+            Double value;
+            if(pipeline_deploy == 0){
+                value = 0.0;
+            }else {
+                value = (double)pipeTimes[i]/(double)pipeline_deploy;
+            }
+            contribution.setProportion(Double.valueOf(df.format(value)));
             deployContribution.add(contribution);
         }
         pipeline.setPipeline_contribution(deployContribution);

+ 57 - 0
src/main/java/com/seecoder/dataanalysis/data/entity/devcloud/display/FormatGroup.java

@@ -54,5 +54,62 @@ public class FormatGroup {
         this.students = new ArrayList<>();
     }
 
+    public void display(){
+        System.out.println("group1");
+
+        System.out.println("Projects: ");
+        for(Project project : this.projects){
+            System.out.print("projectId: "+project.getProjectId()+"  ");
+            System.out.println("projectName: "+project.getProjectName()+"  ");
+        }
+
+        System.out.println("Members: ");
+        for(User user : this.students){
+            System.out.print("userId: "+user.getUserId()+"  ");
+            System.out.println("userName: "+user.getUsername()+"  ");
+        }
+
+        System.out.println("Commit: ");
+        System.out.print("commit-times: "+this.commit.getCommit_times()+"  ");
+        System.out.println("valid-commit-times: "+this.commit.getValid_commit_times());
+        System.out.print("buglist-commit: "+this.commit.getBuglist_commit()+"  ");
+        System.out.println("feature-commit: "+this.commit.getFeature_commit());
+        System.out.println("commit-msg-overview");
+        for(String str : this.commit.getCommit_msg_overview()){
+            System.out.println(str);
+        }
+        System.out.println("commit-contribution");
+        for(Contribution contribution : this.commit.getCommit_contribution()){
+            System.out.print("name: "+contribution.getName()+"  ");
+            System.out.print("times: "+contribution.getTimes()+"  ");
+            System.out.println("proportion: "+contribution.getProportion()+"  ");
+        }
+
+        System.out.println("Test: ");
+        System.out.print("test-times: "+this.test.getTest_times()+"  ");
+        System.out.println("test-concurrency-count: "+this.test.getTest_concurrency_count()+"  ");
+        System.out.print("test-concurrency-failure: "+this.test.getTest_concurrency_failure()+"  ");
+        System.out.println("test-concurrency-pass: "+this.test.getTest_concurrency_success()+"  ");
+        System.out.println("test-contribution");
+        for(Contribution contribution : this.test.getTest_contribution()){
+            System.out.print("name: "+contribution.getName()+"  ");
+            System.out.print("times: "+contribution.getTimes()+"  ");
+            System.out.println("proportion: "+contribution.getProportion()+"  ");
+        }
+
+        System.out.println("Pipeline: ");
+        System.out.println("pipeline-deploy: "+this.pipeline.getPipeline_deploy()+"  ");
+        System.out.print("pipeline-pass: "+this.pipeline.getPipeline_pass()+"  ");
+        System.out.println("pipeline-failure: "+this.pipeline.getPipline_failure()+"  ");
+        System.out.println("pipeline-contribution");
+        for(Contribution contribution : this.pipeline.getPipeline_contribution()){
+            System.out.print("name: "+contribution.getName()+"  ");
+            System.out.print("times: "+contribution.getTimes()+"  ");
+            System.out.println("proportion: "+contribution.getProportion()+"  ");
+        }
+
+        System.out.println("");
+    }
+
 
 }

+ 35 - 0
src/main/java/com/seecoder/dataanalysis/data/entity/devcloud/display/FormatStudent.java

@@ -57,5 +57,40 @@ public class FormatStudent {
         this.projects = new ArrayList<>();
     }
 
+    public void display(){
+        System.out.println("name: "+this.name);
+        System.out.println("userId: "+this.userId);
+        System.out.println("email: "+this.email);
+
+        System.out.println("Projects: ");
+        for(Project project : this.projects){
+            System.out.print("projectId: "+project.getProjectId()+"  ");
+            System.out.println("projectName: "+project.getProjectName()+"  ");
+        }
+
+        System.out.println("Commit: ");
+        System.out.print("commit-times: "+this.commit.getCommit_times()+"  ");
+        System.out.println("valid-commit-times: "+this.commit.getValid_commit_times());
+        System.out.print("buglist-commit: "+this.commit.getBuglist_commit()+"  ");
+        System.out.println("feature-commit: "+this.commit.getFeature_commit());
+        System.out.println("commit-msg-overview");
+        for(String str : this.commit.getCommit_msg_overview()){
+            System.out.println(str);
+        }
+
+        System.out.println("Test: ");
+        System.out.print("test-times: "+this.test.getTest_times()+"  ");
+        System.out.println("test-concurrency-count: "+this.test.getTest_concurrency_count()+"  ");
+        System.out.print("test-concurrency-failure: "+this.test.getTest_concurrency_failure()+"  ");
+        System.out.println("test-concurrency-pass: "+this.test.getTest_concurrency_success()+"  ");
+
+        System.out.println("Pipeline: ");
+        System.out.println("pipeline-deploy: "+this.pipeline.getPipeline_deploy()+"  ");
+        System.out.print("pipeline-pass: "+this.pipeline.getPipeline_pass()+"  ");
+        System.out.println("pipeline-failure: "+this.pipeline.getPipline_failure()+"  ");
+
+        System.out.println("");
+    }
+
 
 }

+ 1 - 1
src/main/java/com/seecoder/dataanalysis/data/entity/eval/User.java

@@ -32,7 +32,7 @@ public class User {
     private String username;
 
     /**
-     * 邮箱
+     * 用户身份
      */
     @Field("role")
     private UserRole role;

+ 28 - 0
src/main/java/com/seecoder/dataanalysis/vo/devcloud/UserDTO.java

@@ -0,0 +1,28 @@
+package com.seecoder.dataanalysis.vo.devcloud;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.seecoder.dataanalysis.enums.UserRole;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserDTO {
+
+    @JSONField(name = "user_id")
+    private Integer userId;
+
+    @JSONField(name = "username")
+    private String username;
+
+    @JSONField(name = "role")
+    private UserRole role;
+
+    @JSONField(name = "email")
+    private String email;
+
+    @JSONField(name = "phone")
+    private String phone;
+}

+ 68 - 16
src/test/java/com/seecoder/dataanalysis/devcloud/impl/DevcloudDataAnalysisServiceImplTest.java

@@ -2,7 +2,12 @@ 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.dao.eval.UserDao;
 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.data.entity.eval.User;
+import com.seecoder.dataanalysis.enums.UserRole;
 import com.seecoder.dataanalysis.vo.devcloud.*;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,9 +20,10 @@ import java.util.List;
 public class DevcloudDataAnalysisServiceImplTest {
     @Autowired
     private DevcloudDataAnalysisService devcloudDataAnalysisService;
-
     @Autowired
     private DevcloudInfoDao devcloudInfoDao;
+    @Autowired
+    private UserDao userDao;
 
     @Test
     void saveDevInfo(){
@@ -25,6 +31,26 @@ public class DevcloudDataAnalysisServiceImplTest {
         devcloudInfoDao.save(devcloudInfo);
     }
 
+    @Test
+    void addUsers(){
+        User user1 = new User();
+        user1.setUserId(3);
+        user1.setUsername("道士");
+        user1.setRole(UserRole.STUDENT);
+        user1.setEmail("123456789@qq.com");
+        user1.setPhone("18125077095");
+
+        User user2 = new User();
+        user2.setUserId(4);
+        user2.setUsername("我焯");
+        user2.setRole(UserRole.STUDENT);
+        user2.setEmail("987654321@qq.com");
+        user2.setPhone("13058201563");
+
+        userDao.save(user1);
+        userDao.save(user2);
+    }
+
     @Test
     void type100(){
         BugInfoDTO bugInfoDTO = new BugInfoDTO();
@@ -43,12 +69,12 @@ public class DevcloudDataAnalysisServiceImplTest {
     @Test
     void type101(){
         CommitInfoDTO commitInfoDTO = new CommitInfoDTO();
-        commitInfoDTO.setProjectId(22);
+        commitInfoDTO.setProjectId(13);
         commitInfoDTO.setCommitId("aaaa123456");
-        commitInfoDTO.setCommitName("道士");
+        commitInfoDTO.setCommitName("我超");
         commitInfoDTO.setCommitTime("2022-03-19");
         commitInfoDTO.setMessage("feat: 完善购物功能");
-        commitInfoDTO.setUserId(9);
+        commitInfoDTO.setUserId(4);
         commitInfoDTO.setType("bug_list");
 
         devcloudDataAnalysisService.updateDevInfoType101(commitInfoDTO);
@@ -57,9 +83,9 @@ public class DevcloudDataAnalysisServiceImplTest {
     @Test
     void type102(){
         TestInfoDTO testInfoDTO = new TestInfoDTO();
-        testInfoDTO.setProjectId(123);
-        testInfoDTO.setApiTestId(123);
-        testInfoDTO.setUserId(10);
+        testInfoDTO.setProjectId(13);
+        testInfoDTO.setApiTestId(12);
+        testInfoDTO.setUserId(3);
         testInfoDTO.setSuccess(30);
         testInfoDTO.setFailure(0);
 
@@ -69,13 +95,13 @@ public class DevcloudDataAnalysisServiceImplTest {
     @Test
     void type103(){
         PipelineCreationDTO pipelineCreationDTO = new PipelineCreationDTO();
-        pipelineCreationDTO.setPipelineId(1);
+        pipelineCreationDTO.setPipelineId(2);
         pipelineCreationDTO.setProjectId(12);
         pipelineCreationDTO.setProjectName("aaaaa");
 
         PipelineCreationDTO pipelineCreationDTO2 = new PipelineCreationDTO();
-        pipelineCreationDTO2.setPipelineId(1);
-        pipelineCreationDTO2.setProjectId(12);
+        pipelineCreationDTO2.setPipelineId(5);
+        pipelineCreationDTO2.setProjectId(13);
         pipelineCreationDTO2.setProjectName("aaaaabbbb");
 
         devcloudDataAnalysisService.updateDevInfoType103(pipelineCreationDTO);
@@ -96,9 +122,9 @@ public class DevcloudDataAnalysisServiceImplTest {
     void type105(){
         PipelineDeployDTO pipelineDeployDTO = new PipelineDeployDTO();
         pipelineDeployDTO.setProjectId(12);
-        pipelineDeployDTO.setPipelineId(2);
-        pipelineDeployDTO.setRecordId(10);
-        pipelineDeployDTO.setUserId(20);
+        pipelineDeployDTO.setPipelineId(1);
+        pipelineDeployDTO.setRecordId(128);
+        pipelineDeployDTO.setUserId(3);
         pipelineDeployDTO.setResult("部署成功");
         pipelineDeployDTO.setSuccess(true);
         pipelineDeployDTO.setType("部署成功");
@@ -138,14 +164,14 @@ public class DevcloudDataAnalysisServiceImplTest {
     @Test
     void type108(){
         AddProjectDTO addProjectDTO = new AddProjectDTO();
-        addProjectDTO.setProjectId(12);
+        addProjectDTO.setProjectId(13);
         List<Integer> members = new ArrayList<>();
         members.add(1);
         members.add(2);
         addProjectDTO.setUserId(3);
 
         AddProjectDTO addProjectDTO1 = new AddProjectDTO();
-        addProjectDTO1.setProjectId(12);
+        addProjectDTO1.setProjectId(13);
         addProjectDTO1.setUserId(4);
 
         devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO);
@@ -156,7 +182,7 @@ public class DevcloudDataAnalysisServiceImplTest {
     void type109(){
         RelateProjectDTO relateProjectDTO = new RelateProjectDTO();
         relateProjectDTO.setProjectAId(12);
-        relateProjectDTO.setProjectBId(2);
+        relateProjectDTO.setProjectBId(13);
 
         devcloudDataAnalysisService.updateDevInfoType109(relateProjectDTO);
     }
@@ -176,4 +202,30 @@ public class DevcloudDataAnalysisServiceImplTest {
         devcloudDataAnalysisService.updateDevInfoType110(projectDTO1);
         devcloudDataAnalysisService.updateDevInfoType110(projectDTO2);
     }
+
+    @Test
+    void type111(){
+        UserDTO userDTO = new UserDTO();
+        userDTO.setUserId(10);
+        userDTO.setUsername("森明");
+        userDTO.setRole(UserRole.STUDENT);
+        userDTO.setEmail("123456@qq.com");
+        userDTO.setPhone("18786220095");
+
+        devcloudDataAnalysisService.updateDevInfoType111(userDTO);
+    }
+
+    @Test
+    void testStudent(){
+        FormatStudent formatStudent = devcloudDataAnalysisService.getStudentAnalysis(4);
+        FormatStudent formatStudent1 = devcloudDataAnalysisService.getStudentAnalysis(3);
+        formatStudent.display();
+        formatStudent1.display();
+    }
+
+    @Test
+    void testGroup(){
+        FormatGroup formatGroup = devcloudDataAnalysisService.getGroupAnalysis(12);
+        formatGroup.display();
+    }
 }