Browse Source

项目启动时获取领域、应用、测试类型信息,修改接包流程的接口优化

郭超 4 năm trước cách đây
mục cha
commit
8b7534d19d
22 tập tin đã thay đổi với 344 bổ sung204 xóa
  1. 2 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TaskToUserDao.java
  2. 11 10
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  3. 27 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/JudgeType.java
  4. 112 93
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  5. 2 0
      core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java
  6. 6 10
      core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java
  7. 91 0
      site/src/main/java/com/mooctest/crowd/site/configuration/DataCache.java
  8. 1 0
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java
  9. 5 0
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java
  10. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/TaskDetailsDTO.java
  11. 0 27
      site/src/main/java/com/mooctest/crowd/site/data/enums/BooleanType.java
  12. 4 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java
  13. 28 29
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  14. 2 0
      site/src/main/java/com/mooctest/crowd/site/service/CrowdTaskService.java
  15. 10 6
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  16. 8 4
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  17. 2 3
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java
  18. 19 9
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java
  19. 6 7
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java
  20. 3 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java
  21. 1 1
      site/src/main/java/com/mooctest/crowd/site/util/GenerateFlowCodeUtil.java
  22. 2 3
      site/src/main/resources/application.yml

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TaskToUserDao.java

@@ -21,6 +21,8 @@ public interface TaskToUserDao extends CrudRepository<TaskToUserPO,Long> {
 
     List<TaskToUserPO> findByTaskCode(String taskCode);
 
+    List<TaskToUserPO> findByTaskCodeAndIsAccepted(String taskCode, int isAccepted);
+
     List<TaskToUserPO> findByTaskCodeAndHasReport(String taskCode, int hasReport);
 
     TaskToUserPO save(TaskToUserPO taskToUserPO);

+ 11 - 10
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -58,23 +58,18 @@ public class CrowdTestTask {
     public void receive(Long userId) {
         //任务当前状态
         if (this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) {
-            if (this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL)
+            if (this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL) {
                 throw new CrowdTestTaskException("当前任务满员!:");
-        } else if (this.getStatus() != CrowdTestTaskStatus.HAS_RELEASED && this.getStatus() != CrowdTestTaskStatus.HAS_REJECTED)
+            }
+        } else if (this.getStatus() != CrowdTestTaskStatus.HAS_RELEASED && this.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
             throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:" + this.getStatus());
-        //定向发布类型
-//        if (this.getDistributionType() == 0) {
-//            if (!this.getEvaluationAgencyId().equals(user.getId()))
-//                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
-//        }
-//        this.setEvaluationAgencyId(user.getId());
-
+        }
         // 判断人数是否满员
         if (this.getAcceptedCount() >= this.getParticipantCount()) {
             throw new CrowdTestTaskException("当前任务已经满员!");
         }
-        // 新增接收者信息
 
+        // 新增接收者信息
 //        TaskToUser taskToUser = null;
 //        if(this.getDistributionType().equals(DistributeType.DIRECT.getId())){
 //            // 定向发布类型
@@ -82,7 +77,12 @@ public class CrowdTestTask {
 //        }else if(this.getDistributionType().equals(DistributeType.SQUARE.getId())){
 //            // 广场发布类型
 //        }
+
+        //定向发布类型
         if (this.getDistributionType() == DistributeType.DIRECT.getId()) {
+            if (!this.getEvaluationAgencyId().equals(userId)) {
+                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
+            }
             this.getAcceptedUserList().stream().map(taskToUser -> {
                 taskToUser.setIsAccepted(1);
                 taskToUser.setAcceptTime(new Timestamp(System.currentTimeMillis()));
@@ -93,6 +93,7 @@ public class CrowdTestTask {
             taskToUser.setValue(this.code, userId, this.quotedPrice, 0, this.getDistributionType(), 1, new Timestamp(System.currentTimeMillis()));
             this.getAcceptedUserList().add(taskToUser);
         }
+
         this.setAcceptedUserList(acceptedUserList);
         this.setAcceptedCount(this.acceptedCount + 1);
         if (this.getAcceptedCount() == this.getParticipantCount()) {

+ 27 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/JudgeType.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2021-05-24 10:52
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+public enum JudgeType {
+	YES(1, "yes"),
+	NO(0, "no");
+
+	private int id;
+	private String name;
+
+	public int getId() {
+		return id;
+	}
+
+	public String getName() {
+		return name;
+	}
+}
+

+ 112 - 93
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -46,7 +46,7 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     private TaskToUserDao taskToUserDao;
 
     @Autowired
-    private UserDao userDao;
+    private UserRepo userRepo;
 
     @Autowired
     private ApplicationTypeDao applicationTypeDao;
@@ -136,9 +136,6 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return this.getCrowdTestProject(taskCode, crowdTestProjectDao.findByCodeAndIsDeleted(crowdTestProjectCode, DeletedStatus.isNotDeleted));
     }
 
-
-
-
     @NotNull
     public CrowdTestProject getCrowdTestProject(String taskCode, CrowdTestProjectPO crowdTestProjectPO) {
         if (crowdTestProjectPO == null) {
@@ -173,68 +170,47 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         CrowdTestProjectPO crowdTestProjectPO = Converter.convert(CrowdTestProjectPO.class, crowdTestProject);
         crowdTestProjectDao.save(crowdTestProjectPO);
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
-        if (crowdTestTaskList != null) {
-            for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
-                CrowdTestTaskPO crowdTestTaskPO = Converter.convert(CrowdTestTaskPO.class, crowdTestTask);
-                List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
-                for (TaskToUser taskToUser : acceptedUserList) {
-                    taskToUserDao.save(Converter.convert(TaskToUserPO.class, taskToUser));
-                    // 保存报告信息
-                    List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
-                    for (CrowdTestReport crowdTestReport : crowdTestReportList) {
-                        CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, crowdTestReport);
-                        crowdTestReportDao.save(crowdTestReportPO);
-                    }
-                }
-//                List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByTaskCodeAndHasReport(crowdTestTask.getCode(), 1);
-//                Set<Long> collect = taskToUserPOS.stream().map(TaskToUserPO::getUserId).collect(Collectors.toSet());
-//                crowdTestTaskPO.setParticipantHasReportCount(collect.size());
-                crowdTestTaskDao.save(crowdTestTaskPO);
-
-                // 判断是否存在配置项
-                if(commonRepo.getTestTypeByAppCode(crowdTestTask.getType()).getType() == 1){
-                    // 保存配置项信息
-                    if(crowdTestTask.getEndPoint() != null){
-                        Optional<EndPointPO> endPointPO = endPointDao.findByTaskCode(crowdTestTask.getCode());
-                        EndPoint endPoint = crowdTestTask.getEndPoint();
-                        EndPointPO addEndPointPO = new EndPointPO();
-                        if(endPointPO.isPresent()){
-                            addEndPointPO = Converter.convert(EndPointPO.class, endPoint);
-                            addEndPointPO.setId(endPointPO.get().getId());
-                        }
-                        addEndPointPO.setProjectCode(crowdTestProject.getCode());
-                        addEndPointPO.setTaskCode(crowdTestTask.getCode());
-                        addEndPointPO.setCollaborativeType(endPoint.getCollaborativeType());
-                        if(endPoint.getServerCode() != null && endPoint.getServerCode() != ""){
-                            addEndPointPO.setServerCode(endPoint.getServerCode());
-                        }
-                        if(endPoint.getToken() != null && endPoint.getToken() != ""){
-                            addEndPointPO.setToken(endPoint.getToken());
-                        }
-                        if(endPoint.getUrl() != null && endPoint.getUrl() != ""){
-                            addEndPointPO.setUrl(endPoint.getUrl());
-                        }
-                        if(endPoint.getThreePageUrl() != null && endPoint.getThreePageUrl() != ""){
-                            addEndPointPO.setThreePageUrl(endPoint.getThreePageUrl());
-                        }
-                        if(endPoint.getExamId() != null && endPoint.getExamId() != ""){
-                            addEndPointPO.setExamId(endPoint.getExamId());
-                        }
-                        if(endPoint.getCaseId() != null && endPoint.getCaseId() != ""){
-                            addEndPointPO.setCaseId(endPoint.getCaseId());
-                        }
-                        endPointDao.save(addEndPointPO);
-                    }
-                }else{
-                    Optional<EndPointPO> endPointPO = endPointDao.findByTaskCode(crowdTestTask.getCode());
-                    if(endPointPO.isPresent()){
-                        endPointDao.deleteEndPoint(crowdTestTask.getCode());
-                    }
-                }
-
-            }
-        }
+        Optional.ofNullable(crowdTestTaskList).orElse(new ArrayList<>()).stream().forEach(crowdTestTask -> {
+            List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
+            Optional.ofNullable(acceptedUserList).orElse(new ArrayList<>()).stream().forEach(taskToUser -> {
+                // 保存接包信息
+                taskToUserDao.save(Converter.convert(TaskToUserPO.class, taskToUser));
+                // 保存报告信息
+                List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
+                Optional.ofNullable(crowdTestReportList).orElse(new ArrayList<>()).stream()
+                        .forEach(crowdTestReport -> crowdTestReportDao.save(Converter.convert(CrowdTestReportPO.class, crowdTestReport)));
+            });
+            // 保存任务基本信息
+            crowdTestTaskDao.save(Converter.convert(CrowdTestTaskPO.class, crowdTestTask));
+            // 保存任务配置信息
+            this.saveEndPoint(crowdTestProject, crowdTestTask);
+        });
         // 保存项目报告
+        this.saveProjectReport(crowdTestProject);
+    }
+
+    /**
+     * 保存项目基本信息和任务的信息(基本和配置)
+     * @param crowdTestProject
+     */
+    @Override
+    public void saveCrowdTestProjectAndTaskInfo(CrowdTestProject crowdTestProject) {
+        CrowdTestProjectPO crowdTestProjectPO = Converter.convert(CrowdTestProjectPO.class, crowdTestProject);
+        crowdTestProjectDao.save(crowdTestProjectPO);
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        Optional.ofNullable(crowdTestTaskList).orElse(new ArrayList<>()).stream().forEach(crowdTestTask -> {
+            // 保存任务基本信息
+            crowdTestTaskDao.save(Converter.convert(CrowdTestTaskPO.class, crowdTestTask));
+            // 保存任务配置信息
+            this.saveEndPoint(crowdTestProject, crowdTestTask);
+        });
+    }
+
+    /**
+     * 保存项目报告信息
+     * @param crowdTestProject
+     */
+    private void saveProjectReport(CrowdTestProject crowdTestProject) {
         if (crowdTestProject.getCrowdTestReportForProject() != null) {
             CrowdTestReport reportForProject = crowdTestProject.getCrowdTestReportForProject();
             CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, reportForProject);
@@ -242,6 +218,73 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         }
     }
 
+
+//        if (crowdTestTaskList != null) {
+//            for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+//                CrowdTestTaskPO crowdTestTaskPO = Converter.convert(CrowdTestTaskPO.class, crowdTestTask);
+//                List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
+//                for (TaskToUser taskToUser : acceptedUserList) {
+//                    taskToUserDao.save(Converter.convert(TaskToUserPO.class, taskToUser));
+//                    // 保存报告信息
+//                    List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
+//                    for (CrowdTestReport crowdTestReport : crowdTestReportList) {
+//                        CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, crowdTestReport);
+//                        crowdTestReportDao.save(crowdTestReportPO);
+//                    }
+//                }
+//                crowdTestTaskDao.save(crowdTestTaskPO);
+//                this.saveEndPoint(crowdTestProject, crowdTestTask);
+//            }
+//        }
+
+    /**
+     * 保存任务的相关配置信息
+     * @param crowdTestProject
+     * @param crowdTestTask
+     */
+    private void saveEndPoint(CrowdTestProject crowdTestProject, CrowdTestTask crowdTestTask) {
+        // 判断是否存在配置项
+        if(commonRepo.getTestTypeByAppCode(crowdTestTask.getType()).getType() == JudgeType.YES.getId()){
+            // 保存配置项信息
+            if(crowdTestTask.getEndPoint() != null){
+                Optional<EndPointPO> endPointPO = endPointDao.findByTaskCode(crowdTestTask.getCode());
+                EndPoint endPoint = crowdTestTask.getEndPoint();
+                EndPointPO addEndPointPO = new EndPointPO();
+                if(endPointPO.isPresent()){
+                    addEndPointPO = Converter.convert(EndPointPO.class, endPoint);
+                    addEndPointPO.setId(endPointPO.get().getId());
+                }
+                addEndPointPO.setProjectCode(crowdTestProject.getCode());
+                addEndPointPO.setTaskCode(crowdTestTask.getCode());
+                addEndPointPO.setCollaborativeType(endPoint.getCollaborativeType());
+                if(endPoint.getServerCode() != null && endPoint.getServerCode() != ""){
+                    addEndPointPO.setServerCode(endPoint.getServerCode());
+                }
+                if(endPoint.getToken() != null && endPoint.getToken() != ""){
+                    addEndPointPO.setToken(endPoint.getToken());
+                }
+                if(endPoint.getUrl() != null && endPoint.getUrl() != ""){
+                    addEndPointPO.setUrl(endPoint.getUrl());
+                }
+                if(endPoint.getThreePageUrl() != null && endPoint.getThreePageUrl() != ""){
+                    addEndPointPO.setThreePageUrl(endPoint.getThreePageUrl());
+                }
+                if(endPoint.getExamId() != null && endPoint.getExamId() != ""){
+                    addEndPointPO.setExamId(endPoint.getExamId());
+                }
+                if(endPoint.getCaseId() != null && endPoint.getCaseId() != ""){
+                    addEndPointPO.setCaseId(endPoint.getCaseId());
+                }
+                endPointDao.save(addEndPointPO);
+            }
+        }else{
+            Optional<EndPointPO> endPointPO = endPointDao.findByTaskCode(crowdTestTask.getCode());
+            if(endPointPO.isPresent()){
+                endPointDao.deleteEndPoint(crowdTestTask.getCode());
+            }
+        }
+    }
+
     @Override
     public List<CrowdTestProject> getByProject() {
         List<CrowdTestProject> crowdTestProjectList=new ArrayList<>();
@@ -361,17 +404,14 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 
                 // 检索任务中的所有已接收任务的人员信息
                 List<TaskToUserPO> taskToUserPOList = taskToUserDao.findByTaskCode(crowdTestTaskResult.getCode());
+//                List<TaskToUserPO> taskToUserPOList = taskToUserDao.findByTaskCodeAndIsAccepted(crowdTestTaskResult.getCode(), JudgeType.YES.getId());
                 List<TaskToUser> taskToUserList = taskToUserPOList.stream().map(taskToUserPO -> {
                     TaskToUser taskToUser = Converter.convert(TaskToUser.class, taskToUserPO);
                     // 获取人员详细信息
-                    Optional<UserPO> userPOOptional = userDao.findById(taskToUser.getUserId());
-                    if (userPOOptional.isPresent()) {
-                        taskToUser.setUser(Converter.convert(User.class, userPOOptional.get()));
-                    } else {
-                        throw new HttpBadRequestException("无此人员的信息");
-                    }
+                    taskToUser.setUser(userRepo.getByIDJustInfo(taskToUser.getUserId()));
                     // 获取每个人员的报告信息
-                    List<CrowdTestReport> crowdTestReportListResult = getReportByTaskCodeAndUserId(crowdTestTaskPO.getCode(), taskToUser.getUserId());
+                    // 获取指定的报告信息
+                    List<CrowdTestReport> crowdTestReportListResult = this.getReportByTaskCodeAndUserId(crowdTestTaskPO.getCode(), taskToUser.getUserId());
                     taskToUser.setCrowdTestReportList(crowdTestReportListResult);
                     return taskToUser;
                 }).collect(Collectors.toList());
@@ -400,27 +440,6 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return taskPOS.stream().map(crowdTestTaskPO ->  Converter.convert(CrowdTestTask.class, crowdTestTaskPO)).collect(Collectors.toList());
     }
 
-    public CrowdTestTask getTaskDetail(CrowdTestTask crowdTestTask, Long userId){
-        // 检索任务中的所有已接收任务的人员信息
-        List<TaskToUserPO> taskToUserPOList = taskToUserDao.findByTaskCode(crowdTestTask.getCode()).stream().filter(taskToUserPO -> taskToUserPO.getUserId().equals(userId)).collect(Collectors.toList());
-        List<TaskToUser> taskToUserList = taskToUserPOList.stream().map(taskToUserPO -> {
-            TaskToUser taskToUser = Converter.convert(TaskToUser.class, taskToUserPO);
-            // 获取人员详细信息
-            Optional<UserPO> userPOOptional = userDao.findById(taskToUser.getUserId());
-            if (userPOOptional.isPresent()) {
-                taskToUser.setUser(Converter.convert(User.class, userPOOptional.get()));
-            } else {
-                throw new HttpBadRequestException("无此人员的信息");
-            }
-            // 获取每个人员的报告信息
-            List<CrowdTestReport> crowdTestReportListResult = getReportByTaskCodeAndUserId(crowdTestTask.getCode(), taskToUser.getUserId());
-            taskToUser.setCrowdTestReportList(crowdTestReportListResult);
-            return taskToUser;
-        }).collect(Collectors.toList());
-        crowdTestTask.setAcceptedUserList(taskToUserList);
-        return crowdTestTask;
-    }
-
     /**
      * 通过任务code和人员id获取报告列表
      *

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java

@@ -38,6 +38,8 @@ public interface ICrowdTestProjectRepo {
 
     void saveCrowdTestProject(CrowdTestProject crowdTestProject);
 
+    void saveCrowdTestProjectAndTaskInfo(CrowdTestProject crowdTestProject);
+
     List<CrowdTestProject> getByProject();
 
     EndPoint getEndPoint(String taskCode);

+ 6 - 10
core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java

@@ -90,7 +90,7 @@ public class UserRepo implements IUserRepo {
         if (!userPOOptional.isPresent()) {
             throw new UserNotExistException("用户不存在");
         } else {
-            User user = getUserAndRoleByUserPO(userPOOptional.get());
+            User user = this.getUserInfoAndRoles(userPOOptional.get());
             return user;
         }
     }
@@ -101,7 +101,7 @@ public class UserRepo implements IUserRepo {
 		if (!userPOOptional.isPresent()) {
 			throw new UserNotExistException("用户不存在");
 		} else {
-			User user = getUserInfoAndRolesAndRegionalManger(userPOOptional.get());
+			User user = this.getUserInfoAndRolesAndRegionalManger(userPOOptional.get());
 			return user;
 		}
 	}
@@ -147,18 +147,14 @@ public class UserRepo implements IUserRepo {
 		return userResult;
 	}
 
-    private User getUserAndRoleByUserPO(UserPO userPO) throws RoleNotFoundException {
-        return this.getUserInfoAndRoles(userPO);
-    }
-
     @NotNull
     private User getUserInfoAndRoles(UserPO userPO) {
-        User userResult = Converter.convert(User.class, userPO);
+        User user = Converter.convert(User.class, userPO);
         Map<Long, Role> roleMap = roleDao.findAll().stream().collect(Collectors.toMap(rolePO -> rolePO.getId(), rolePO -> Converter.convert(Role.class, rolePO)));
-        List<UserToRolePO> userToRolePOList = userToRoleDao.findByUserId(userResult.getId());
+        List<UserToRolePO> userToRolePOList = userToRoleDao.findByUserId(user.getId());
         List<Role> roleList = userToRolePOList.stream().map(userToRolePO -> roleMap.get(userToRolePO.getRoleId())).collect(Collectors.toList());
-        userResult.setRoleList(roleList);
-        return userResult;
+	    user.setRoleList(roleList);
+        return user;
     }
 
 	@Override

+ 91 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/DataCache.java

@@ -0,0 +1,91 @@
+package com.mooctest.crowd.site.configuration;
+
+import com.mooctest.crowd.domain.repository.CommonRepo;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author guochao
+ * @date 2021-04-08 20:11
+ */
+@Data
+@Component
+public class DataCache {
+    private Map<String, String> fieldMap;
+    private Map<String, String> applicationTypeMap;
+    private Map<String, String> testTypeMap;
+    private Map<String, List<String>> fieldToAppMap;
+    private Map<String, List<String>> appToTestTypeMap;
+    private Map<String, String> testTypeCodeToNameMap;
+
+    @Autowired
+    private CommonRepo commonRepo;
+    
+    @PostConstruct
+    public void init() {
+        // 系统启动时加载Map,每次运行初始化
+        // 获取领域、应用、测试类型code 和 name 的map
+        Map<String, String> fieldMapTemp = commonRepo.getFieldCodeNameMap();
+        Map<String, String> applicationTypeMapTemp = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> testTypeMapTemp = commonRepo.getTypeCodeNameMap();
+        Map<String, List<String>> fieldToAppMapTemp = new HashMap();
+        Map<String, List<String>> appToTestTypeMapTemp = new HashMap();
+        Map<String, String> testTypeCodeToNameMapTemp = new HashMap();
+
+        // 获取所有领域类型信息
+        if(this.fieldMap != null) {
+            this.fieldMap.clear();
+        }
+        this.fieldMap = fieldMapTemp;
+
+        // 获取所有应用类型信息
+        if(applicationTypeMap != null) {
+            applicationTypeMap.clear();
+        }
+        applicationTypeMap = applicationTypeMapTemp;
+
+        // 获取所有测试类型信息
+        if(testTypeMap != null) {
+            testTypeMap.clear();
+        }
+        testTypeMap = testTypeMapTemp;
+
+//        if(testTypeCodeToNameMap != null) {
+//            testTypeCodeToNameMap.clear();
+//        }
+//        testTypeCodeToNameMap = testTypeCodeToNameMapTemp;
+//
+//        // 获取领域类型和应用类型的对应值
+//        if(fieldToAppMap != null) {
+//            fieldToAppMap.clear();
+//        }
+//        fieldToAppMap = fieldToAppMapTemp;
+//
+//        // 获取应用类型和测试类型的对应值
+//        if(appToTestTypeMap != null) {
+//            appToTestTypeMap.clear();
+//        }
+//        appToTestTypeMap = appToTestTypeMapTemp;
+    }
+
+    @PreDestroy
+    public void destroy() {
+        //系统运行结束
+    }
+
+    /**
+     * 每2小时执行一次缓存  秒 分 时 每月第几天 月 星期 年
+     */
+    @Scheduled(cron = " 0 */2 * * * *")
+    public void testOne() {
+        init();
+    }
+}

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -102,6 +102,7 @@ public class CrowdReportController {
         return reportService.updateProjectReport(projectCode, reportCode, command);
     }
 
+    // 用户session接口
     public long getUserFromSession(HttpSession session) {
         long userId;
         try {

+ 5 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java

@@ -153,6 +153,11 @@ public class CrowdTaskController{
         return new ResponseVO<>(ServerCode.SUCCESS, taskService.getTaskWord(projectCode, taskCode));
     }
 
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/word/{taskDescription}", method = RequestMethod.GET)
+    public ResponseVO<List<JabaResult>> getTaskWord(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, @PathVariable("taskDescription") String taskDescription,HttpSession session){
+        return new ResponseVO<>(ServerCode.SUCCESS, taskService.getTaskWord(projectCode, taskCode, taskDescription));
+    }
+
     /**
      * 任务导出
      * @param projectCode

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/TaskDetailsDTO.java

@@ -5,6 +5,7 @@ import com.mooctest.crowd.site.data.vo.CrowdReportVO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import com.mooctest.crowd.site.data.vo.TaskToUserVO;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.List;
 
@@ -13,6 +14,7 @@ import java.util.List;
  * @Date: 2019.7.15 20:17
  */
 @Data
+@NoArgsConstructor
 public class TaskDetailsDTO {
     private CrowdTaskVO crowdTaskVO;
     private List<TaskToUserVO> acceptedUserList;

+ 0 - 27
site/src/main/java/com/mooctest/crowd/site/data/enums/BooleanType.java

@@ -1,27 +0,0 @@
-package com.mooctest.crowd.site.data.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.NoArgsConstructor;
-
-/**
- * @author: Diors.Po
- * @Email: 171256175@qq.com
- * @date 2019-07-30 00:33
- */
-@AllArgsConstructor
-@NoArgsConstructor
-public enum BooleanType {
-    YES(1, "yes"),
-    NO(0, "no");
-
-    private int id;
-    private String name;
-
-    public int getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-}

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.annotation.JSONField;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTaskAcceptStatus;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
+import com.mooctest.crowd.site.configuration.DataCache;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
@@ -61,6 +63,8 @@ public class CrowdTaskVO implements Serializable{
     private String writeReportUrl;
     private String exportUrl;
     private String acceptedPassword;
+    @Autowired
+    private DataCache dataCache;
 
     public CrowdTaskVO(CrowdTestTask task){
         BeanUtils.copyProperties(task, this);

+ 28 - 29
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -11,6 +11,7 @@ import com.mooctest.crowd.domain.repository.*;
 import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.LoginCommand;
 import com.mooctest.crowd.site.command.RegisterCommand;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.data.ProjectOperationControl;
 import com.mooctest.crowd.site.data.TaskOperationControl;
 import com.mooctest.crowd.site.data.dto.*;
@@ -60,6 +61,9 @@ public class WebMediatorImpl implements ViewMediator {
     private CommonRepo commonRepo;
 
     @Autowired
+    private DataCache dataCache;
+
+    @Autowired
     private ToolRepo toolRepo;
 
     @Autowired
@@ -392,9 +396,9 @@ public class WebMediatorImpl implements ViewMediator {
         //我的众测 - 项目相关信息
         
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         //获取我创建的项目列表
         List<CrowdProjectVO> myProjects = projectDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
@@ -615,13 +619,10 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public CrowdTestTask changeTypeByProjectAndTask(CrowdTestProject project, CrowdTestTask task, Map<String, String> applicationMap
             , Map<String, String> fieldMap, Map<String, String> testMap) {
-        // 获取项目的领域、应用类型赋值给任务
-        task.setFieldType(project.getFieldType());
-        task.setApplicationType(project.getApplicationType());
         // 领域类型值的转换
-        task.setFieldType(fieldMap.get(task.getFieldType()));
+        task.setFieldType(fieldMap.get(project.getFieldType()));
         // 应用类型值的转换
-        task.setApplicationType(applicationMap.get(task.getApplicationType()));
+        task.setApplicationType(applicationMap.get(project.getApplicationType()));
         // 测试类型值的转换
         task.setType(testMap.get(task.getType()));
         return task;
@@ -631,12 +632,10 @@ public class WebMediatorImpl implements ViewMediator {
     public CrowdTaskVO changeTypeByProjectAndTaskVO(CrowdTestProject project, CrowdTaskVO task, Map<String, String> applicationMap
             , Map<String, String> fieldMap, Map<String, String> testMap) {
         // 获取项目的领域、应用类型赋值给任务
-        task.setFieldType(project.getFieldType());
-        task.setApplicationType(project.getApplicationType());
         // 领域类型值的转换
-        task.setFieldType(fieldMap.get(task.getFieldType()));
+        task.setFieldType(fieldMap.get(project.getFieldType()));
         // 应用类型值的转换
-        task.setApplicationType(applicationMap.get(task.getApplicationType()));
+        task.setApplicationType(applicationMap.get(project.getApplicationType()));
         // 测试类型值的转换
         task.setServiceType(testMap.get(task.getServiceType()));
         return task;
@@ -644,7 +643,7 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public TaskSquareDTO renderTaskSquare() {
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         List<CrowdTaskVO> taskVOList = taskDao.findAllByIsDeleted(0).stream().map(crowdTestTaskPO -> {
             CrowdTestTask task = CrowdTestProjectFactory.defaultTask();
@@ -664,9 +663,9 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, Long userId) {
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         User user = userRepo.getInfoAndRolesAndRegionalMangerByID(userId);
         boolean saveFlag = false;
@@ -748,7 +747,7 @@ public class WebMediatorImpl implements ViewMediator {
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();
         log.info("renderTaskReportDetails userID: " + userId);
-        User user = userRepo.getByID(userId);
+        User user = userRepo.getInfoAndRolesByID(userId);
         ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
         if (userId.equals(project.getRegionalManagerId())) {
             // 区域管理员
@@ -797,9 +796,9 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId) {
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
         CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
@@ -900,9 +899,9 @@ public class WebMediatorImpl implements ViewMediator {
         }
 
         taskDetailsDTO.setCrowdTaskVO(taskVO);
-//        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
-//        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
-
+        // 词云图
+//        List<JabaResult> wordCloudList = TFIDFAnalyzer.getInstance().extractTagsList(taskVO.getDescription(), 20);
+//        taskDetailsDTO.setWordCloudList(wordCloudList);
         return taskDetailsDTO;
     }
 
@@ -1010,7 +1009,7 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public List<CrowdTestProjectVO> findByNameLike(String name) {
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
         List<CrowdTestProjectVO> resultList = new ArrayList<>();
         resultList.addAll(projectRepo.findByNameLike("%" + name + "%").stream().map(crowdTestProject -> {
             // 项目测试类型转换
@@ -1028,7 +1027,7 @@ public class WebMediatorImpl implements ViewMediator {
      */
     @Override
     public List<CrowdTaskVO> findTaskByNameLike(String name) {
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
         return taskRepo.findByNameLikeAndIsDeleted("%" + name +"%", DeletedStatus.isNotDeleted).stream().map(crowdTestTask -> {
             //根据code值查询出来该任务的type
             crowdTestTask.setType(testMap.get(crowdTestTask.getType()));
@@ -1039,7 +1038,7 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<CrowdTestProjectVO> AllByPage(){
         List<CrowdTestProjectVO> resultList = new ArrayList<>();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
         resultList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO ->{
             CrowdTestProject crowdTestProject = new CrowdTestProject();
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
@@ -1095,7 +1094,7 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<CrowdTaskVO> findIndexTaskLimitCount(int indexCount, String testTypeCode){
         List<CrowdTaskVO> resultList = new ArrayList<>();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         resultList.addAll(taskDao.findIndexTaskLimitCount(indexCount).stream().filter(crowdTestTaskPO -> crowdTestTaskPO.getDeadTime().getTime() > System.currentTimeMillis()).map(crowdTestTaskPO -> {
             CrowdTestTask crowdTestTask = new CrowdTestTask();
@@ -1108,7 +1107,7 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public List<CrowdTaskVO> crowdTaskVOSByTestTypeCode(String testTypeCode) {
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
         return taskDao.findByType(testTypeCode).stream().map(crowdTestTaskPO -> {
             CrowdTestTask crowdTestTask = new CrowdTestTask();
             BeanUtils.copyProperties(crowdTestTaskPO, crowdTestTask);
@@ -1120,7 +1119,7 @@ public class WebMediatorImpl implements ViewMediator {
     // ???
     @Override
     public List<CrowdTaskVO> crowdTaskVosWaitingAccept() {
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
         List<CrowdTaskVO> taskVOList = taskDao.findCanAcceptTask().stream().filter(crowdTestTaskPO -> crowdTestTaskPO.getDeadTime().getTime() > System.currentTimeMillis()).map(crowdTestTaskPO -> {
             //根据code值查询出来该任务的type
             CrowdTestTask crowdTestTask = new CrowdTestTask();

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/service/CrowdTaskService.java

@@ -53,6 +53,8 @@ public interface CrowdTaskService {
 
     List<JabaResult> getTaskWord(String projectCode, String taskCode);
 
+    List<JabaResult> getTaskWord(String projectCode, String taskCode, String taskDescription);
+
     String exportTask(String projectCode, String taskCode, Long userId);
 
     ProjectDetailsDTO importTask(MultipartFile file, Long userId, int uploadType);

+ 10 - 6
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -13,6 +13,7 @@ import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.constants.CommonConstant;
 import com.mooctest.crowd.site.data.ColumnFilter;
 import com.mooctest.crowd.site.data.dto.*;
@@ -67,13 +68,16 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private WebMediatorImpl webMediator;
 
+    @Autowired
+    private DataCache dataCache;
+
     @Value("${feature.task.import}")
     private String featureTaskImport;
 
     @Value("${feature.task.recommend}")
     private String featureTaskRecommend;
 
-    @Value("${feature.task.acceptedpwd}")
+    @Value("${feature.task.acceptedPWD}")
     private Boolean featureTaskAcceptedPWD;
 
     @Override
@@ -158,7 +162,7 @@ public class CommonServiceImpl implements CommonService {
     @Override
     public List<CrowdProjectVO> getProjectList(Pageable pageable, String code,String keyword) {
 
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
         List<CrowdProjectVO> crowdProjectVOS = commonRepo.getProjectList(pageable, code, keyword).stream().map(project -> {
             // 判断项目是否截止
             if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED) {
@@ -241,9 +245,9 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     public List<HashMap<String, Long>> getStatisticsCount() {
-        Map<String, String> applicationsMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> typeMap = commonRepo.getTypeCodeNameMap();
-        Map<String, String> fieldsMap = commonRepo.getFieldCodeNameMap();
+        Map<String, String> applicationsMap = dataCache.getApplicationTypeMap();
+        Map<String, String> typeMap = dataCache.getTestTypeMap();
+        Map<String, String> fieldsMap = dataCache.getFieldMap();
 
         List<HashMap<String, Long>> statisticsList = new ArrayList<>();
         HashMap<String, Long> fieldMap = new HashMap<>();
@@ -332,7 +336,7 @@ public class CommonServiceImpl implements CommonService {
         Map<String, String> configurationMap = commonRepo.getConfigurationListMap();
         configurationMap.put("feature_task_import", "{\"feature_task_import\":" + featureTaskImport + "}");
         configurationMap.put("feature_task_recommend", "{\"feature_task_recommend\":" + featureTaskRecommend + "}");
-        configurationMap.put("feature_task_acceptedpwd", "{\"feature_task_acceptedpwd\":" + featureTaskAcceptedPWD + "}");
+        configurationMap.put("feature_task_acceptedPWD", "{\"feature_task_acceptedPWD\":" + featureTaskAcceptedPWD + "}");
         return new ConfigurationVO(configurationMap);
     }
 

+ 8 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -18,6 +18,7 @@ import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.data.ColumnFilter;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
@@ -72,6 +73,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     private UserRepo userRepo;
 
     @Autowired
+    private DataCache dataCache;
+
+    @Autowired
     private OperationMediator operationMediator;
 
     @Autowired
@@ -96,7 +100,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
      */
     @Override
     public List<CrowdTestProjectVO> findIndexProjectLimitCount(int indexCount) {
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
         List<CrowdTestProjectVO> resultList = new ArrayList<>();
         resultList.addAll(projectRepo.findSquareIndexProject(indexCount).stream().map(crowdTestProject -> {
             // 项目测试类型转换
@@ -125,9 +129,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         }
         String keyword = searchConditionVO.getKeyword();
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         // 过滤定向项目
         List<CrowdProjectVO> crowdProjectVOS = projectRepo.findAllHotProject().stream()

+ 2 - 3
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -8,7 +8,6 @@ import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
-import com.mooctest.crowd.site.data.enums.BooleanType;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdReportService;
 import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
@@ -73,11 +72,11 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         TaskToUser taskToUser = userOptional.get();
         List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
         crowdTestReportList.add(report);
-        taskToUser.setHasReport(BooleanType.YES.getId());
+        taskToUser.setHasReport(JudgeType.YES.getId());
 //        taskToUser.setIsCommitted(BooleanType.YES.getId());
         taskToUser.setCommitReportTime(new Timestamp(System.currentTimeMillis()));
         projectRepo.saveCrowdTestProject(project);
-        return getTaskReport(projectCode, taskCode, reportCode, userId);
+        return this.getTaskReport(projectCode, taskCode, reportCode, userId);
     }
 
     @Override

+ 19 - 9
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -9,11 +9,11 @@ import com.mooctest.crowd.domain.exception.*;
 import com.mooctest.crowd.domain.model.ApplicationTypePO;
 import com.mooctest.crowd.domain.model.EndPointPO;
 import com.mooctest.crowd.domain.model.FieldPO;
-import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestTaskRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.constants.UploadType;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
@@ -86,14 +86,14 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     private ViewMediator viewMediator;
 
     @Autowired
-    private CommonRepo commonRepo;
-
-    @Autowired
     private UploadService uploadService;
 
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private DataCache dataCache;
+
     @Value("${file.save.path}")
     private String fileSaveRootPath;
 
@@ -126,9 +126,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Override
     public List<CrowdTaskVO> findMoreHotTasksList(String keyword, int taskCount, String testTypeCode) {
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         // 热门任务指的是未被接收/进行中的项目
         List<CrowdTestProject> allHotProject = projectRepo.findAllHotProject();
@@ -246,7 +246,12 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         task.setEndPoint(endPoint);
         project.addTask(task);
         projectRepo.saveCrowdTestProject(project);
-        return getTaskDetails(projectCode, taskCode, userId);
+        TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
+        CrowdTaskVO crowdTaskVO = new CrowdTaskVO();
+        crowdTaskVO.setId(taskCode);
+        taskDetailsDTO.setCrowdTaskVO(crowdTaskVO);
+        return taskDetailsDTO;
+//        return getTaskDetails(projectCode, taskCode, userId);
     }
 
     private String createTaskToCrowdService(String name, String desc, int collaborativeType, String threePageUrl) {
@@ -346,7 +351,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public TaskDetailsDTO acceptTask(String projectCode, String taskCode, Long userId) {
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
         // 项目发起者
         if (project.getUserId().equals(userId)) {
             throw new BaseException("您是项目发起者,不可接收自己项目下的测试任务!");
@@ -426,6 +431,11 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     }
 
     @Override
+    public List<JabaResult> getTaskWord(String projectCode, String taskCode, String taskDescription) {
+        return TFIDFAnalyzer.getInstance().extractTagsList(taskDescription, 20);
+    }
+
+    @Override
     public String exportTask(String projectCode, String taskCode, Long userId) {
         // 获取项目和任务的详细信息,特定任务的信息
         ProjectDetailsDTO projectDetailsDTO = viewMediator.renderProjectDetails(projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode), userId);

+ 6 - 7
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java

@@ -1,7 +1,7 @@
 package com.mooctest.crowd.site.service.impl;
 
-import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.constants.CommonConstant;
 import com.mooctest.crowd.site.data.ColumnFilter;
 import com.mooctest.crowd.site.data.enums.ColumnFilterType;
@@ -42,10 +42,9 @@ public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
     @Autowired
     private CrowdTestProjectRepo projectRepo;
     @Autowired
-    private CommonRepo commonRepo;
-    @Autowired
     private ViewMediator viewMediator;
-
+    @Autowired
+    private DataCache dataCache;
 
     /**
      * 任务和项目的模糊查询
@@ -57,9 +56,9 @@ public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
         Pageable pageable = this.getPageable(searchConditionVO);
         String keyword = searchConditionVO.getKeyword();
         // 获取领域、应用、测试类型code 和 name 的map
-        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> fieldMap = dataCache.getFieldMap();
+        Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
+        Map<String, String> testMap = dataCache.getTestTypeMap();
 
         if (searchConditionVO.getColumnFilters().get(0).getType().equals("project")) {
             List<CrowdTestProjectVO> projectVOS = projectRepo.findWaitingAcceptByNameLike("%"+keyword+"%").stream().map(crowdTestProject -> {

+ 3 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.domainobject.EndPoint;
 import com.mooctest.crowd.domain.repository.*;
+import com.mooctest.crowd.site.configuration.DataCache;
 import com.mooctest.crowd.site.data.dto.TechnicalArticlesDTO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import com.mooctest.crowd.site.data.vo.PublicationsVO;
@@ -39,12 +40,12 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
     private ToolRepo toolRepo;
 
     @Autowired
-    private CommonRepo commonRepo;
+    private DataCache dataCache;
 
     @Override
     public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition) {
         TechnicalArticlesDTO  technicalArticlesDTO= new  TechnicalArticlesDTO();
-        Map<String, String> typeMap = commonRepo.getTypeCodeNameMap();
+        Map<String, String> typeMap = dataCache.getTestTypeMap();
         for(String key:extraCondition.keySet()) {
             String value = extraCondition.get(key);
             if(value.equals("0")){

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/util/GenerateFlowCodeUtil.java

@@ -33,7 +33,7 @@ public class GenerateFlowCodeUtil {
         }
         Date date = new Date();
         DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHH");
-        String code  = prefix + "-" + dateFormat.format(date)+getSequence(codeNum, 3);
+        String code  = prefix + "-" + dateFormat.format(date) + getSequence(codeNum, 3);
         return code;
     }
 

+ 2 - 3
site/src/main/resources/application.yml

@@ -95,7 +95,7 @@ feature:
   task:
     import: true  #任务导入
     recommend: false #任务推荐
-    acceptedpwd: false #使用密码接收任务
+    acceptedPWD: false #使用密码接收任务
 
 baseUrl:
   service:
@@ -169,13 +169,12 @@ user:
 #  save:
 #    path: /var/www/
 feature:
-  private: true
   client:
     oss: true
   task:
     import: true  #任务导入
     recommend: false #任务推荐
-    acceptedpwd: true #使用密码接收任务
+    acceptedPWD: true #使用密码接收任务
 
 file:
   save: