Преглед на файлове

修改部分获取项目信息时限定任务code

郭超 преди 4 години
родител
ревизия
1faffcd20d

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

@@ -102,6 +102,10 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 
     @Override
     public CrowdTestProject getByProjectCodeJustInfo(String crowdTestProjectCode) throws CrowdTestProjectNotExistException {
+        return this.getCrowdTestProjectInfo(crowdTestProjectCode);
+    }
+
+    public CrowdTestProject getCrowdTestProjectInfo(String crowdTestProjectCode) {
         CrowdTestProjectPO crowdTestProjectPO = crowdTestProjectDao.findByCodeAndIsDeleted(crowdTestProjectCode, DeletedStatus.isNotDeleted);
         if (crowdTestProjectPO == null) {
             throw new CrowdTestProjectNotExistException();
@@ -110,6 +114,19 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     }
 
     @Override
+    public CrowdTestProject getByProjectCodeJustInfoAndProjectReport(String crowdTestProjectCode) throws CrowdTestProjectNotExistException {
+        CrowdTestProject project = this.getCrowdTestProjectInfo(crowdTestProjectCode);
+        //检索出项目报告
+        List<CrowdTestReportPO> crowdTestProjectReportPOList = crowdTestReportDao.findByDependencyCodeAndIsDeleted(crowdTestProjectCode, DeletedStatus.isNotDeleted);
+        if (crowdTestProjectReportPOList.size() != 0) {
+            CrowdTestReportPO crowdTestProjectReportPO = crowdTestProjectReportPOList.get(0);
+            CrowdTestReport crowdTestProjectReport = Converter.convert(CrowdTestReport.class, crowdTestProjectReportPO);
+            project.setCrowdTestReportForProject(crowdTestProjectReport);
+        }
+        return project;
+    }
+
+    @Override
     public CrowdTestProject getByProjectCode(String crowdTestProjectCode) throws CrowdTestProjectNotExistException {
         return getCrowdTestProject(null, crowdTestProjectDao.findByCodeAndIsDeleted(crowdTestProjectCode, DeletedStatus.isNotDeleted));
     }
@@ -119,6 +136,9 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return getCrowdTestProject(taskCode, crowdTestProjectDao.findByCodeAndIsDeleted(crowdTestProjectCode, DeletedStatus.isNotDeleted));
     }
 
+
+
+
     @NotNull
     public CrowdTestProject getCrowdTestProject(String taskCode, CrowdTestProjectPO byCodeAndIsDeleted) {
         CrowdTestProjectPO crowdTestProjectPO = byCodeAndIsDeleted;

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java

@@ -26,6 +26,8 @@ public interface ICrowdTestProjectRepo {
 
     CrowdTestProject getByProjectCodeJustInfo(String crowdTestProjectCode) throws CrowdTestProjectNotExistException;
 
+    CrowdTestProject getByProjectCodeJustInfoAndProjectReport(String crowdTestProjectCode) throws CrowdTestProjectNotExistException;
+
     CrowdTestProject getByProjectCodeAndTaskCode(String crowdTestProjectCode, String taskCode) throws CrowdTestProjectNotExistException;
 
     List<CrowdTestProject> getAllCrowdTestProject();

+ 6 - 5
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -877,14 +877,15 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public ReportDetailsDTO renderTaskReportDetails(String projectCode, String taskCode, String reportCode, Long userId) {
-        Optional<CrowdTestTask> task = projectRepo.getByProjectCode(projectCode).getCrowdTestTaskList()
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
+        Optional<CrowdTestTask> task = project.getCrowdTestTaskList()
                 .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();
         log.info("renderTaskReportDetails userID: " + userId);
         User user = userRepo.getByID(userId);
         ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
-        if (userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())) {
+        if (userId.equals(project.getRegionalManagerId())) {
             // 区域管理员
             reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(Converter.convert(CrowdTestReport.class, crowdTestReportDao.findByCodeAndIsDeleted(reportCode, DeletedStatus.isNotDeleted))));
             if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
@@ -909,7 +910,7 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public ReportDetailsDTO renderProjectReportDetails(String projectCode, String reportCode, Long userId) {
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeJustInfoAndProjectReport(projectCode);
         CrowdTestReport report = project.getCrowdTestReportForProject();
         if (report == null)
             throw new CrowdTestReportNotExistException();
@@ -931,7 +932,7 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId) {
         TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
 
         boolean saveFlag = false;
         // 判断项目是否截止
@@ -1040,7 +1041,7 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public CrowdTaskVO renderTaskDetailsByTourist(String projectCode, String taskCode) {
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
         Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();

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

@@ -230,16 +230,18 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         String endPointData;
         // 众测服务同步新建任务
         if(command.getEndPoint().getThreePageUrl() != null){
-            endPointData = createTaskToCrowdService(command.getName(), command.getDesc(), command.getEndPoint().getCollaborativeType(), command.getEndPoint().getThreePageUrl());
+            endPointData = this.createTaskToCrowdService(command.getName(), command.getDesc(), command.getEndPoint().getCollaborativeType(), command.getEndPoint().getThreePageUrl());
             if(endPointData.equals("")){
                 throw new BaseException("创建失败,众测端调用出错");
             }
             Map<String, Object> dataMap = (Map<String, Object>) JSON.parse(endPointData);
-            endPoint.setServerCode(dataMap.get("encodedUrl").toString());
-            endPoint.setUrl(dataMap.get("writeReportUrl").toString());
+//            endPoint.setServerCode(dataMap.get("encodedUrl").toString());
             endPoint.setToken(dataMap.get("taskDaPanUrl").toString());
-            endPoint.setExamId(dataMap.get("taskId").toString());
+            endPoint.setExamId(dataMap.get("examId").toString());
             endPoint.setCaseId(dataMap.get("caseId").toString());
+            // 获取填写报告的url
+            String reportUrl = this.getForEntityReportUrl(userId, task, endPoint);
+            endPoint.setUrl(reportUrl);
         }
         task.setEndPoint(endPoint);
         project.addTask(task);
@@ -275,9 +277,13 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Override
     public String getWriteReportUrl(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        CrowdTestTask task = getTaskByProjectAndTaskCode(project, taskCode);
+        CrowdTestTask task = this.getTaskByProjectAndTaskCode(project, taskCode);
         EndPoint endPoint = task.getEndPoint();
+        return this.getForEntityReportUrl(userId, task, endPoint);
+    }
 
+    @NotNull
+    public String getForEntityReportUrl(Long userId, CrowdTestTask task, EndPoint endPoint) {
         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());
 
@@ -372,7 +378,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public void rejectDirectionalTask(String projectCode, String taskCode, Long userId) {
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode,taskCode);
         CrowdTestTask task = project.getTask(taskCode);
         task.reject(userId);
 //        project.setRestPrice(project.getRestPrice() + task.getQuotedPrice());
@@ -381,7 +387,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId) {
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestProject project = projectRepo.getByProjectCodeAndTaskCode(projectCode, taskCode);
         CrowdTestTask task = project.getTask(taskCode);
         if (userId.equals(project.getRegionalManagerId())) {
             // 区域管理员提交任务