Переглянути джерело

修复项目被拒绝后可以重新发布的问题,增加定向任务、项目显示定向给机构/管理员的名称信息

郭超 4 роки тому
батько
коміт
92d359144e

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -54,6 +54,7 @@ public class CrowdProjectVO implements Serializable {
     private Integer status;
     private int joinCount;
     private Long regionManagerId;
+    private String regionManagerName;
     private StatusVO statusVO;
     private Boolean needHandle = false; //该项目需要处理
     @JSONField(format = "yyyy-MM-dd HH:mm:ss")

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java

@@ -38,6 +38,7 @@ public class CrowdTaskVO implements Serializable{
     private String requirementFile;
     private Long resource;
     private Long agencyId;
+    private String agencyName;
     private Map<String, String> location;
     private String institution;
     private String serviceType;

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/mediator/impl/OperationMediatorImpl.java

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.mediator.impl;
 
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
 import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
@@ -52,7 +53,7 @@ public class OperationMediatorImpl implements OperationMediator {
         CrowdTestProject updateProject = command.toCrowdProject();
         updateProject.setId(project.getId());
         updateProject.setCode(project.getCode());
-        updateProject.setStatus(project.getStatus());
+        updateProject.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
         if(updateProject.getCreateTime() == null){
             updateProject.setCreateTime(new Timestamp(System.currentTimeMillis()));
         }

+ 20 - 10
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -858,6 +858,10 @@ public class WebMediatorImpl implements ViewMediator {
             }
 
         }
+        // 判断项目是否为定向发布,显示定向给的区域管理员信息
+        if(project.getProjectDistributionTypeId().equals(DistributeType.DIRECT.getId())){
+            projectVO.setInstitution(userRepo.getByIDJustInfo(project.getRegionalManagerId()).getName());
+        }
 
         // 项目类型值的转换
         projectVO = changeFieldAndApplicationAndTestType(projectVO, applicationMap, fieldMap, testMap);
@@ -926,10 +930,6 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId) {
-//        Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
-//        Map<String, String> applicationMap = commonRepo.getApplicationCodeNameMap();
-//        Map<String, String> testMap = commonRepo.getTypeCodeNameMap();
-
         TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
 
@@ -985,6 +985,11 @@ public class WebMediatorImpl implements ViewMediator {
                     }
                     return taskToUserVO;
                 }).collect(Collectors.toList());
+
+                // 判断是否为定向发布的任务,如果是则获取定向发布机构/人员的名称信息
+                if(crowdTestTask.getDistributionType().equals(DistributeType.DIRECT.getId())){
+                    taskVO.setAgencyName(evaluationAgencyRepo.findAgencyByUserId(crowdTestTask.getEvaluationAgencyId()).getEvaluationAgencyName());
+                }
             }
             // 测评机构视图
             else if (AuthCheckServiceImpl.isAgency(user)) {
@@ -1686,14 +1691,19 @@ public class WebMediatorImpl implements ViewMediator {
         Optional<EndPointPO> endPointPOOptional = endPointDao.findByTaskCode(task.getCode());
         TaskOperationControl taskOperationControl = new TaskOperationControl();
 
-        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
-                || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
-            // 不管何时都可以导出任务
-            taskOperationControl.setExportTask(true);
-            taskOperationControl.setForkTask(true);
+        // 用户未登录,无其他操作权限
+        if (user == null) {
+            return taskOperationControl;
         }
 
-        if (user == null || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
+        // 任务时间截止,对于区域管理员可以有导出和fork功能
+        if(task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT){
+            if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
+                    || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
+                // 不管何时都可以导出任务
+                taskOperationControl.setExportTask(true);
+                taskOperationControl.setForkTask(true);
+            }
             return taskOperationControl;
         }