Kaynağa Gözat

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

修改第三方众测时不计算区域管理员默认接包人数的+1

See merge request crowd-2019/crowd-test-service-backend!202
郭超 4 yıl önce
ebeveyn
işleme
e5a950b8d4

+ 8 - 3
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -56,7 +56,7 @@ public class CrowdTestTask {
      *
      * @return
      */
-    public void receive(Long userId) {
+    public void receive(Long userId, boolean isRegionalManager) {
         //任务当前状态
         if (this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) {
             if (this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL) {
@@ -89,14 +89,19 @@ public class CrowdTestTask {
                 taskToUser.setAcceptTime(new Timestamp(System.currentTimeMillis()));
                 return taskToUser;
             }).collect(Collectors.toList());
-        } else {
+        }
+        // 广场发布类型
+        else {
             TaskToUser taskToUser = new TaskToUser();
             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(!isRegionalManager){
+            this.setAcceptedCount(this.acceptedCount + 1);
+        }
+
         if (this.getAcceptedCount() == this.getParticipantCount()) {
             this.setFullStatus(CrowdTestTaskAcceptStatus.HAS_FULL);
         } else {

+ 29 - 13
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -132,6 +132,22 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public List<CrowdTaskVO> findMoreHotTasksList(String keyword, int taskCount, String testTypeCode) {
+        List<CrowdTaskVO> crowdTaskVOS = this.getTaskList(keyword, testTypeCode);
+        // 过滤定向任务,并对结果进行排序 接收任务、任务状态、任务创建时间
+        List<CrowdTaskVO> taskVOS;
+        taskVOS = crowdTaskVOS.stream().filter(crowdTaskVO -> crowdTaskVO.getStatus() != CrowdTestTaskStatus.HAS_TIME_OUT)
+                .filter(crowdTaskVO -> !crowdTaskVO.getDistributionType().equals(DistributeType.DIRECT.getId()))
+                .sorted(Comparator.comparing(CrowdTaskVO::getAcceptedCount)
+                        .thenComparing(CrowdTaskVO::getStatus).thenComparing(CrowdTaskVO::getCreateTime).reversed()).collect(Collectors.toList());
+
+        if(taskCount != 0){
+            taskVOS = taskVOS.stream().limit(taskCount).collect(Collectors.toList());
+        }
+        return taskVOS;
+    }
+
+    @NotNull
+    private List<CrowdTaskVO> getTaskList(String keyword, String testTypeCode) {
         // 获取领域、应用、测试类型code 和 name 的map
         Map<String, String> fieldMap = dataCache.getFieldMap();
         Map<String, String> applicationMap = dataCache.getApplicationTypeMap();
@@ -151,8 +167,8 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         });
 
         // 过滤掉已结束、已截止、已删除的任务
-        List<CrowdTaskVO> crowdTaskVOS = taskListInProject.stream().filter(crowdTestTask -> crowdTestTask.getStatus()!=CrowdTestTaskStatus.HAS_FINISHED
-                && crowdTestTask.getStatus()!=CrowdTestTaskStatus.HAS_TIME_OUT && crowdTestTask.getIsDeleted()==DeletedStatus.isNotDeleted).map(task -> {
+        List<CrowdTaskVO> crowdTaskVOS = taskListInProject.stream().filter(crowdTestTask -> crowdTestTask.getStatus()!= CrowdTestTaskStatus.HAS_FINISHED
+                && crowdTestTask.getStatus()!=CrowdTestTaskStatus.HAS_TIME_OUT && crowdTestTask.getIsDeleted()== DeletedStatus.isNotDeleted).map(task -> {
             // 判断任务是否截止
             if (task.getDeadTime().getTime() <= System.currentTimeMillis() && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED) {
                 task.setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
@@ -167,9 +183,14 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         if (!testTypeCode.equals("")){
             crowdTaskVOS = crowdTaskVOS.stream().filter(crowdTaskVO -> crowdTaskVO.getServiceType().equals(testMap.get(testTypeCode))).collect(Collectors.toList());
         }
-        // 过滤定向任务,并对结果进行排序 接收任务、任务状态、任务创建时间
-        List<CrowdTaskVO> taskVOS;
-        taskVOS = crowdTaskVOS.stream().filter(crowdTaskVO -> crowdTaskVO.getStatus() != CrowdTestTaskStatus.HAS_TIME_OUT)
+        return crowdTaskVOS;
+    }
+
+    @Override
+    public List<CrowdTaskVO> findWaitingAcceptByNameLike(int taskCount, String keyword, String testTypeCode) {
+        List<CrowdTaskVO> crowdTaskVOS = this.getTaskList(keyword, testTypeCode);
+        // 过滤定向任务,并对结果进行排序 任务创建时间、接收数量、任务状态
+        List<CrowdTaskVO> taskVOS = crowdTaskVOS.stream().filter(crowdTaskVO -> crowdTaskVO.getStatus() != CrowdTestTaskStatus.HAS_TIME_OUT)
                 .filter(crowdTaskVO -> !crowdTaskVO.getDistributionType().equals(DistributeType.DIRECT.getId()))
                 .sorted(Comparator.comparing(CrowdTaskVO::getCreateTime)
                         .thenComparing(CrowdTaskVO::getAcceptedCount).thenComparing(CrowdTaskVO::getStatus).reversed()).collect(Collectors.toList());
@@ -181,11 +202,6 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     }
 
     @Override
-    public List<CrowdTaskVO> findWaitingAcceptByNameLike(int showTaskCount, String keyword, String testTypeCode) {
-        return this.findMoreHotTasksList(keyword, showTaskCount, testTypeCode);
-    }
-
-    @Override
     public ExamVO getExamInfo(Long examId) {
         CrowdTestTask crowdTestTask = projectRepo.getTaskInfoByExamId(examId);
         ExamVO result = new ExamVO();
@@ -426,14 +442,14 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
             isFirstAcceptPeople = true;
         }
 
-        task.receive(userId);
+        task.receive(userId, false);
         project.setJoinCount(project.getJoinCount() + 1);
 
         // 判断是否为第三方任务,如果是则管理员自身也是一个参与者
         Optional<EndPointPO> endPointPOOptional = endPointDao.findByTaskCode(task.getCode());
         if(endPointPOOptional.isPresent() && isFirstAcceptPeople){
-            task.receive(project.getRegionalManagerId());
-            project.setJoinCount(project.getJoinCount() + 1);
+            task.receive(project.getRegionalManagerId(), true);
+//            project.setJoinCount(project.getJoinCount() + 1);
         }
 
         projectRepo.saveCrowdTestProject(project);