소스 검색

add:拒绝接收任务,提交任务

xuexiaobo 6 년 전
부모
커밋
04ac86eaff

+ 43 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -1,9 +1,13 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import com.mooctest.crowd.domain.exception.CrowdTestTaskException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.exception.UnauthorizedException;
 import lombok.Data;
 
 import java.sql.Timestamp;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author guochao
@@ -66,7 +70,46 @@ public class CrowdTestTask {
 //        throw new CrowdTestReportNotExistException();
 //    }
 
+    /**
+     * 接收任务(测评机构)
+     * @return
+     */
+    public void receive(User user) {
+        //判断是否为测评机构
+        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
+        if(evaluationAgency == null){
+            throw new UnauthorizedException("当前用户不是测评机构,没有权限接收任务");
+        }
+        //任务当前状态
+        if (this.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED)
+            throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:"+this.getStatus());
+        //定向发布类型
+        if (this.getDistributionType() == 0) {
+            if (!this.getEvaluationAgencyId().equals(user.getId()))
+                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
+        }
+        this.setEvaluationAgencyId(user.getId());
+        this.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
+    }
+
+    public void reject(Long userId){
+        if (this.getDistributionType()!=0 || this.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED || !this.getEvaluationAgencyId().equals(userId)){
+            throw new CrowdTestTaskException("非法操作!");
+        }
+        this.setStatus(CrowdTestTaskStatus.HAS_REJECTED);
+    }
+
     public void removeCrowdTestTask() {
         this.isDeleted = DeletedStatus.isDeleted;
     }
+
+    public void commit(Long userId) {
+        if (this.getStatus()!=CrowdTestTaskStatus.HAS_RECEIVED || this.getCrowdTestReportList()==null || this.getCrowdTestReportList().size()<1){
+            throw new CrowdTestTaskException("当前状态不能提交任务");
+        }
+        if (!this.getEvaluationAgencyId().equals(userId)){
+            throw new UnauthorizedException("无权对此任务进行操作");
+        }
+        this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+    }
 }

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

@@ -86,22 +86,22 @@ public class CrowdTaskController {
 
     @LoginRequired
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/status/reject", method = RequestMethod.PUT)
-    public TaskDetailsDTO rejectTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
+    public void rejectTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
         Long userId = Long.parseLong((String)session.getAttribute("userId"));
-        return null;
+        taskService.rejectDirectionalTask(projectCode, taskCode, userId);
     }
 
     @LoginRequired
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/status/commit", method = RequestMethod.PUT)
     public TaskDetailsDTO commitTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
         Long userId = Long.parseLong((String)session.getAttribute("userId"));
-        return null;
+        return taskService.commitTask(projectCode, taskCode, userId);
     }
 
     @LoginRequired
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/status/finished", method = RequestMethod.PUT)
     public TaskDetailsDTO confirmFinishTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
         Long userId = Long.parseLong((String)session.getAttribute("userId"));
-        return null;
+        return taskService.confirmFinish(projectCode, taskCode, userId);
     }
 }

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

@@ -24,4 +24,10 @@ public interface CrowdTaskService {
     TaskSquareDTO getAllTasks();
 
     TaskDetailsDTO acceptTask(String projectCode, String taskCode, Long userId);
+
+    void rejectDirectionalTask(String projectCode, String taskCode, Long userId);
+
+    TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId);
+
+    TaskDetailsDTO confirmFinish(String projectCode, String taskCode, Long userId);
 }

+ 23 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -130,11 +130,33 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Override
     public TaskDetailsDTO acceptTask(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        project.receiveTask(taskCode, userRepo.getByID(userId));
+        CrowdTestTask task = project.getTask(taskCode);
+        task.receive(userRepo.getByID(userId));
+//        project.receiveTask(taskCode, userRepo.getByID(userId));
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }
 
+    @Override
+    public void rejectDirectionalTask(String projectCode, String taskCode, Long userId) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestTask task = project.getTask(taskCode);
+        task.reject(userId);
+    }
+
+    @Override
+    public TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestTask task = project.getTask(taskCode);
+        task.commit(userId);
+        return getTaskDetails(projectCode, taskCode, userId);
+    }
+
+    @Override
+    public TaskDetailsDTO confirmFinish(String projectCode, String taskCode, Long userId) {
+        return null;
+    }
+
     private TaskOperationControl initTaskPermission(CrowdTestProject project,CrowdTestTask task, User user){
         TaskOperationControl taskOperationControl = new TaskOperationControl();
         if (user==null)