xuexiaobo 6 лет назад
Родитель
Сommit
954c449dde

+ 2 - 1
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -633,7 +633,8 @@ public class CrowdTestProject {
             throw new CrowdTestProjectException("还未创建任务,项目不能被提交");
         }else{
             //结束项目时查看是否已结束任务
-            if(this.getCrowdTestTaskList().stream().filter(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED).anyMatch(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_FINISHED)){
+            if(this.getCrowdTestTaskList().stream().filter(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED)
+                    .anyMatch(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_FINISHED)){
                 throw new CrowdTestTaskException("存在未结束的任务,项目不能被提交");
             }
         }

+ 5 - 3
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -28,13 +28,15 @@ public interface ViewMediator {
 
     MyCrowdDTO renderMyCrowd(Long userId);
 
-    TaskSquareDTO renderTaskSquare(CrowdTestTaskCommand crowdTestTaskCommand);
+    TaskSquareDTO renderTaskSquare();
 
     ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user);
 
-    ReportDetailsDTO renderReportDetails(CrowdTestReportCommand crowdTestReportCommand);
+    ReportDetailsDTO renderTaskReportDetails(String projectCode, String taskCode, String reportCode, Long userId);
 
-    TaskDetailsDTO renderTaskDetails(CrowdTestTaskCommand crowdTestTaskCommand);
+    ReportDetailsDTO renderProjectReportDetails(String projectCode, String reportCode, Long userId);
+
+    TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId);
 
     UserDTO renderUser(User user);
 

+ 99 - 12
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -3,29 +3,27 @@ package com.mooctest.crowd.site.mediator.impl;
 import com.mooctest.crowd.domain.dao.*;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
-import com.mooctest.crowd.domain.model.RegionalManagerPO;
 import com.mooctest.crowd.domain.model.UserPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
-import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.site.command.*;
 import com.mooctest.crowd.site.data.ProjectOperationControl;
+import com.mooctest.crowd.site.data.TaskOperationControl;
 import com.mooctest.crowd.site.data.dto.*;
-import com.mooctest.crowd.site.data.enums.ProjectType;
 import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
-
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -179,8 +177,17 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
-    public TaskSquareDTO renderTaskSquare(CrowdTestTaskCommand crowdTestTaskCommand) {
-        return new TaskSquareDTO();
+    public TaskSquareDTO renderTaskSquare() {
+        List<CrowdTaskVO> taskVOList = taskDao.findAllByIsDeleted(0).stream().map(crowdTestTaskPO -> {
+            CrowdTestTask task = CrowdTestProjectFactory.defaultTask();
+            BeanUtils.copyProperties(crowdTestTaskPO, task);
+            return task;
+        }).collect(Collectors.toList()).stream().filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RELEASED)
+                .filter(crowdTestTask -> crowdTestTask.getDistributionType()==2)
+                .map(CrowdTaskVO::new).collect(Collectors.toList());
+        TaskSquareDTO taskSquareDTO = new TaskSquareDTO();
+        taskSquareDTO.setCrowdTaskVOList(taskVOList);
+        return taskSquareDTO;
     }
 
     @Override
@@ -212,13 +219,54 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
-    public ReportDetailsDTO renderReportDetails(CrowdTestReportCommand crowdTestReportCommand) {
-        return new ReportDetailsDTO();
+    public ReportDetailsDTO renderTaskReportDetails(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())
+            throw new CrowdTestTaskNotExistException();
+        Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
+                .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
+        if (!report.isPresent())
+            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;
+    }
+
+    @Override
+    public ReportDetailsDTO renderProjectReportDetails(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;
     }
 
     @Override
-    public TaskDetailsDTO renderTaskDetails(CrowdTestTaskCommand crowdTestTaskCommand) {
-        return new TaskDetailsDTO();
+    public TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId) {
+        TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        Optional<CrowdTestTask> task =  project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!task.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
+        if (userId == null)
+            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
+        else
+            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
+        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
+        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
+        taskDetailsDTO.setCrowdTaskVO(taskVO);
+        List<CrowdReportVO> reportVOList = task.get().getCrowdTestReportList()
+                .stream().map(CrowdReportVO::new).collect(Collectors.toList());
+        taskDetailsDTO.setCrowdReportVOList(reportVOList);
+        return taskDetailsDTO;
     }
 
     @Override
@@ -301,4 +349,43 @@ public class WebMediatorImpl implements ViewMediator {
         }
         return operationControl;
     }
+
+    private TaskOperationControl initTaskPermission(CrowdTestProject project, CrowdTestTask task, User user){
+        TaskOperationControl taskOperationControl = new TaskOperationControl();
+        if (user==null)
+            return taskOperationControl;
+        //区域管理员或系统管理员视角
+        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
+                ||(user.getRegionalManager()!=null&&user.getId().equals(project.getRegionalManagerId()))){
+            if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
+                taskOperationControl.setUpdate(true);
+            }else if (task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED){
+                taskOperationControl.setConfirmFinish(true);
+            }
+        }
+        //评测机构视角
+        if (user.getEvaluationAgency()!=null && task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED){
+            if ((task.getDistributionType()==0 && task.getEvaluationAgencyId().equals(user.getId()))
+                    ||(task.getDistributionType()==2 && task.getStatus()>=CrowdTestTaskStatus.HAS_RECEIVED && task.getEvaluationAgencyId().equals(user.getId()))){
+                if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
+                    taskOperationControl.setReceive(true);
+                    if (task.getDistributionType()==0)
+                        taskOperationControl.setReject(true);
+                } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
+                    taskOperationControl.setUploadReport(true);
+                    if (task.getCrowdTestReportList().size()>0){
+                        taskOperationControl.setFinish(true);
+                    }
+                } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
+                    taskOperationControl.setUploadReport(true);
+                }
+            } else if (task.getDistributionType()==2){
+                if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
+                    taskOperationControl.setReceive(true);
+                }
+            }
+        }
+        System.out.println(taskOperationControl);
+        return taskOperationControl;
+    }
 }

+ 5 - 24
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -8,6 +8,7 @@ import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
 import com.mooctest.crowd.site.data.vo.CrowdReportVO;
+import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdReportService;
 import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,24 +27,12 @@ public class CrowdReportServiceImpl implements CrowdReportService {
     @Autowired
     private CrowdTestProjectRepo projectRepo;
 
-//    @Autowired
-//    private GenerateFlowCodeUtil codeUtil;
+    @Autowired
+    private ViewMediator viewMediator;
 
     @Override
     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())
-            throw new CrowdTestTaskNotExistException();
-        Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
-                .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
-        if (!report.isPresent())
-            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;
+        return viewMediator.renderTaskReportDetails(projectCode, taskCode, reportCode, userId);
     }
 
     @Override
@@ -98,15 +87,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
 
     @Override
     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;
+       return viewMediator.renderProjectReportDetails(projectCode, reportCode, userId);
     }
 
     @Override

+ 2 - 68
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -61,25 +61,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public TaskDetailsDTO getTaskDetails(String projectCode, String taskCode, Long userId) {
-        TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
-        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        Optional<CrowdTestTask> task =  project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
-        if (!task.isPresent())
-            throw new CrowdTestTaskNotExistException();
-        CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
-        if (userId == null)
-            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
-        else
-            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
-        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
-        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
-        taskDetailsDTO.setCrowdTaskVO(taskVO);
-        List<CrowdReportVO> reportVOList = task.get().getCrowdTestReportList()
-                .stream().map(crowdTestReport -> {
-            return new CrowdReportVO(crowdTestReport);
-        }).collect(Collectors.toList());
-        taskDetailsDTO.setCrowdReportVOList(reportVOList);
-        return taskDetailsDTO;
+        return viewMediator.renderTaskDetails(projectCode, taskCode, userId);
     }
 
     @Override
@@ -116,16 +98,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public TaskSquareDTO getAllTasks() {
-        List<CrowdTaskVO> taskVOList = taskDao.findAllByIsDeleted(0).stream().map(crowdTestTaskPO -> {
-            CrowdTestTask task = CrowdTestProjectFactory.defaultTask();
-            BeanUtils.copyProperties(crowdTestTaskPO, task);
-            return task;
-        }).collect(Collectors.toList()).stream().filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RELEASED)
-                .filter(crowdTestTask -> crowdTestTask.getDistributionType()==2)
-                .map(CrowdTaskVO::new).collect(Collectors.toList());
-        TaskSquareDTO taskSquareDTO = new TaskSquareDTO();
-        taskSquareDTO.setCrowdTaskVOList(taskVOList);
-        return taskSquareDTO;
+       return viewMediator.renderTaskSquare();
     }
 
     @Override
@@ -165,43 +138,4 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }
-
-    private TaskOperationControl initTaskPermission(CrowdTestProject project,CrowdTestTask task, User user){
-        TaskOperationControl taskOperationControl = new TaskOperationControl();
-        if (user==null)
-            return taskOperationControl;
-        //区域管理员或系统管理员视角
-        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
-                ||(user.getRegionalManager()!=null&&user.getId().equals(project.getRegionalManagerId()))){
-            if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
-                taskOperationControl.setUpdate(true);
-            }else if (task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED){
-                taskOperationControl.setConfirmFinish(true);
-            }
-        }
-        //评测机构视角
-        if (user.getEvaluationAgency()!=null && task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED){
-            if ((task.getDistributionType()==0 && task.getEvaluationAgencyId().equals(user.getId()))
-                    ||(task.getDistributionType()==2 && task.getStatus()>=CrowdTestTaskStatus.HAS_RECEIVED && task.getEvaluationAgencyId().equals(user.getId()))){
-                if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
-                    taskOperationControl.setReceive(true);
-                    if (task.getDistributionType()==0)
-                        taskOperationControl.setReject(true);
-                } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
-                    taskOperationControl.setUploadReport(true);
-                    if (task.getCrowdTestReportList().size()>0){
-                        taskOperationControl.setFinish(true);
-                    }
-                } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
-                    taskOperationControl.setUploadReport(true);
-                }
-            } else if (task.getDistributionType()==2){
-                if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
-                    taskOperationControl.setReceive(true);
-                }
-            }
-        }
-        System.out.println(taskOperationControl);
-        return taskOperationControl;
-    }
 }

+ 0 - 101
site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

@@ -1,101 +0,0 @@
-package com.mooctest.crowd.site.mediator.impl;
-
-import com.mooctest.crowd.domain.domainobject.Account;
-import com.mooctest.crowd.domain.domainobject.User;
-import com.mooctest.crowd.domain.factory.AccountFactory;
-import com.mooctest.crowd.domain.factory.UserFactory;
-import com.mooctest.crowd.site.command.AccountCommand;
-import com.mooctest.crowd.site.command.CrowdTestReportCommand;
-import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
-import com.mooctest.crowd.site.data.dto.*;
-import com.mooctest.crowd.site.mediator.ViewMediator;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @Author: xuexb
- * @Date: 2019.7.16 20:39
- */
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(AccountFactory.class)
-public class WebMediatorImplTest {
-
-
-    private ViewMediator viewMediator;
-    private Account account;
-
-    @Before
-    public void setUp(){
-        account = new Account();
-        account.setPassword("CORRECT_PWD");
-        account.setMobileNum("EXiSTS_MOBILE");
-
-        viewMediator = new WebMediatorImpl();
-    }
-
-//    @Test
-//    public void should_return_true_when_login_success() throws PasswordErrorException, BadRequestException, AccountNotExistException {
-//        //arrange
-//        PowerMockito.mockStatic(AccountFactory.class);
-//        PowerMockito.when(AccountFactory.createAccount()).thenReturn(account);
-//        LoginCommand cmd = new LoginCommand("EXiSTS_MOBILE", "CORRECT_PWD", "CODE");
-//        //action
-//        UserDTO success = viewMediator.loginByMobileAndPwd(cmd);
-//    }
-
-
-
-    @Test
-    public void should_return_index_dto_when_render_index(){
-        //arrange
-        //action
-        //assert
-    }
-
-
-    @Test
-    public void should_return_task_square_dto_when_render_task_square_success(){
-        //arrange
-        CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
-        //action
-        TaskSquareDTO taskSquareDTO = viewMediator.renderTaskSquare(crowdTestTaskCommand);
-        //assert
-        assertNotNull(taskSquareDTO);
-    }
-
-    @Test
-    public void should_return_report_details_dto_when_render_report_details_success(){
-        //arrange
-        CrowdTestReportCommand crowdTestReportCommand = new CrowdTestReportCommand();
-        //action
-        ReportDetailsDTO reportDetailsDTO = viewMediator.renderReportDetails(crowdTestReportCommand);
-        //assert
-        assertNotNull(reportDetailsDTO);
-    }
-
-    @Test
-    public void should_return_task_details_dto_when_render_task_details_success(){
-        //arrange
-        CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
-        //action
-        TaskDetailsDTO taskDetailsDTO = viewMediator.renderTaskDetails(crowdTestTaskCommand);
-        //assert
-        assertNotNull(taskDetailsDTO);
-    }
-
-    @Test
-    public void should_return_user_dto_when_render_user_success(){
-        //arrage
-        User user = UserFactory.createUser();
-        user.setEvaluationAgency(UserFactory.defaultAgency());
-        //action
-        UserDTO userDTO = viewMediator.renderUser(user);
-        //assert
-        assertNotNull(userDTO);
-    }
-}