Browse Source

修改角色视图

guo00guo 5 năm trước cách đây
mục cha
commit
e6d108e714

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java

@@ -389,6 +389,8 @@ public class UserRepo implements IUserRepo {
             }
         }
         userResult.setRoleList(roleResultList);
+
+        /*获取机构认证的信息*/
         userResult = getEvaluationInfo(userResult);
 
         /*获取个人认证的信息*/

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

@@ -30,9 +30,9 @@ public class CrowdTaskController{
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}", method = RequestMethod.GET)
     public TaskDetailsDTO getTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
-//        Object user = session.getAttribute("userId");
-//        if (user == null)
-//            return taskService.getTaskDetails(projectCode, taskCode, null);
+        Object user = session.getAttribute("userId");
+        if (user == null)
+            return taskService.getTaskDetails(projectCode, taskCode, null);
         Long userId = Long.parseLong((String)session.getAttribute("userId"));
         return taskService.getTaskDetails(projectCode, taskCode, userId);
     }

+ 5 - 9
site/src/main/java/com/mooctest/crowd/site/data/dto/CrowdTestSquareIndexDTO.java

@@ -1,9 +1,5 @@
 package com.mooctest.crowd.site.data.dto;
 
-import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
-import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
-import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
 import lombok.Data;
@@ -34,16 +30,16 @@ public class CrowdTestSquareIndexDTO {
      */
     public void initHotTaskAndProject(){
         List<CrowdTestProjectVO> projectVOS = this.crowdTestProjectVOs;
-
-        this.crowdTestProjectVOs = projectVOS.subList(0, 6);
+        this.crowdTestProjectVOs = projectVOS.size() <= 6 ? projectVOS : projectVOS.subList(0, 6);
+        
 
         //根据参与人数和创建时间进行排序
         List<CrowdTestProjectVO> list1 = projectVOS.stream().sorted(Comparator.comparing(CrowdTestProjectVO::getJoinCount).reversed()).collect(Collectors.toList());
         //截取前七条
-        this.hotCrowdTestProjectVOs = list1.subList(0, 7);
-        List<CrowdTaskVO> tasklist1 = crowdTestTaskVOS.subList(0, 6);
+        this.hotCrowdTestProjectVOs = list1.size() <= 7 ? list1 :list1.subList(0, 7);
+        List<CrowdTaskVO> tasklist1 = crowdTestTaskVOS.size() <= 6 ? crowdTestTaskVOS : crowdTestTaskVOS.subList(0, 6);
         List<CrowdTaskVO> tasklist2 = crowdTestTaskVOS.stream().sorted(Comparator.comparing(CrowdTaskVO::getAcceptedCount).reversed()).collect(Collectors.toList());
-        this.hotCrowdTaskVOs = tasklist2.subList(0, 7);
+        this.hotCrowdTaskVOs = tasklist2.size() <= 7 ? tasklist2 : tasklist2.subList(0, 7);
         this.crowdTestTaskVOS = tasklist1;
     }
 }

+ 9 - 7
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -1446,9 +1446,13 @@ public class WebMediatorImpl implements ViewMediator {
 
     private TaskOperationControl initTaskPermission(CrowdTestProject project, CrowdTestTask task, User user) {
         TaskOperationControl taskOperationControl = new TaskOperationControl();
-        if (user == null)
+
+        if (user == null || task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
             return taskOperationControl;
-        if (task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
+        }
+
+        //发包机构和发包人员视角
+        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.PARTY_AGENCY.getName()) || role.getName().equals(RoleType.PARTY_USER.getName())) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
             return taskOperationControl;
         }
 
@@ -1466,8 +1470,8 @@ public class WebMediatorImpl implements ViewMediator {
                 taskOperationControl.setConfirmFinish(false);
             }
         }
-        //评测机构视角
-        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency")) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
+        //评测机构和测评人员视角 //??? 已拒绝视图
+        else if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency") || role.getName().equals(RoleType.EVALUATION_USER.getName())) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
             if ((task.getDistributionType() == 0 && task.getEvaluationAgencyId().equals(user.getId()))
                     || (task.getDistributionType() == 2 && task.getStatus() >= CrowdTestTaskStatus.HAS_RECEIVED)) {
                 List<TaskToUser> acceptedUserList = task.getAcceptedUserList();
@@ -1511,9 +1515,7 @@ public class WebMediatorImpl implements ViewMediator {
                 }
             }
         }
-        if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
-            taskOperationControl.noAll();
-        }
+
         System.out.println(taskOperationControl);
         return taskOperationControl;
     }

+ 6 - 32
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -7,7 +7,6 @@ import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.Excel2ProjectException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
-import com.mooctest.crowd.domain.model.RolePO;
 import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.model.UserToRolePO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
@@ -133,37 +132,11 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     @Override
     public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command, long userId) {
-        boolean canCreateProject = false;//当前用户是否能接包
         // 获取用户所有角色
-        List<UserToRolePO> usertoRole = userToRoleDao.findByUserId(userId);
-        //用户所有角色PO
-        List<RolePO> rolePOS = new ArrayList<>();//用户所有角色列表
-        //用户所有角色id
-        long rolIdArray[] = new long[usertoRole.size()];
-        for (int i = 0; i < rolIdArray.length; i++) {
-            rolIdArray[i] = usertoRole.get(i).getRoleId();
-            Optional<RolePO> role = roleDao.findById(rolIdArray[i]);
-            rolePOS.add(role.get());
-        }
-        //获取用户角色列表所有的角色name;
-        List<String> roleNames = new ArrayList<>();
-        for (int i = 0; i < rolePOS.size(); i++) {
-            roleNames.add(rolePOS.get(i).getName());
-        }
-
-        for (int i = 0; i < roleNames.size(); i++) {
-            if (roleNames.get(i).equals("RegionalManager") || roleNames.get(i).equals("SystemAdministrator")
-                    || roleNames.get(i).equals("enterpriseUser") || roleNames.get(i).equals("partyUser") || roleNames.get(i).equals("partyAgency")) {
-                canCreateProject = true;
-            } else {
-                canCreateProject = false;
-                throw new BaseException("用户权限不足无法创建项目");
-
-            }
-        }
-
-
-        if (canCreateProject) {
+        List<UserToRolePO> userToRole = userToRoleDao.findByUserId(userId);
+        if(userToRole.stream().anyMatch(userToRolePO -> userToRolePO.getRoleId().equals(RoleType.PARTY_USER.getId()) ||
+                userToRolePO.getRoleId().equals(RoleType.PARTY_AGENCY.getId()) || userToRolePO.getRoleId().equals(RoleType.AGENCY.getId()) ||
+                userToRolePO.getRoleId().equals(RoleType.REGIONAL_MANAGER.getId()) || userToRolePO.getRoleId().equals(RoleType.SYSTEM_ADMIN.getId()))){
             CrowdTestProject project = command.toCrowdProject();
             project.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
             log.info("\n" + project.toString() + "\n");
@@ -177,8 +150,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
             themeSchedulerService.createNewThemeScheduler(project);
             return projectDetailsDTO;
+        }else{
+            throw new BaseException("用户权限不足无法创建项目");
         }
-        return null;
     }
 
     @Override