瀏覽代碼

修改众测任务时调用众测接口

郭超 4 年之前
父節點
當前提交
6c48a8997e

+ 10 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/EndPointVO.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.data.vo;
 
 import com.mooctest.crowd.domain.domainobject.EndPoint;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
 /**
@@ -11,6 +13,8 @@ import org.springframework.beans.BeanUtils;
  * @create: 2020-07-28 17:23
  **/
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class EndPointVO {
     private String serverCode;
     private String token;
@@ -22,4 +26,10 @@ public class EndPointVO {
     public EndPointVO(EndPoint endPoint){
         BeanUtils.copyProperties(endPoint, this);
     }
+
+    public EndPointVO(int collaborativeType, String threePageUrl) {
+        this.collaborativeType = collaborativeType;
+        this.threePageUrl = threePageUrl;
+
+    }
 }

+ 4 - 2
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -886,12 +886,14 @@ public class WebMediatorImpl implements ViewMediator {
                             }
                             return taskToUserVO;
                         }).collect(Collectors.toList());
+
+                // 测评机构的endPoint
+                taskVO.setEndPointVO(new EndPointVO(endPoint.getCollaborativeType(), endPoint.getThreePageUrl()));
             }
             taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
 
-            // 判断是否具有配置项,提供跳转url
+            // 判断是否具有配置项
             if(endPoint != null){
-                // 获取测试类型对应的跳转url
                 taskVO.setWriteReportUrl(endPoint.getUrl());
             }
         }

+ 20 - 8
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -170,8 +170,8 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         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());
+                .sorted(Comparator.comparing(CrowdTaskVO::getCreateTime)
+                        .thenComparing(CrowdTaskVO::getAcceptedCount).thenComparing(CrowdTaskVO::getStatus).reversed()).collect(Collectors.toList());
 
         if(taskCount != 0){
             taskVOS = taskVOS.stream().limit(taskCount).collect(Collectors.toList());
@@ -245,6 +245,14 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
         // 配置endpoint
         EndPoint endPoint = task.getEndPoint();
+        this.createTaskToCrowdService(command, userId, task, endPoint);
+        task.setEndPoint(endPoint);
+        project.addTask(task);
+        projectRepo.saveCrowdTestProject(project);
+        return getTaskDetails(projectCode, taskCode, userId);
+    }
+
+    private void createTaskToCrowdService(CrowdTestTaskCommand command, Long userId, CrowdTestTask task, EndPoint endPoint) {
         // 众测服务同步新建任务
         if(command.getEndPoint().getThreePageUrl() != null && !command.getEndPoint().getThreePageUrl().equals("")){
             String endPointData = this.createTaskToCrowdService(command.getName(), command.getDesc(), command.getEndPoint().getCollaborativeType(), command.getEndPoint().getThreePageUrl());
@@ -259,10 +267,6 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
             String reportUrl = this.getForEntityReportUrl(userId, task, endPoint);
             endPoint.setUrl(reportUrl);
         }
-        task.setEndPoint(endPoint);
-        project.addTask(task);
-        projectRepo.saveCrowdTestProject(project);
-        return getTaskDetails(projectCode, taskCode, userId);
     }
 
     @Override
@@ -287,7 +291,8 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         // 判断endpoint是否有修改
         EndPoint endPoint = task.getEndPoint();
         EndPoint commandEndPoint = command.getEndPoint();
-        if(endPoint != null){
+        if(endPoint != null && commandEndPoint != null){
+            // 修改前后都是 众测测试类型任务
             if(!task.getName().equals(command.getName()) || endPoint.getCollaborativeType() != commandEndPoint.getCollaborativeType()
                     || !endPoint.getThreePageUrl().equals(commandEndPoint.getThreePageUrl())){
                 // 更新不一样的值
@@ -307,9 +312,16 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
                 String reportUrl = this.getForEntityReportUrl(userId, task, endPoint);
                 endPoint.setUrl(reportUrl);
             }
+            updateTask.setEndPoint(endPoint);
+        }else if(endPoint == null && commandEndPoint != null){
+            // 修改前是基本测试类型,修改成众测测试类型,需要调用众测新建测试任务
+            this.createTaskToCrowdService(command, userId, updateTask, commandEndPoint);
+            updateTask.setEndPoint(commandEndPoint);
         }
-        updateTask.setEndPoint(endPoint);
+
         project.removeTask(task);
+        // 判断是否存在endPoint,
+
         project.getCrowdTestTaskList().add(updateTask);
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);