Browse Source

Merge branch 'feature-V2.0' into 'Test'

Feature v2.0

See merge request crowd-2019/crowd-test-service-backend!149
郭超 5 years ago
parent
commit
cc17961219

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

@@ -22,6 +22,7 @@ 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.stream.Collectors;
@@ -84,7 +85,9 @@ public class CommonRepo {
     public List<Competition> getAllCompetition() {
         return competitionDao.findAll().stream()
                 .map(competitionPO -> Converter.convert(Competition.class, competitionPO))
-                .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted).collect(Collectors.toList());
+                .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted)
+                .sorted(Comparator.comparing(Competition::getStartTime).reversed())
+                .collect(Collectors.toList());
     }
 
     public Page<Competition> findAllCompetition(Pageable pageable, String keyword) {

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/data/dto/UserDataDTO.java

@@ -1,7 +1,7 @@
 package com.mooctest.crowd.site.data.dto;
 
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.site.data.vo.CrowdProjectDataVO;
+import com.mooctest.crowd.site.data.vo.CrowdTaskDataVO;
 import com.mooctest.crowd.site.data.vo.UserVO;
 import lombok.Data;
 
@@ -14,7 +14,7 @@ import java.util.List;
 @Data
 public class UserDataDTO {
     private UserVO userVO;
-    private List<CrowdTestTask> unfinishedTasks;
-    private List<CrowdTestTask> finishedTasks;
+    private List<CrowdTaskDataVO> unfinishedTasks;
+    private List<CrowdTaskDataVO> finishedTasks;
     private List<CrowdProjectDataVO> myProjects;
 }

+ 23 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2020-09-21 10:46
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CrowdTaskDataVO {
+    private String code;
+    private String name;
+
+    public CrowdTaskDataVO(CrowdTestTask crowdTestTask){
+        this.code = crowdTestTask.getCode();
+        this.name = crowdTestTask.getName();
+    }
+}

+ 50 - 41
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -661,15 +661,17 @@ public class WebMediatorImpl implements ViewMediator {
                             }
                             return null;
                         }).collect(Collectors.toList());
-                unfinishedTasks = allTaskOfAgency.stream()
-                        .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
-                        .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
-                        .map(CrowdTaskVO::new).collect(Collectors.toList());
-
-                finishedTasks = allTaskOfAgency.stream()
-                        .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
-                        .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
-                        .map(CrowdTaskVO::new).collect(Collectors.toList());
+                if(allTaskOfAgency != null && allTaskOfAgency.size() > 0){
+                    unfinishedTasks = allTaskOfAgency.stream()
+                            .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+                            .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
+                            .map(CrowdTaskVO::new).collect(Collectors.toList());
+
+                    finishedTasks = allTaskOfAgency.stream()
+                            .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+                            .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
+                            .map(CrowdTaskVO::new).collect(Collectors.toList());
+                }
             }
         }
         myCrowdDTO.setFinishedTasks(finishedTasks);
@@ -693,34 +695,37 @@ public class WebMediatorImpl implements ViewMediator {
         if (!AuthCheckServiceImpl.isAgency(user))
             return userDataDTO;
         List<CrowdTestTask> allTaskOfAgency = null;
-        List<CrowdTestTask> unfinishedTasks = null;
-        List<CrowdTestTask> finishedTasks = null;
+        List<CrowdTaskDataVO> unfinishedTasks = null;
+        List<CrowdTaskDataVO> finishedTasks = null;
+
         if (AuthCheckServiceImpl.isAgency(user)) {
             List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
             if (taskToUserPOS != null && taskToUserPOS.size() > 0) {
-                allTaskOfAgency = taskToUserPOS.stream().sorted(Comparator.comparing(TaskToUserPO::getAcceptTime))
-                        .map(taskToUserPO -> {
-                            CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
-                            if (crowdTestTaskPO != null) {
-                                CrowdTestTask task = new CrowdTestTask();
-                                BeanUtils.copyProperties(crowdTestTaskPO, task);
-
-                                // 测试类型的转换
-                                String typeName = commonRepo.getTypeNameByCode(task.getType());
-                                task.setType(typeName);
-                                CrowdTestTask taskDetail = projectRepo.getTaskDetail(task, user.getId());
-                                return taskDetail;
-                            }
-                            return null;
-                        }).collect(Collectors.toList());
-
-                unfinishedTasks = allTaskOfAgency.stream()
-                        .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
-                        .collect(Collectors.toList());
-
-                finishedTasks = allTaskOfAgency.stream()
-                        .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
-                        .collect(Collectors.toList());
+                allTaskOfAgency = taskToUserPOS.stream().map(taskToUserPO -> {
+                    CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
+                    if (crowdTestTaskPO != null) {
+                        CrowdTestTask task = new CrowdTestTask();
+                        BeanUtils.copyProperties(crowdTestTaskPO, task);
+                        // 判断任务是否截止
+                        if (task.getDeadTime().getTime() <= System.currentTimeMillis() && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED) {
+                            task.setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
+                        }
+                        return task;
+                    }
+                    return null;
+                }).collect(Collectors.toList());
+//                System.out.println("userId: " + userId);
+                if(allTaskOfAgency != null && allTaskOfAgency.size() > 0){
+                    unfinishedTasks = allTaskOfAgency.stream()
+                            .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+                            .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
+                            .map(CrowdTaskDataVO::new).collect(Collectors.toList());
+
+                    finishedTasks = allTaskOfAgency.stream()
+                            .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+                            .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
+                            .map(CrowdTaskDataVO::new).collect(Collectors.toList());
+                }
             }
         }
         userDataDTO.setFinishedTasks(finishedTasks);
@@ -1049,7 +1054,9 @@ public class WebMediatorImpl implements ViewMediator {
             BeanUtils.copyProperties(evaluationAgencyPO, agency);
             return new BaseAuthVO(agency);
         }).collect(Collectors.toList()));
-        authingList.sort(Comparator.comparing(BaseAuthVO::getApplytime).reversed());
+        if(authingList.size() > 0 && authingList != null) {
+            authingList.sort(Comparator.comparing(BaseAuthVO::getApplytime).reversed());
+        }
         return authingList;
     }
 
@@ -1062,18 +1069,20 @@ public class WebMediatorImpl implements ViewMediator {
             return new BaseAuthVO(personalAuthentication);
         }).collect(Collectors.toList()));
 
-        authingList.addAll(enterpriseAuthenticationDao.findByIsAuthenticationIsNot(AuthenticationStatus.isAuthenIng).stream().map(enterpriseAuthenticationPO -> {
-            EnterpriseAuthentication enterpriseAuthentication = new EnterpriseAuthentication();
-            BeanUtils.copyProperties(enterpriseAuthenticationPO, enterpriseAuthentication);
-            return new BaseAuthVO(enterpriseAuthentication);
-        }).collect(Collectors.toList()));
+//        authingList.addAll(enterpriseAuthenticationDao.findByIsAuthenticationIsNot(AuthenticationStatus.isAuthenIng).stream().map(enterpriseAuthenticationPO -> {
+//            EnterpriseAuthentication enterpriseAuthentication = new EnterpriseAuthentication();
+//            BeanUtils.copyProperties(enterpriseAuthenticationPO, enterpriseAuthentication);
+//            return new BaseAuthVO(enterpriseAuthentication);
+//        }).collect(Collectors.toList()));
 
         authingList.addAll(agencyDao.findByIsAuthenticationIsNot(AuthenticationStatus.isAuthenIng).stream().map(evaluationAgencyPO -> {
             EvaluationAgency agency = new EvaluationAgency();
             BeanUtils.copyProperties(evaluationAgencyPO, agency);
             return new BaseAuthVO(agency);
         }).collect(Collectors.toList()));
-        authingList.sort(Comparator.comparing(BaseAuthVO::getApplytime).reversed());
+        if(authingList.size() > 0 && authingList != null){
+            authingList.sort(Comparator.comparing(BaseAuthVO::getApplytime).reversed());
+        }
         return authingList;
 
     }

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

@@ -1,13 +1,18 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
+import com.mooctest.crowd.domain.dao.PersonalAuthenticationDao;
 import com.mooctest.crowd.domain.dao.ResourceTypeDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.HaveNotAgencyAuthException;
 import com.mooctest.crowd.domain.exception.HaveNotPartAuthException;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+import com.mooctest.crowd.domain.model.PersonalAuthenticationPO;
 import com.mooctest.crowd.domain.model.ResourceTypePO;
-import com.mooctest.crowd.domain.repository.*;
+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.constants.CommonConstant;
 import com.mooctest.crowd.site.data.ColumnFilter;
 import com.mooctest.crowd.site.data.dto.*;
@@ -21,6 +26,7 @@ import com.mooctest.crowd.site.service.CommonService;
 import com.mooctest.crowd.site.util.DataUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -33,9 +39,6 @@ import java.util.stream.Collectors;
 @Service
 public class CommonServiceImpl implements CommonService {
     @Autowired
-    private CrowdTestTaskRepo taskRepo;
-
-    @Autowired
     private UserRepo userRepo;
 
     @Autowired
@@ -58,14 +61,11 @@ public class CommonServiceImpl implements CommonService {
     private CommonRepo commonRepo;
 
     @Autowired
-    private ApplicationTypeRepo applicationTypeRepo;
+    private PersonalAuthenticationDao personalAuthDao;
 
     @Autowired
     private WebMediatorImpl webMediator;
 
-//    @Autowired
-//    private CacheUtil cacheUtil;
-
     @Override
     public List<UserVO> getMoreUser(Pageable pageable,String keyword) {
         return  viewMediator.renderMoreUser(pageable,keyword);
@@ -186,12 +186,18 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
+    @Cacheable(value = "platformDataCache")
     public DataDTO getAllData() {
         DataDTO dataDTO = new DataDTO();
         List<CrowdTestProject> allCrowdTestProject = projectRepo.getAllCrowdTestProject();
         dataDTO.setProjectList(allCrowdTestProject);
-        List<UserDataDTO> userDataList = userRepo.getAllUserInfo().stream().map(userPO -> {
-            UserDataDTO personCrowdData = this.getPersonCrowdData(userPO.getId());
+        List<Long> agencyList = agencyRepo.findAll().stream().filter(evaluationAgency -> evaluationAgency.getIsAuthentication() == AuthenticationStatus.isAuthenticated
+                && evaluationAgency.getIsDeleted() == DeletedStatus.isNotDeleted).map(EvaluationAgency::getUserId).collect(Collectors.toList());
+        List<Long> personList = personalAuthDao.findAll().stream().filter(personalPO -> personalPO.getIsAuthentication() == AuthenticationStatus.isAuthenticated
+                && personalPO.getIsDeleted() == DeletedStatus.isNotDeleted).map(PersonalAuthenticationPO::getUserId).collect(Collectors.toList());
+        agencyList.addAll(personList);
+        List<UserDataDTO> userDataList = agencyList.stream().map(userId -> {
+            UserDataDTO personCrowdData = this.getPersonCrowdData(userId);
             return personCrowdData;
         }).collect(Collectors.toList());
         dataDTO.setUserDataList(userDataList);

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -344,6 +344,24 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             reportForProject.setName(project.getName() + "测试报告");
             reportForProject.setType(project.getType());
             reportForProject.setTestObject(project.getName());
+
+            // 更新当前用户的接包数量
+            Optional<UserTaskCountPO> userTaskCountPOOptional = userTaskCountDao.findByUserId(user.getId());
+            if (!userTaskCountPOOptional.isPresent()) {
+                if (user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.EVALUATION_USER.getName()))) {
+                    Long roleType = RoleType.EVALUATION_USER.getId();
+                    UserTaskCount userTaskCount = new UserTaskCount(user.getId(), 1L, roleType);
+                    userTaskCountDao.save(Converter.convert(UserTaskCountPO.class, userTaskCount));
+                } else if (user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))) {
+                    Long roleType = RoleType.AGENCY.getId();
+                    UserTaskCount userTaskCount = new UserTaskCount(user.getId(), 1L, roleType);
+                    userTaskCountDao.save(Converter.convert(UserTaskCountPO.class, userTaskCount));
+                }
+            } else {
+                UserTaskCountPO userTaskCountPO = userTaskCountPOOptional.get();
+                userTaskCountPO.setCount(userTaskCountPO.getCount() + 1);
+                userTaskCountDao.save(userTaskCountPO);
+            }
         });
         return projects;
     }

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

@@ -1,7 +1,7 @@
 spring:
   profiles:
 #    active: dev-pre
-  #    active: online
+#    active: dev-online
      active: dev-localhost
   cache:
     guava:
@@ -58,7 +58,7 @@ oss:
 
 cache:
   expire:
-    duration: 120
+    duration: 86400
 
 agency: 7
 
@@ -144,6 +144,34 @@ user:
 website:
   domain: mooctest.net
 
+
+
+---
+spring:
+  profiles: dev-online
+  datasource:
+    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:
+    host: 59.42.10.53
+    pool: 6379
+    password: '#2019@callforttest@!'
+    jedis:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: -1
+        min-idle: 0
+    database: 6
+user:
+  service:
+    baseUrl: http://59.42.10.53:8081
+
+website:
+  domain: mooctest.net
+
 ---
 spring:
   profiles: pre