Prechádzať zdrojové kódy

添加获取填写报告url接口

郭超 4 rokov pred
rodič
commit
db3a34afa0

+ 6 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -198,6 +198,12 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
                         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{

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

@@ -60,6 +60,12 @@ public class CrowdTaskController{
         return taskService.createTask(projectCode, command, Long.parseLong((String) session.getAttribute("userId")));
     }
 
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/writerReportUrl", method = RequestMethod.GET)
+    public ResponseVO<String> getWriterReportUrl(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode,  HttpSession session){
+        Long userId = Long.parseLong((String)session.getAttribute("userId"));
+        return new ResponseVO<>(ServerCode.SUCCESS, taskService.getWriteReportUrl(projectCode, taskCode, userId));
+    }
+
     @RequestMapping(value = "/task/{taskCode}", method = RequestMethod.DELETE)
     public boolean deleteTask(@PathVariable("taskCode")String taskCode){
         return true;

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

@@ -33,6 +33,8 @@ public interface CrowdTaskService {
 
     TaskDetailsDTO createTask(String projectCode, CrowdTestTaskCommand command, Long userId);
 
+    String getWriteReportUrl(String projectCode, String taskCode, Long userId);
+
     TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand command, Long userId);
 
     TaskSquareDTO getAllTasks();

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

@@ -91,6 +91,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Autowired
     private UploadService uploadService;
 
+    @Autowired
+    private RestTemplate restTemplate;
+
     @Value("${file.save.path}")
     private String fileSaveRootPath;
 
@@ -109,6 +112,12 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Value("${baseUrl.service.review}")
     private String reviewServiceBaseUrl;
 
+    @Value("${baseUrl.service.crowd}")
+    private String crowdServiceBaseUrl;
+
+    @Value("${baseUrl.service.crowdIndex}")
+    private String crowdServiceIndexBaseUrl;
+
     @Override
     public List<CrowdTaskVO> findMoreHotTasks() {
         return viewMediator.findMoreHotTasks();
@@ -229,6 +238,8 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
             endPoint.setServerCode(dataMap.get("encodedUrl").toString());
             endPoint.setUrl(dataMap.get("writeReportUrl").toString());
             endPoint.setToken(dataMap.get("taskDaPanUrl").toString());
+            endPoint.setExamId(dataMap.get("taskId").toString());
+            endPoint.setCaseId(dataMap.get("caseId").toString());
         }
         task.setEndPoint(endPoint);
         project.addTask(task);
@@ -261,28 +272,61 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         return "";
     }
 
-
     @Override
-    public TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand command, Long userId) {
+    public String getWriteReportUrl(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestTask task = getTaskByProjectAndTaskCode(project, taskCode);
+        EndPoint endPoint = task.getEndPoint();
+
+        String url = crowdServiceBaseUrl  + "/Bug/api/analyze/detailToToken?examId=" + endPoint.getExamId() + "&caseId=" + endPoint.getCaseId() +
+                "&userId=" + String.valueOf(userId) + "&beginTime=" + String.valueOf(task.getCreateTime().getTime()) + "&endTime=" + String.valueOf(task.getDeadTime().getTime());
+
+        log.info("调用众测服务接口,Get请求:" + url);
+        ResponseEntity<Map> responseEntity = restTemplate.getForEntity(url, Map.class);
+
+        if (responseEntity.getStatusCode().equals(HttpStatus.OK)){
+            Map resultMap = responseEntity.getBody();
+            if(resultMap.get("result").equals("success")){
+                String token = resultMap.get("token").toString();
+                String writeReportUrl = crowdServiceIndexBaseUrl + token;
+                log.info("调用众测服务接口成功,报告填写url为:" + url);
+                return writeReportUrl;
+            }else if (resultMap.get("result").equals("fail")){
+                log.info("调用众测服务接口成功,但是接口返回fail");
+                return "";
+            }
+        }
+        log.info("调用众测服务接口失败");
+        throw new BaseException("调用众测服务接口失败");
+    }
+
+    public CrowdTestTask getTaskByProjectAndTaskCode(CrowdTestProject project, String taskCode) {
         Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
-        if (!task.isPresent())
+        if (!task.isPresent()) {
             throw new CrowdTestTaskNotExistException();
-        if (task.get().getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+        }
+        return task.get();
+    }
+
+    @Override
+    public TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand command, Long userId) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestTask crowdTestTask = getTaskByProjectAndTaskCode(project, taskCode);
+        if (crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
             throw new BaseException("禁止修改已结束的任务!");
 //        command.setType(commonRepo.getTypeCodeByName(command.getType()));
         CrowdTestTask updateTask = command.toCrowdTask(projectCode);
         // 定向任务被拒绝,更新时需要删除任务中的taskToUser  acceptedUserList
-        if (task.get().getDistributionType().equals(DistributeType.DIRECT.getId())) {
-            crowdTestTaskRepo.deleteTaskToUser(task.get().getAcceptedUserList().get(0));
+        if (crowdTestTask.getDistributionType().equals(DistributeType.DIRECT.getId())) {
+            crowdTestTaskRepo.deleteTaskToUser(crowdTestTask.getAcceptedUserList().get(0));
         }
 
-        updateTask.setId(task.get().getId());
+        updateTask.setId(crowdTestTask.getId());
         updateTask.setCode(taskCode);
-        updateTask.setCreateTime(task.get().getCreateTime());
+        updateTask.setCreateTime(crowdTestTask.getCreateTime());
         updateTask.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
         updateTask.update();
-        project.removeTask(task.get());
+        project.removeTask(crowdTestTask);
 
 //        // 重新生成任务导出链接
 //        String exportTaskUrl = this.exportTask(projectCode, updateTask.getCode(), userId);

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

@@ -100,6 +100,8 @@ feature:
 baseUrl:
   service:
     review: http://127.0.0.1:9004
+    crowd: http://127.0.0.1:8090
+    crowdIndex: http://127.0.0.1:5555/report/detail/
 ---
 spring:
   profiles: dev-online