Browse Source

解决一期中的逻辑问题

guo00guo 5 years ago
parent
commit
7dd7352492
17 changed files with 144 additions and 155 deletions
  1. 1 0
      core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java
  2. 2 2
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java
  3. 5 1
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java
  4. 36 46
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  5. 12 3
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestTaskRepo.java
  6. 2 1
      core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTaskRepo.java
  7. 2 0
      site/src/main/java/com/mooctest/crowd/site/command/CrowdTestTaskCommand.java
  8. 2 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java
  9. 1 1
      site/src/main/java/com/mooctest/crowd/site/data/vo/FullStatusVO.java
  10. 1 1
      site/src/main/java/com/mooctest/crowd/site/data/vo/StatusVO.java
  11. 3 3
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  12. 48 37
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  13. 0 4
      site/src/main/java/com/mooctest/crowd/site/service/CrowdTaskService.java
  14. 0 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  15. 25 44
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java
  16. 4 4
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java
  17. 0 4
      site/src/main/java/com/mooctest/crowd/site/service/impl/ThemeStatusServiceImpl.java

+ 1 - 0
core/src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java

@@ -13,6 +13,7 @@ public class CrowdTestTaskCommand {
     private Long crowdTestProjectId;
     private Long evaluationAgencyId;
     private String type;
+    private String resource; // 可见性 0-定向 2-广场
     private String description;
     private String requirementFile;
     private Double price;

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java

@@ -32,11 +32,11 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
     List<CrowdTestProjectPO> findMoreHotProjects();
 
 
-    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 ORDER BY CTP_CREATE_TIME DESC", nativeQuery = true)
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS = 1 and CTP_PDT_ID = 2 ORDER BY CTP_CREATE_TIME DESC", nativeQuery = true)
     List<CrowdTestProjectPO> findAll();
 
     //这个指定了查询条数 适用于众测广场首页 这样性能会高一点。
-    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 6; ", nativeQuery = true)
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS =1 and CTP_PDT_ID = 2 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 6; ", nativeQuery = true)
     List<CrowdTestProjectPO> findindexProject();
 
 

+ 5 - 1
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java

@@ -29,11 +29,15 @@ public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>,
             "CTT_STATUS,CTT_FULL_STATUS,CTT_DEAD_LINE,CTT_IS_DELETED,CTT_PARTICIPANT_COUNT,CTT_ACCEPTED_COUNT,CTT_PARTICIPANT_HAS_COMMITTED_COUNT,CTT_CREATE_TIME,CTT_END_TIME FROM  crowd_test_task t where CTT_STATUS=1 or CTT_STATUS=2 ORDER BY CTT_CREATE_TIME DESC", nativeQuery = true)
     List<CrowdTestTaskPO> findAll();
 
-    @Query(value = "select * FROM  crowd_test_task  ORDER BY CTT_CREATE_TIME DESC LIMIT 6 ", nativeQuery = true)
+    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 ORDER BY CTT_CREATE_TIME DESC LIMIT 6 ", nativeQuery = true)
     List<CrowdTestTaskPO> findindexTask();
 
 
     //热门任务
+    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME", nativeQuery = true)
+    List<CrowdTestTaskPO> findCanAcceptTask();
+
+    //热门任务
     @Query(value = "select * FROM  crowd_test_task WHERE CTT_STATUS !=4 and CTT_STATUS !=5  ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME DESC LIMIT 7", nativeQuery = true)
     List<CrowdTestTaskPO> findMoreHotTasks();
 

+ 36 - 46
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -1,8 +1,6 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskException;
-import com.mooctest.crowd.domain.exception.UnauthorizedException;
 import lombok.Data;
 
 import java.sql.Timestamp;
@@ -88,32 +86,16 @@ public class CrowdTestTask {
 
     /**
      * 接收任务(测评机构)
+     *
      * @return
      */
-    public void receive(User user){
-        //判断用户是否为接包用户
-    List<Role>  roles=  user.getRoleList();
-    List<String> roleNames=new ArrayList<>();
-    for(int i=0;i<roles.size();i++){
-        roleNames.add(roles.get(i).getName());
-    }
-    if(!roleNames.contains("evaluationUser")&&!roleNames.contains("evaluationAgency")&&!roleNames.contains("RegionalManager")){
-         throw  new BaseException("当前用户没有接包权限");
-    }
-
-
-
-        //判断是否为测评机构
-        EvaluationAgency evaluationAgency = user.getEvaluationAgency();
-        if(evaluationAgency == null){
-            throw new UnauthorizedException("当前用户不是测评机构,没有权限接收任务");
-        }
+    public void receive(User user) {
         //任务当前状态
-        if(this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
-            if(this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL)
+        if (this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) {
+            if (this.getFullStatus() == CrowdTestTaskAcceptStatus.HAS_FULL)
                 throw new CrowdTestTaskException("当前任务满员!:");
-        }else if(this.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED&&this.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED)
-            throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:"+this.getStatus());
+        } else if (this.getStatus() != CrowdTestTaskStatus.HAS_RELEASED && this.getStatus() != CrowdTestTaskStatus.HAS_REJECTED)
+            throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:" + this.getStatus());
         //定向发布类型
 //        if (this.getDistributionType() == 0) {
 //            if (!this.getEvaluationAgencyId().equals(user.getId()))
@@ -122,7 +104,7 @@ public class CrowdTestTask {
 //        this.setEvaluationAgencyId(user.getId());
 
         // 判断人数是否满员
-        if (this.getAcceptedCount() >= this.getParticipantCount()){
+        if (this.getAcceptedCount() >= this.getParticipantCount()) {
             throw new CrowdTestTaskException("当前任务已经满员!");
         }
         // 新增接收者信息
@@ -134,30 +116,30 @@ public class CrowdTestTask {
 //        }else if(this.getDistributionType().equals(DistributeType.SQUARE.getId())){
 //            // 广场发布类型
 //        }
-        if (this.getDistributionType() == DistributeType.DIRECT.getId()){
+        if (this.getDistributionType() == DistributeType.DIRECT.getId()) {
             this.getAcceptedUserList().stream().map(taskToUser -> {
                 taskToUser.setIsAccepted(1);
                 taskToUser.setAcceptTime(new Timestamp(System.currentTimeMillis()));
                 return taskToUser;
             }).collect(Collectors.toList());
-        }else{
+        } else {
             TaskToUser taskToUser = new TaskToUser();
-            taskToUser.setValue(this.code, user.getId(), this.quotedPrice,0, this.getDistributionType(), 1, new Timestamp(System.currentTimeMillis()));
+            taskToUser.setValue(this.code, user.getId(), this.quotedPrice, 0, this.getDistributionType(), 1, new Timestamp(System.currentTimeMillis()));
             this.getAcceptedUserList().add(taskToUser);
         }
         this.setAcceptedUserList(acceptedUserList);
-        this.setAcceptedCount(this.acceptedCount+1);
-        if (this.getAcceptedCount() == this.getParticipantCount()){
+        this.setAcceptedCount(this.acceptedCount + 1);
+        if (this.getAcceptedCount() == this.getParticipantCount()) {
             this.setFullStatus(CrowdTestTaskAcceptStatus.HAS_FULL);
-        }else{
+        } else {
             this.setFullStatus(CrowdTestTaskAcceptStatus.NOT_FULL);
         }
         this.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
     }
 
 
-    public void reject(Long userId){
-        if (this.getDistributionType()!=0 || this.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED || !this.getEvaluationAgencyId().equals(userId)){
+    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);
@@ -169,7 +151,7 @@ public class CrowdTestTask {
     }
 
     public void commitByRegionalManager() {
-        if (this.getStatus()!=CrowdTestTaskStatus.HAS_RECEIVED || this.getParticipantHasCommittedCount() < this.getAcceptedCount()){
+        if (this.getStatus() != CrowdTestTaskStatus.HAS_RECEIVED || this.getParticipantHasCommittedCount() < this.getAcceptedCount()) {
             throw new CrowdTestTaskException("当前状态不能提交任务");
         }
         this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
@@ -177,36 +159,36 @@ public class CrowdTestTask {
     }
 
     public void commitByAgency(String taskCode, Long userId) {
-        if (this.getStatus()!= CrowdTestTaskStatus.HAS_RECEIVED){
+        if (this.getStatus() != CrowdTestTaskStatus.HAS_RECEIVED) {
             throw new CrowdTestTaskException("当前状态不能提交任务");
         }
 
         Optional<TaskToUser> taskToUserOptional = this.getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getTaskCode().equals(taskCode)
                 && taskToUser.getUserId().equals(userId) && taskToUser.getDistributionType().equals(this.distributionType)).findFirst();
-        if(!taskToUserOptional.isPresent()){
+        if (!taskToUserOptional.isPresent()) {
             throw new CrowdTestTaskException("当前用户无权对此任务进行操作");
-        }else{
+        } else {
             TaskToUser taskToUser = taskToUserOptional.get();
-            if (taskToUser.getIsAccepted() == 0){
+            if (taskToUser.getIsAccepted() == 0) {
                 throw new CrowdTestTaskException("当前用户未接受此任务");
-            }else if(taskToUser.getHasReport() == 0){
+            } else if (taskToUser.getHasReport() == 0) {
                 throw new CrowdTestTaskException("当前用户未提交报告");
-            }else{
+            } else {
                 taskToUser.setIsCommitted(1);
                 taskToUser.setCommitTaskTime(new Timestamp(System.currentTimeMillis()));
             }
         }
-        this.setParticipantHasCommittedCount(this.getParticipantHasCommittedCount()+1);
-        if(this.getParticipantCount() == this.getParticipantHasCommittedCount()){
+        this.setParticipantHasCommittedCount(this.getParticipantHasCommittedCount() + 1);
+        if (this.getParticipantCount() == this.getParticipantHasCommittedCount()) {
             this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
         }
     }
 
     public void confirmFinish() {
-        if ((this.getParticipantHasCommittedCount() == this.getAcceptedCount() && this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED)|| (this.getParticipantHasCommittedCount() == this.getParticipantCount() && this.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
+        if ((this.getParticipantHasCommittedCount() == this.getAcceptedCount() && this.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (this.getParticipantHasCommittedCount() == this.getParticipantCount() && this.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
             this.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
             this.setEndTime(new Timestamp(System.currentTimeMillis()));
-        }else {
+        } else {
             throw new CrowdTestTaskException("评测机构未提请结束任务,无法确认结束!");
         }
 
@@ -215,10 +197,18 @@ public class CrowdTestTask {
     public void create(String taskCode) {
         this.setCode(taskCode);
         this.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
-        if (this.getDistributionType() == DistributeType.DIRECT.getId()){
+        this.directTask();
+    }
+
+    public void update() {
+        this.directTask();
+    }
+
+    private void directTask(){
+        if (this.getDistributionType() == DistributeType.DIRECT.getId()) {
             this.setParticipantCount(1);
             TaskToUser taskToUser = new TaskToUser();
-            taskToUser.setValue(this.code, this.getEvaluationAgencyId(), this.quotedPrice,0, this.getDistributionType(), 0, null);
+            taskToUser.setValue(this.code, this.getEvaluationAgencyId(), this.quotedPrice, 0, this.getDistributionType(), 0, null);
             this.getAcceptedUserList().add(taskToUser);
             this.setAcceptedUserList(acceptedUserList);
         }

+ 12 - 3
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestTaskRepo.java

@@ -1,10 +1,11 @@
 package com.mooctest.crowd.domain.repository;
 
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.dao.TaskToUserDao;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import com.mooctest.crowd.domain.domainobject.TaskToUser;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
-import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
+import com.mooctest.crowd.domain.model.TaskToUserPO;
 import com.mooctest.crowd.domain.util.Converter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -32,13 +33,16 @@ public class CrowdTestTaskRepo  implements  ICrowdTaskRepo{
     @Autowired
     private CrowdTestTaskDao taskDao;
 
-
+    @Autowired
+    private TaskToUserDao taskToUserDao;
 
     @Override
     public Page<CrowdTestTask> findAllByPage(Pageable pageable, String keyword, int deletedStatus){
         Specifications<CrowdTestProjectPO> where =  Specifications.where(getProjectByIsNotDeleted(keyword, deletedStatus));
         return  taskDao.findAll(where, pageable).map(crowdTestTaskPO -> Converter.convert(CrowdTestTask.class,crowdTestTaskPO));
     }
+
+
     private Specification<CrowdTestProjectPO> getProjectByIsNotDeleted(String keyword, int deletedStatus) {
         return new Specification<CrowdTestProjectPO>() {
             @Override
@@ -54,4 +58,9 @@ public class CrowdTestTaskRepo  implements  ICrowdTaskRepo{
             }
         };
     }
+
+    public void deleteTaskToUser(TaskToUser taskToUser){
+        taskToUserDao.delete(Converter.convert(TaskToUserPO.class, taskToUser));
+    }
+
 }

+ 2 - 1
core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTaskRepo.java

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.domain.repository;
 
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import com.mooctest.crowd.domain.domainobject.TaskToUser;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
@@ -8,6 +9,6 @@ public interface ICrowdTaskRepo {
 
      Page<CrowdTestTask> findAllByPage(Pageable pageable, String keyword, int deletedStatus);
 
-
+     void deleteTaskToUser(TaskToUser taskToUser);
 
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestTaskCommand.java

@@ -2,6 +2,7 @@ package com.mooctest.crowd.site.command;
 
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import lombok.Data;
+import org.springframework.beans.BeanUtils;
 
 import javax.validation.constraints.NotNull;
 import java.sql.Timestamp;
@@ -52,6 +53,7 @@ public class CrowdTestTaskCommand {
 
     public CrowdTestTask toCrowdTask(){
         CrowdTestTask crowdTestTask = new CrowdTestTask();
+        BeanUtils.copyProperties(this, crowdTestTask);
         crowdTestTask.setName(name);
         crowdTestTask.setDeadTime(datetime);
         crowdTestTask.setDescription(desc);

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

@@ -22,7 +22,7 @@ import static com.mooctest.crowd.site.data.vo.CrowdTestProjectVO.getDistanceTime
 @NoArgsConstructor
 @AllArgsConstructor
 public class CrowdTaskVO implements Serializable{
-    private long id;
+    private String id;
     private String code;
     private String projectId;
     private String title;
@@ -50,7 +50,7 @@ public class CrowdTaskVO implements Serializable{
     private String time_interval;
 
     public CrowdTaskVO(CrowdTestTask task){
-        id = task.getId();
+        id = task.getCode();
         code = task.getCode();
         projectId = task.getCrowdTestProjectCode();
         title = task.getName();

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

@@ -28,7 +28,7 @@ public class FullStatusVO {
             this.setStyle("warning");
         } else if (status.equals(AuthenticationStatus.isNotAuthenticated)) {
             this.setText("认证失败");
-            this.setStyle("info");
+            this.setStyle("danger");
         }
     }
 }

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

@@ -29,7 +29,7 @@ public class StatusVO {
             this.setStyle("warning");
         } else if (status.equals(AuthenticationStatus.isNotAuthenticated)){
             this.setText("认证失败");
-            this.setStyle("info");
+            this.setStyle("danger");
         }
     }
 

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

@@ -21,7 +21,7 @@ import java.util.List;
  * @Date: 2019.7.16 20:25
  */
 public interface ViewMediator {
-     List<CrowdTestProjectVO>   crowdTestProjects();
+    List<CrowdTestProjectVO> crowdTestProjects();
 
     List<CrowdTaskVO> findIndexTask();
 
@@ -81,10 +81,10 @@ public interface ViewMediator {
     List<CrowdTaskVO> findTaskByNameLike(String name);
 
 
-List<CrowdTestProjectVO>   AllByPage();
+    List<CrowdTestProjectVO> AllByPage();
 
     //热门项目
-    List<CrowdTestProjectVO>  hotCrowdTestProjects();
+    List<CrowdTestProjectVO> hotCrowdTestProjects();
 
 
     List<CrowdTestProjectVO> indexCrowdTestProjects();

+ 48 - 37
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -30,7 +30,6 @@ import org.codehaus.jettison.json.JSONException;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
@@ -559,17 +558,19 @@ public class WebMediatorImpl implements ViewMediator {
                     projectVO = changeApplicationType(projectVO);
                     return projectVO;
                 }).collect(Collectors.toList());
-        List<CrowdProjectVO> myProject=new ArrayList<>();
-        List<CrowdProjectVO> finishedProjects=new ArrayList<>();
-        for(int i=0;i<myProejcts.size();i++){
-            if(myProejcts.get(i).getStatus()<CrowdTestProjectStatus.HAS_FINISHED){
-                myProject.add(myProejcts.get(i));
-                myCrowdDTO.setMyProjects(myProject);
-            }else if(myProejcts.get(i).getStatus()>=CrowdTestProjectStatus.HAS_FINISHED){
-                finishedProjects.add(myProejcts.get(i));
-                myCrowdDTO.setFinishedProjects(finishedProjects);
-            }
-        }
+        myCrowdDTO.setMyProjects(myProejcts);
+//        List<CrowdProjectVO> myProject=new ArrayList<>();
+//        List<CrowdProjectVO> finishedProjects=new ArrayList<>();
+//        for(int i=0;i<myProejcts.size();i++){
+//            if(myProejcts.get(i).getStatus()<CrowdTestProjectStatus.HAS_FINISHED){
+//                myProject.add(myProejcts.get(i));
+//                myCrowdDTO.setMyProjects(myProject);
+//            }else if(myProejcts.get(i).getStatus()>=CrowdTestProjectStatus.HAS_FINISHED){
+//                finishedProjects.add(myProejcts.get(i));
+//                myCrowdDTO.setFinishedProjects(finishedProjects);
+//            }
+//        }
+
         //对于区域管理员crowdTestProjectPO -> crowdTestProjectPO.getStatus() > CrowdTestProjectStatus.HAS_RELEASED
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))) {
             List<CrowdTestProjectPO> crowdTestProjectPOList = projectDao.findByRegionalManagerIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
@@ -611,16 +612,17 @@ public class WebMediatorImpl implements ViewMediator {
         myCrowdDTO.setMyProjectNoticeCount(myProejcts.stream().filter(CrowdProjectVO::getNeedHandle).count());
         myCrowdDTO.setProcessProjectNoticeCount(myCrowdDTO.getHandlingProjects() == null ? 0 : myCrowdDTO
                 .getHandlingProjects().stream().filter(CrowdProjectVO::getNeedHandle).count());
-        if (user.getRoleList().stream().noneMatch(role -> role.getName().equals("evaluationAgency")))
+        if (!AuthCheckServiceImpl.isAgency(user))
             return myCrowdDTO;
         List<CrowdTestTask> allTaskOfAgency = null;
         List<CrowdTaskVO> unfinishedTasks = null;
         List<CrowdTaskVO> finishedTasks = null;
-        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency"))) {
+
+        // 测评机构或者测试人员
+        if (AuthCheckServiceImpl.isAgency(user)) {
             List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
             if (taskToUserPOS != null && taskToUserPOS.size() > 0) {
-                allTaskOfAgency = taskToUserPOS.stream().sorted(Comparator.comparing(TaskToUserPO::getAcceptTime))
-                        .map(taskToUserPO -> {
+                allTaskOfAgency = taskToUserPOS.stream().map(taskToUserPO -> {
                             CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
                             if (crowdTestTaskPO != null) {
                                 CrowdTestTask task = new CrowdTestTask();
@@ -634,10 +636,12 @@ public class WebMediatorImpl implements ViewMediator {
                         }).collect(Collectors.toList());
                 unfinishedTasks = allTaskOfAgency.stream()
                         .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+                        .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
                         .map(CrowdTaskVO::new).collect(Collectors.toList());
 
                 finishedTasks = allTaskOfAgency.stream()
                         .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+                        .sorted(Comparator.comparing(CrowdTestTask::getCreateTime))
                         .map(CrowdTaskVO::new).collect(Collectors.toList());
             }
         }
@@ -826,10 +830,9 @@ public class WebMediatorImpl implements ViewMediator {
             if (!report.isPresent())
                 throw new CrowdTestReportNotExistException();
             reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
-            if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+            if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED && taskToUserOptional.get().getIsCommitted() == 0)
                 reportDetailsDTO.setOperational(true);
         } else {
-            // 区域管理员
             throw new HttpBadRequestException("当前用户无法查看此报告!");
         }
 
@@ -844,16 +847,15 @@ public class WebMediatorImpl implements ViewMediator {
             throw new CrowdTestReportNotExistException();
         ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
         /*
-         如果该项目是已经完成的那么报告是不能修改的这边我在Vo上面加了一个属性Updated
+         如果该项目是已经完成或者已提交的那么报告是不能修改的这边我在Vo上面加了一个属性Updated
          */
-        if (project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED) {
+        if (project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED || project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED) {
             report.setUpdated(false);
         }
         reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report));
 
-        if (project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED && project.getRegionalManagerId().equals(userId)) {
+        if (project.getStatus() < CrowdTestProjectStatus.HAS_COMMITED && project.getRegionalManagerId().equals(userId)) {
             reportDetailsDTO.setOperational(true);
-
         }
         return reportDetailsDTO;
     }
@@ -889,7 +891,8 @@ public class WebMediatorImpl implements ViewMediator {
         if (userId == null) {
             taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
         } else {
-            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
+            User user = userRepo.getByID(userId);
+            taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), user));
             // 区域管理员视图
             List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
             if (userId.equals(project.getRegionalManagerId())) {
@@ -906,7 +909,7 @@ public class WebMediatorImpl implements ViewMediator {
                 }).collect(Collectors.toList());
             }
             // 测评机构视图
-            else if (userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))) {
+            else if (AuthCheckServiceImpl.isAgency(user)) {
 //                Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
 //                if(!taskToUserOptional.isPresent())
 //                    throw new HttpBadRequestException("当前用户没有接收此任务!");
@@ -1064,6 +1067,9 @@ public class WebMediatorImpl implements ViewMediator {
         List<CrowdTestProjectVO> authingList = new ArrayList<>();
         authingList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO ->{
             CrowdTestProject crowdTestProject = new CrowdTestProject();
+//            if(crowdTestProject.getDeadTime().getTime() < System.currentTimeMillis()){
+//
+//            }
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
             themeStatusService.updateStatus(crowdTestProject);
             return new CrowdTestProjectVO(crowdTestProject);
@@ -1158,7 +1164,7 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<CrowdTaskVO> crowdTaskVos(){
         List<CrowdTaskVO> authingList = new ArrayList<>();
-        authingList.addAll(taskDao.findindexTask().stream().map(crowdTestTaskPO -> {
+        authingList.addAll(taskDao.findindexTask().stream().filter(crowdTestTaskPO -> crowdTestTaskPO.getDeadTime().getTime() > System.currentTimeMillis()).map(crowdTestTaskPO -> {
             //根据code值查询出来该任务的type
             Optional<TestTypePO> serviceType = testTypeDao.findByCode(crowdTestTaskPO.getType());
             CrowdTestTask crowdTestTask = new CrowdTestTask();
@@ -1171,8 +1177,8 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public List<CrowdTaskVO> crowdTaskVosWaitingAccept() {
-        return taskDao.findAll().stream().filter(crowdTestTaskPO -> crowdTestTaskPO.getStatus() == CrowdTestTaskStatus.HAS_RELEASED
-                && crowdTestTaskPO.getDeadTime().getTime() > System.currentTimeMillis()).map(crowdTestTaskPO -> {
+        List<CrowdTestTaskPO> canAcceptTask = taskDao.findCanAcceptTask();
+        List<CrowdTaskVO> taskVOList = canAcceptTask.stream().filter(crowdTestTaskPO -> crowdTestTaskPO.getDeadTime().getTime() > System.currentTimeMillis()).map(crowdTestTaskPO -> {
             //根据code值查询出来该任务的type
             Optional<TestTypePO> serviceType = testTypeDao.findByCode(crowdTestTaskPO.getType());
             CrowdTestTask crowdTestTask = new CrowdTestTask();
@@ -1180,6 +1186,7 @@ public class WebMediatorImpl implements ViewMediator {
             crowdTestTask.setType(serviceType.get().getName());
             return new CrowdTaskVO(crowdTestTask);
         }).collect(Collectors.toList());
+        return taskVOList;
     }
 
     @Override
@@ -1576,11 +1583,6 @@ public class WebMediatorImpl implements ViewMediator {
             return taskOperationControl;
         }
 
-        //发包机构和发包人员视角
-        if (AuthCheckServiceImpl.isPart(user) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
-            return taskOperationControl;
-        }
-
         //区域管理员或系统管理员视角
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
                 || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
@@ -1622,13 +1624,18 @@ public class WebMediatorImpl implements ViewMediator {
                     }
                 } else {
                     // 未接收用户
-                    taskOperationControl.setReceive(true);
-                    if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
-                        // 定向的
-                        if (task.getDistributionType() == 0) {
-                            taskOperationControl.setReject(true);
+                    if(task.getFullStatus() == 1){
+                        taskOperationControl.noAll();
+                    }else{
+                        taskOperationControl.setReceive(true);
+                        if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
+                            // 定向的
+                            if (task.getDistributionType() == 0) {
+                                taskOperationControl.setReject(true);
+                            }
                         }
                     }
+
                 }
 
             } else if (task.getDistributionType() == 2) {
@@ -1641,6 +1648,10 @@ public class WebMediatorImpl implements ViewMediator {
                 }
             }
         }
+        //发包机构和发包人员视角
+        else if (AuthCheckServiceImpl.isPart(user) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
+            return taskOperationControl;
+        }
 
         System.out.println(taskOperationControl);
         return taskOperationControl;

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

@@ -14,12 +14,8 @@ import java.util.List;
  */
 public interface CrowdTaskService {
 
-List<CrowdTaskVO> findIndexCrwodTasks();
-
     List<CrowdTaskVO> findMoreHotTasks();
 
-    List<CrowdTaskVO> findIndexTask();
-
      List<CrowdTaskVO> findAll();
 
      List<CrowdTaskVO> findByNameLike(String name);

+ 0 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -139,10 +139,8 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public List<CrowdTestProjectVO> findByNameLike(String name) {
         if (name == null || name.trim().equals("")) {
-            System.out.println("进来进来");
             return viewMediator.AllByPage();
         }
-
         return viewMediator.findByNameLike(name);
 
     }

+ 25 - 44
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
-import com.mooctest.crowd.domain.dao.EvaluationAgencyDao;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
@@ -17,7 +16,6 @@ import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
-import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdTaskService;
@@ -27,7 +25,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -49,6 +46,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     CrowdTestProjectRepo projectRepo;
 
     @Autowired
+    CrowdTestTaskRepo crowdTestTaskRepo;
+
+    @Autowired
     CrowdTestTaskDao taskDao;
 
     @Autowired
@@ -58,24 +58,15 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     private ViewMediator viewMediator;
 
     @Autowired
-    private EvaluationAgencyDao agencyDao;
-
-    @Autowired
     private CommonRepo commonRepo;
 
-
-    @Override
-    public List<CrowdTaskVO> findIndexCrwodTasks() {
-        return  viewMediator.findIndexTask();
-    }
-
     @Override
-    public List<CrowdTaskVO> findMoreHotTasks(){
-           return  viewMediator.findMoreHotTasks();
+    public List<CrowdTaskVO> findMoreHotTasks() {
+        return viewMediator.findMoreHotTasks();
     }
 
     @Override
-    public List<CrowdTaskVO> findMoreHotTasksList(String keyword){
+    public List<CrowdTaskVO> findMoreHotTasksList(String keyword) {
         List<CrowdTaskVO> crowdTaskVOS = taskDao.findMoreHotTasksList().stream().map(crowdTestTaskPO -> {
             CrowdTestTask task = new CrowdTestTask();
             BeanUtils.copyProperties(crowdTestTaskPO, task);
@@ -83,35 +74,22 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
             task.setType(typeName);
             return new CrowdTaskVO(task);
         }).collect(Collectors.toList());
-        if(keyword != null && keyword != ""){
+        if (keyword != null && keyword != "") {
             crowdTaskVOS = crowdTaskVOS.stream().filter(crowdTaskVO -> crowdTaskVO.getTitle().contains(keyword)).collect(Collectors.toList());
         }
         return crowdTaskVOS;
     }
 
-
-    @Override
-    public List<CrowdTaskVO> findIndexTask() {
-        List<CrowdTaskVO> authingList = new ArrayList<>();
-        authingList.addAll(taskDao.findindexTask().stream().map(crowdTestProjectPO -> {
-            CrowdTestTask crowdTestTask = new CrowdTestTask();
-            BeanUtils.copyProperties(crowdTestProjectPO, crowdTestTask);
-            return new CrowdTaskVO(crowdTestTask);
-        }).collect(Collectors.toList()));
-        return authingList;
-    }
-
     @Override
     public List<CrowdTaskVO> findAll() {
-        return   viewMediator.crowdTaskVos();
+        return viewMediator.crowdTaskVos();
     }
 
     @Override
     public List<CrowdTaskVO> findByNameLike(String name) {
-        if(name==null||name.trim().equals("")){
-            log.info("没有关键字");
-            return  viewMediator.crowdTaskVos();
-        }else if(name!=null) {
+        if (name == null || name.trim().equals("")) {
+            return viewMediator.crowdTaskVosWaitingAccept();
+        } else if (name != null) {
             return viewMediator.findTaskByNameLike(name);
         }
         return null;
@@ -126,7 +104,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     public TaskDetailsDTO createTask(String projectCode, CrowdTestTaskCommand command, Long userId) {
         CrowdTestTask task = command.toCrowdTask(projectCode);
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ ProjectType.getCode(command.getType()));
+        String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-" + ProjectType.getCode(command.getType()));
         task.create(taskCode);
         project.addTask(task);
         projectRepo.saveCrowdTestProject(project);
@@ -141,15 +119,18 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
             throw new CrowdTestTaskNotExistException();
         if (task.get().getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
             throw new BaseException("禁止修改已结束的任务!");
+
         CrowdTestTask updateTask = command.toCrowdTask(projectCode);
+        // 定向任务被拒绝,更新时需要删除任务中的taskToUser  acceptedUserList
+        if (task.get().getDistributionType().equals(DistributeType.DIRECT.getId())) {
+            crowdTestTaskRepo.deleteTaskToUser(task.get().getAcceptedUserList().get(0));
+        }
+
         updateTask.setId(task.get().getId());
         updateTask.setCode(taskCode);
         updateTask.setCreateTime(task.get().getCreateTime());
-        updateTask.setRequirementFile(task.get().getRequirementFile());
-        updateTask.setStatus(task.get().getStatus());
-        if (updateTask.getDistributionType() == DistributeType.DIRECT.getId()){
-            updateTask.setParticipantCount(1);
-        }
+        updateTask.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
+        updateTask.update();
         project.removeTask(task.get());
         project.addTask(updateTask);
         projectRepo.saveCrowdTestProject(project);
@@ -158,7 +139,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Override
     public TaskSquareDTO getAllTasks() {
-       return viewMediator.renderTaskSquare();
+        return viewMediator.renderTaskSquare();
     }
 
     @Override
@@ -166,7 +147,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
         task.receive(userRepo.getByID(userId));
-        project.setJoinCount(project.getJoinCount()+1);
+        project.setJoinCount(project.getJoinCount() + 1);
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }
@@ -176,7 +157,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
         task.reject(userId);
-        project.setRestPrice(project.getRestPrice()+task.getQuotedPrice());
+//        project.setRestPrice(project.getRestPrice() + task.getQuotedPrice());
         projectRepo.saveCrowdTestProject(project);
     }
 
@@ -184,10 +165,10 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     public TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
-        if(userId.equals(project.getRegionalManagerId())){
+        if (userId.equals(project.getRegionalManagerId())) {
             // 区域管理员提交任务
             task.commitByRegionalManager();
-        }else if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))){
+        } else if (AuthCheckServiceImpl.isAgency(userRepo.getByID(userId))) {
             // 测评机构提交任务
             task.commitByAgency(taskCode, userId);
         }

+ 4 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java

@@ -39,24 +39,24 @@ public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
 
     /**
      * 任务和项目的模糊查询
+     *
      * @param searchConditionVO
      * @return
      */
     @Override
-    public ResponseVO findByNameLike(SearchConditionVO searchConditionVO){
-        Map<String, String> extraCondition = searchConditionVO.getColumnFilters() == null ? new HashMap<>() : this.getExtraCondition(searchConditionVO);
+    public ResponseVO findByNameLike(SearchConditionVO searchConditionVO) {
         Pageable pageable = this.getPageable(searchConditionVO);
         String keyword = searchConditionVO.getKeyword();
         if (searchConditionVO.getColumnFilters().get(0).getType().equals("project")) {
             List<CrowdTestProjectVO> list = crowdProjectService.findByNameLike(keyword);
             Page<CrowdTestProjectVO> projectVOPage = DataUtils.listToPage(list, pageable);
             return new ResponseVO<>(ServerCode.SUCCESS, projectVOPage);
-        } else if (searchConditionVO.getColumnFilters().get(0).getType().equals("task")){
+        } else if (searchConditionVO.getColumnFilters().get(0).getType().equals("task")) {
             List<CrowdTaskVO> taskVOList = crowdTaskService.findByNameLike(keyword);
             Page<CrowdTaskVO> crowdTaskVOPage = DataUtils.listToPage(taskVOList, pageable);
             return new ResponseVO(ServerCode.SUCCESS, crowdTaskVOPage);
         }
- return null;
+        return null;
     }
 
 

+ 0 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/ThemeStatusServiceImpl.java

@@ -6,13 +6,10 @@ import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.site.service.ThemeStatusService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.Optional;
 
 /**
@@ -31,7 +28,6 @@ public class ThemeStatusServiceImpl implements ThemeStatusService {
     public Integer updateStatus(CrowdTestProject crowdTestProject) {
 
         int status = 0;
-
         long curr = System.currentTimeMillis();
         if ((crowdTestProject.getDeadTime().before(new Timestamp(System.currentTimeMillis())))) {
            Optional<CrowdTestProjectPO> crowdTestProjectPO =crowdTestProjectDao.findById(crowdTestProject.getId());