Jelajahi Sumber

修改机构和发包用户鉴权操作

guo00guo 5 tahun lalu
induk
melakukan
80cfc87594

+ 0 - 6
core/src/main/java/com/mooctest/crowd/domain/repository/EvaluationAgencyRepo.java

@@ -11,7 +11,6 @@ import com.mooctest.crowd.domain.model.EvaluationAgencyResourcePO;
 import com.mooctest.crowd.domain.util.Converter;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
@@ -41,9 +40,6 @@ public class EvaluationAgencyRepo implements IEvaluationAgencyRepo {
     @Autowired
     private EvaluationAgencyDao evaluationAgencyDao;
 
-    @Value("${agency}")
-    private String agencyId;
-
     @Override
     public EvaluationAgency findAgencyById(Long id){
         Optional<EvaluationAgencyPO> evaluationAgencyPO = evaluationAgencyDao.findById(id);
@@ -133,8 +129,6 @@ public class EvaluationAgencyRepo implements IEvaluationAgencyRepo {
                             cb.like(a.<String>get("evaluationAgencyName"), "%" + StringUtils.trim(keyword) + "%")
                     );
                 }
-                EvaluationAgency agencyById = findAgencyById(Long.parseLong(agencyId));
-                predicate.getExpressions().add(cb.notEqual(a.get("evaluationAgencyName"), agencyById.getEvaluationAgencyName()));
                 predicate.getExpressions().add(cb.equal(a.get("isDeleted"), deletedStatus));
                 predicate.getExpressions().add(cb.equal(a.get("isAuthentication"), AuthenticationStatus.isAuthenticated));
                 return predicate;

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

@@ -24,6 +24,7 @@ import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.ThemeStatusService;
 import com.mooctest.crowd.site.service.ThemeStatusTaskService;
+import com.mooctest.crowd.site.service.impl.AuthCheckServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.codehaus.jettison.json.JSONException;
 import org.jetbrains.annotations.NotNull;
@@ -117,8 +118,6 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private FieldDao fieldDao;
 
-    @Value("${agency}")
-    private String agencyId;
     @Autowired
     private UserToRoleDao userToRoleDao;
 
@@ -811,13 +810,14 @@ public class WebMediatorImpl implements ViewMediator {
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();
         System.out.println("renderTaskReportDetails userID: " + userId);
+        User user = userRepo.getByID(userId);
         ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
         if (userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())) {
             // 区域管理员
             reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(Converter.convert(CrowdTestReport.class, crowdTestReportDao.findByCodeAndIsDeleted(reportCode, DeletedStatus.isNotDeleted))));
             if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
                 reportDetailsDTO.setOperational(false);
-        } else if (!userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER))) {
+        } else if (AuthCheckServiceImpl.isAgency(user)) {
             // 测评机构
             Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
             if (!taskToUserOptional.isPresent())
@@ -978,14 +978,13 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<EvaluationAgencyVO> renderAgencyList() {
         List<EvaluationAgencyVO> agencyList = new ArrayList<>();
-        EvaluationAgency agencyTemplate = evaluationAgencyRepo.findAgencyById(Long.parseLong(agencyId));
         agencyDao.findAll().forEach(evaluationAgencyPO -> {
             EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
             agencyVO.setId(evaluationAgencyPO.getUserId());
             agencyVO.setEvaluationAgencyName(evaluationAgencyPO.getEvaluationAgencyName());
             agencyList.add(agencyVO);
         });
-        return agencyList.stream().filter(agency -> !agency.getEvaluationAgencyName().equals(agencyTemplate.getEvaluationAgencyName())).collect(Collectors.toList());
+        return agencyList.stream().collect(Collectors.toList());
     }
 
     @Override
@@ -1577,7 +1576,7 @@ public class WebMediatorImpl implements ViewMediator {
         }
 
         //发包机构和发包人员视角
-        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) {
+        if (AuthCheckServiceImpl.isPart(user) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
             return taskOperationControl;
         }
 
@@ -1595,8 +1594,9 @@ public class WebMediatorImpl implements ViewMediator {
                 taskOperationControl.setConfirmFinish(false);
             }
         }
-        //评测机构和测评人员视角 //??? 已拒绝视图
-        else if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency") || role.getName().equals(RoleType.EVALUATION_USER.getName())) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
+        // TODO 已拒绝视图
+        //评测机构和测评人员视角
+        else if (AuthCheckServiceImpl.isAgency(user) && 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();

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

@@ -25,7 +25,6 @@ import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.AgencyService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -65,9 +64,6 @@ public class AgencyServiceImpl implements AgencyService {
     @Autowired
     private UserTaskCountDao userTaskCountDao;
 
-    @Value("${agency}")
-    private String agencyId;
-
     @Override
     public EvaluationAgencyVO getDetailById(long agencyId) {
         /*

+ 27 - 8
site/src/main/java/com/mooctest/crowd/site/service/impl/AuthCheckServiceImpl.java

@@ -2,7 +2,6 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.domainobject.User;
 import com.mooctest.crowd.site.data.enums.RoleType;
-import com.mooctest.crowd.site.service.AuthCheckService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -13,19 +12,39 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @Service
-public class AuthCheckServiceImpl implements AuthCheckService {
+public class AuthCheckServiceImpl{
 
-    @Override
-    public Boolean isAgency(User user) {
-        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName())) || user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.EVALUATION_USER.getName()))){
+    public static Boolean isAgency(User user) {
+        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()) ||
+                role.getName().equals(RoleType.EVALUATION_USER.getName()))){
             return true;
         }
         return false;
     }
 
-    @Override
-    public Boolean isPart(User user) {
-        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.PARTY_AGENCY.getName())) || user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.PARTY_USER.getName()))){
+    public static Boolean isPart(User user) {
+        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.PARTY_AGENCY.getName()) ||
+                role.getName().equals(RoleType.PARTY_USER.getName()))){
+            return true;
+        }
+        return false;
+    }
+
+    public static Boolean canCreateProject(User user) {
+        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()) ||
+                role.getName().equals(RoleType.EVALUATION_USER.getName()) ||
+                role.getName().equals(RoleType.SYSTEM_ADMIN.getName()) ||
+                role.getName().equals(RoleType.REGIONAL_MANAGER.getName()))){
+            return true;
+        }
+        return false;
+    }
+
+    public static Boolean canAcceptTask(User user) {
+        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.PARTY_AGENCY.getName()) ||
+                role.getName().equals(RoleType.PARTY_USER.getName()) ||
+                role.getName().equals(RoleType.SYSTEM_ADMIN.getName()) ||
+                role.getName().equals(RoleType.REGIONAL_MANAGER.getName()))){
             return true;
         }
         return false;

+ 2 - 6
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -17,7 +17,6 @@ import com.mooctest.crowd.site.data.response.ServerCode;
 import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.mediator.impl.WebMediatorImpl;
-import com.mooctest.crowd.site.service.AuthCheckService;
 import com.mooctest.crowd.site.service.CommonService;
 import com.mooctest.crowd.site.util.DataUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -67,9 +66,6 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private WebMediatorImpl webMediator;
 
-    @Autowired
-    private AuthCheckService authCheckService;
-
 //    @Autowired
 //    private CacheUtil cacheUtil;
 
@@ -213,7 +209,7 @@ public class CommonServiceImpl implements CommonService {
     @Override
     public Boolean checkCreateProject(Long userId) {
         User user = userRepo.getByID(userId);
-        Boolean isPart = authCheckService.isPart(user);
+        Boolean isPart = AuthCheckServiceImpl.canCreateProject(user);
         if(!isPart){
             throw new HaveNotPartAuthException();
         }
@@ -223,7 +219,7 @@ public class CommonServiceImpl implements CommonService {
     @Override
     public Boolean checkAcceptTask(Long userId) {
         User user = userRepo.getByID(userId);
-        Boolean isAgency = authCheckService.isAgency(user);
+        Boolean isAgency = AuthCheckServiceImpl.canAcceptTask(user);
         if(!isAgency){
             throw new HaveNotAgencyAuthException();
         }

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

@@ -6,9 +6,9 @@ import com.mooctest.crowd.domain.domainobject.*;
 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.exception.HaveNotPartAuthException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import com.mooctest.crowd.domain.model.UserTaskCountPO;
-import com.mooctest.crowd.domain.model.UserToRolePO;
 import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
@@ -176,10 +176,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command, long userId) {
         // 获取用户所有角色
-        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()))) {
+//        List<UserToRolePO> userToRole = userToRoleDao.findByUserId(userId);
+        User user = userRepo.getByID(userId);
+        if (AuthCheckServiceImpl.canCreateProject(user)) {
             CrowdTestProject project = command.toCrowdProject();
             project.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
             log.info("\n" + project.toString() + "\n");
@@ -194,7 +193,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             themeSchedulerService.createNewThemeScheduler(project);
             return projectDetailsDTO;
         } else {
-            throw new BaseException("用户权限不足无法创建项目,需要认证为发包用户或者发包机构!");
+            throw new HaveNotPartAuthException();
         }
     }
 

File diff ditekan karena terlalu besar
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini