Browse Source

修改测试类型和应用类型

guo00guo 4 năm trước cách đây
mục cha
commit
6d09aef60e

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PermissionDao.java

@@ -14,5 +14,8 @@ public interface PermissionDao extends CrudRepository<PermissionPO, Long>{
     Optional<PermissionPO> findById(Long id);
 
     @Override
+    Iterable<PermissionPO> findAllById(Iterable<Long> iterable);
+
+    @Override
     <S extends PermissionPO> S save(S s);
 }

+ 11 - 4
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -21,10 +21,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -259,6 +256,11 @@ public class CommonRepo {
         return testTypePO.get().getName();
     }
 
+    public Map<String, String> getTypeCodeNameMap() {
+        return testTypeDao.findAll().stream()
+                .collect(Collectors.toMap(testTypePO -> testTypePO.getCode(), testTypePO -> testTypePO.getName()));
+    }
+
     public String getApplicationNameByCode(String code) {
         Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(code);
         if (!applicationTypePO.isPresent()) {
@@ -267,6 +269,11 @@ public class CommonRepo {
         return applicationTypePO.get().getName();
     }
 
+    public Map<String, String> getApplicationCodeNameMap() {
+        return applicationTypeDao.findAll().stream()
+                .collect(Collectors.toMap(applicationTypePO -> applicationTypePO.getCode(), applicationTypePO -> applicationTypePO.getName()));
+    }
+
     public String getFieldCodeByFieldName(String name) {
         Optional<FieldPO> fieldPO = fieldDao.findByName(name);
         if (!fieldPO.isPresent()) {

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

@@ -3,7 +3,6 @@ package com.mooctest.crowd.domain.repository;
 import com.google.common.collect.Lists;
 import com.mooctest.crowd.domain.dao.*;
 import com.mooctest.crowd.domain.domainobject.*;
-import com.mooctest.crowd.domain.exception.PermissionNotFoundException;
 import com.mooctest.crowd.domain.exception.RoleNotFoundException;
 import com.mooctest.crowd.domain.exception.UserNotExistException;
 import com.mooctest.crowd.domain.model.*;
@@ -345,15 +344,10 @@ public class UserRepo implements IUserRepo {
     private Role getPermissionByRole(Role roleResult) {
         List<Permission> permissionResultList = new ArrayList<>();
         List<RoleToPermissionPO> roleToPermissionPOList = roleToPermissionDao.findAllByRoleId(roleResult.getId());
-        for (RoleToPermissionPO roleToPermissionPO : roleToPermissionPOList) {
-            Long permissionId = roleToPermissionPO.getPermissionId();
-            Optional<PermissionPO> permissionPOOptional = permissionDao.findById(permissionId);
-            if (!permissionPOOptional.isPresent()) {
-                throw new PermissionNotFoundException();
-            } else {
-                PermissionPO permissionPO = permissionPOOptional.get();
-                permissionResultList.add(Converter.convert(Permission.class, permissionPO));
-            }
+        List<Long> permissionIds = roleToPermissionPOList.stream().map(RoleToPermissionPO::getPermissionId).collect(Collectors.toList());
+
+        for (PermissionPO permissionPO : permissionDao.findAllById(permissionIds)) {
+            permissionResultList.add(Converter.convert(Permission.class, permissionPO));
         }
         roleResult.setPermissionList(permissionResultList);
         return roleResult;

+ 30 - 20
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -564,6 +564,11 @@ public class WebMediatorImpl implements ViewMediator {
         MyCrowdDTO myCrowdDTO = new MyCrowdDTO();
         User user = userRepo.getByID(userId);
         //我的众测 - 项目相关信息
+        
+        // 获取应用、测试类型code 和 name 的map
+        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> typeMap = commonRepo.getTypeCodeNameMap();
+
         //获取我创建的项目列表
         List<CrowdProjectVO> myProjects = projectDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
                 .stream().map(crowdTestProjectPO -> {
@@ -574,7 +579,8 @@ public class WebMediatorImpl implements ViewMediator {
                     if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED)
                         projectVO.setNeedHandle(true);
                     // 应用类型值的转换
-                    projectVO = changeApplicationType(projectVO);
+                    projectVO = changeApplicationType(projectVO, applicationMap);
+
                     // 判断项目是否截止
                     if (projectVO.getDatetime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED) {
                         project.setStatus(CrowdTestProjectStatus.HAS_TIME_OUT);
@@ -600,12 +606,14 @@ public class WebMediatorImpl implements ViewMediator {
                 CrowdTestProject project = new CrowdTestProject();
                 BeanUtils.copyProperties(crowdTestProjectPO, project);
                 CrowdProjectVO projectVO = new CrowdProjectVO(project);
-                projectVO = changeApplicationType(projectVO);
-                List<CrowdTestTaskPO> tasksOfProject = taskDao.findByCrowdTestProjectCodeAndIsDeleted(project.getCode(), DeletedStatus.isNotDeleted);
-                if (tasksOfProject != null && tasksOfProject.stream().anyMatch(task -> task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
-//                    log.info("\n\n需要处理!!!\n\n");
-                    projectVO.setNeedHandle(true);
-                }
+                // 应用类型值的转换
+                projectVO = changeApplicationType(projectVO, applicationMap);
+
+//                List<CrowdTestTaskPO> tasksOfProject = taskDao.findByCrowdTestProjectCodeAndIsDeleted(project.getCode(), DeletedStatus.isNotDeleted);
+//                if (tasksOfProject != null && tasksOfProject.stream().anyMatch(task -> task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
+////                    log.info("\n\n需要处理!!!\n\n");
+//                    projectVO.setNeedHandle(true);
+//                }
                 return projectVO;
             }).collect(Collectors.toList()));
             //获取区域管理员可以接收领取的项目列表
@@ -622,7 +630,7 @@ public class WebMediatorImpl implements ViewMediator {
                         CrowdTestProject project = new CrowdTestProject();
                         BeanUtils.copyProperties(crowdTestProjectPO, project);
                         CrowdProjectVO projectVO = new CrowdProjectVO(project);
-                        projectVO = changeApplicationType(projectVO);
+                        projectVO = changeApplicationType(projectVO, applicationMap);
                         return projectVO;
                     }).collect(Collectors.toList()));
             myCrowdDTO.setAcceptableProjectNoticeCount(Long.parseLong("" + acceptableProject.size()));
@@ -651,8 +659,7 @@ public class WebMediatorImpl implements ViewMediator {
                                 CrowdTestTask task = new CrowdTestTask();
                                 BeanUtils.copyProperties(crowdTestTaskPO, task);
                                 // 测试类型的转换
-                                String typeName = commonRepo.getTypeNameByCode(task.getType());
-                                task.setType(typeName);
+                                task.setType(typeMap.get(task.getType()));
                                 // 判断任务是否截止
                                 if (task.getDeadTime().getTime() <= System.currentTimeMillis() && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED) {
                                     task.setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
@@ -733,9 +740,9 @@ public class WebMediatorImpl implements ViewMediator {
         return userDataDTO;
     }
 
-    private CrowdProjectVO changeApplicationType(CrowdProjectVO projectVO) {
+    private CrowdProjectVO changeApplicationType(CrowdProjectVO projectVO, Map<String, String> applicationMap) {
         // 应用类型值的转换
-        String applicationName = commonRepo.getApplicationNameByCode(projectVO.getPlatform());
+        String applicationName = applicationMap.get(projectVO.getPlatform());
         projectVO.setPlatform(applicationName);
         return projectVO;
     }
@@ -743,12 +750,13 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public TaskSquareDTO renderTaskSquare() {
+        Map<String, String> typeMap = commonRepo.getTypeCodeNameMap();
+
         List<CrowdTaskVO> taskVOList = taskDao.findAllByIsDeleted(0).stream().map(crowdTestTaskPO -> {
             CrowdTestTask task = CrowdTestProjectFactory.defaultTask();
             BeanUtils.copyProperties(crowdTestTaskPO, task);
             // 测试类型的转换
-            String typeName = commonRepo.getTypeNameByCode(task.getType());
-            task.setType(typeName);
+            task.setType(typeMap.get(task.getType()));
             return task;
         }).collect(Collectors.toList()).stream().filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RELEASED ||
                 (crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED && crowdTestTask.getFullStatus() == CrowdTestTaskAcceptStatus.NOT_FULL))
@@ -761,6 +769,9 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user) {
+
+        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
+        Map<String, String> typeMap = commonRepo.getTypeCodeNameMap();
         boolean saveFlag = false;
         // 判断项目是否截止
         if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED) {
@@ -784,8 +795,9 @@ public class WebMediatorImpl implements ViewMediator {
                 crowdTaskVO.setInstitution(agencyPO == null ? "该机构已注销" : agencyPO.getEvaluationAgencyName());
             }
             // 测试类型的转换
-            String typeName = commonRepo.getTypeNameByCode(crowdTaskVO.getServiceType());
-            crowdTaskVO.setServiceType(typeName);
+            crowdTaskVO.setServiceType(typeMap.get(crowdTaskVO.getServiceType()));
+//            String typeName = commonRepo.getTypeNameByCode(crowdTaskVO.getServiceType());
+//            crowdTaskVO.setServiceType(typeName);
             taskVOList.add(crowdTaskVO);
         }
 
@@ -806,7 +818,7 @@ public class WebMediatorImpl implements ViewMediator {
                 .stream().filter(task -> task.getStatus() > CrowdTestTaskStatus.HAS_CREATED && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED).count()));
 
         // 应用类型值的转换
-        projectVO = changeApplicationType(projectVO);
+        projectVO = changeApplicationType(projectVO, applicationMap);
 
         // 领域类型值的转换
         Optional<FieldPO> fieldPO = fieldDao.findByCode(projectVO.getField());
@@ -817,9 +829,7 @@ public class WebMediatorImpl implements ViewMediator {
         }
 
         // 测试类型的转换
-        List<String> testStringList = projectVO.getType().stream().map(testType -> {
-            return commonRepo.getTypeNameByCode(testType);
-        }).collect(Collectors.toList());
+        List<String> testStringList = projectVO.getType().stream().map(testType -> typeMap.get(testType)).collect(Collectors.toList());
 
         projectVO.setType(testStringList);
 

+ 1 - 1
site/src/main/resources/application.yml

@@ -96,7 +96,7 @@ website:
 spring:
   profiles: dev-localhost
   datasource:
-    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service-online?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
     username: mooctest
     password: secr3t!
   redis: