瀏覽代碼

add:对报告操作权限添加控制

xuexiaobo 6 年之前
父節點
當前提交
4c0dce6dda

+ 12 - 4
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -10,6 +10,7 @@ import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpSession;
 import java.util.List;
 
 /**
@@ -28,8 +29,11 @@ public class CrowdReportController {
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.GET)
     public ReportDetailsDTO getTaskReport(@PathVariable("projectCode") String projectCode,
                                           @PathVariable("taskCode") String taskCode,
-                                          @PathVariable("reportCode") String reportCode){
-        return reportService.getTaskReport(projectCode, taskCode, reportCode);
+                                          @PathVariable("reportCode") String reportCode,
+                                          HttpSession session){
+        if (session.getAttribute("userId")==null)
+            return reportService.getTaskReport(projectCode, taskCode, reportCode, null);
+        return reportService.getTaskReport(projectCode, taskCode, reportCode, Long.parseLong((String)session.getAttribute("userId")));
     }
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report", method = RequestMethod.POST)
@@ -70,8 +74,12 @@ public class CrowdReportController {
     }
 
     @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.GET)
-    public ReportDetailsDTO getProjectReport(@PathVariable("projectCode") String projectCode, @PathVariable("reportCode") String reportCode){
-        return reportService.getProjectReport(projectCode, reportCode);
+    public ReportDetailsDTO getProjectReport(@PathVariable("projectCode") String projectCode,
+                                             @PathVariable("reportCode") String reportCode,
+                                             HttpSession session){
+        if (session.getAttribute("userId")==null)
+            return reportService.getProjectReport(projectCode, reportCode, null);
+        return reportService.getProjectReport(projectCode, reportCode, Long.parseLong((String)session.getAttribute("userId")));
     }
 
     @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.DELETE)

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/ReportDetailsDTO.java

@@ -10,4 +10,5 @@ import lombok.Data;
 @Data
 public class ReportDetailsDTO {
     CrowdReportVO crowdReportVO;
+    boolean operational = false;
 }

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

@@ -9,7 +9,7 @@ import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
  * @date 2019-07-30 18:02
  */
 public interface CrowdReportService {
-    ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode);
+    ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode, Long userId);
 
     ReportDetailsDTO createTaskReport(String projectCode, String taskCode, CrowdTestReportCommand command);
 
@@ -17,7 +17,7 @@ public interface CrowdReportService {
 
     void deleteTaskReport(String projectCode, String taskCode, String reportCode);
 
-    ReportDetailsDTO getProjectReport(String projectCode, String reportCode);
+    ReportDetailsDTO getProjectReport(String projectCode, String reportCode, Long userId);
 
     ReportDetailsDTO createProjectReport(String projectCode, CrowdTestReportCommand command);
 

+ 10 - 6
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -30,7 +30,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
 //    private GenerateFlowCodeUtil codeUtil;
 
     @Override
-    public ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode) {
+    public ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode, Long userId) {
         Optional<CrowdTestTask> task = projectRepo.getByProjectCode(projectCode).getCrowdTestTaskList()
                 .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
         if (!task.isPresent())
@@ -41,6 +41,8 @@ public class CrowdReportServiceImpl implements CrowdReportService {
             throw new CrowdTestReportNotExistException();
         ReportDetailsDTO reportDetailsDTO  = new ReportDetailsDTO();
         reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
+        if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED && task.get().getEvaluationAgencyId().equals(userId))
+            reportDetailsDTO.setOperational(true);
         return reportDetailsDTO;
     }
 
@@ -60,7 +62,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         report.setCode(reportCode);
         task.get().getCrowdTestReportList().add(report);
         projectRepo.saveCrowdTestProject(project);
-        return getTaskReport(projectCode, taskCode, reportCode);
+        return getTaskReport(projectCode, taskCode, reportCode, task.get().getEvaluationAgencyId());
     }
 
     @Override
@@ -84,7 +86,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         task.get().getCrowdTestReportList().remove(report.get());
         task.get().getCrowdTestReportList().add(updatedReport);
         projectRepo.saveCrowdTestProject(project);
-        return getTaskReport(projectCode, taskCode, reportCode);
+        return getTaskReport(projectCode, taskCode, reportCode, task.get().getEvaluationAgencyId());
     }
 
     @Override
@@ -95,13 +97,15 @@ public class CrowdReportServiceImpl implements CrowdReportService {
     }
 
     @Override
-    public ReportDetailsDTO getProjectReport(String projectCode, String reportCode) {
+    public ReportDetailsDTO getProjectReport(String projectCode, String reportCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestReport report = project.getCrowdTestReportForProject();
         if (report==null)
             throw new CrowdTestReportNotExistException();
         ReportDetailsDTO reportDetailsDTO  = new ReportDetailsDTO();
         reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report));
+        if (project.getStatus()<CrowdTestProjectStatus.HAS_FINISHED && project.getRegionalManagerId().equals(userId))
+            reportDetailsDTO.setOperational(true);
         return reportDetailsDTO;
     }
 
@@ -116,7 +120,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         report.setCode(reportCode);
         project.setCrowdTestReportForProject(report);
         projectRepo.saveCrowdTestProject(project);
-        return getProjectReport(projectCode, reportCode);
+        return getProjectReport(projectCode, reportCode, project.getRegionalManagerId());
     }
 
     @Override
@@ -133,6 +137,6 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         updatedReport.setDependencyCode(report.getDependencyCode());
         project.setCrowdTestReportForProject(updatedReport);
         projectRepo.saveCrowdTestProject(project);
-        return getProjectReport(projectCode, reportCode);
+        return getProjectReport(projectCode, reportCode, project.getRegionalManagerId());
     }
 }