Преглед изворни кода

Merge branch 'feature-V2.0' of http://git.mooctest.com/crowd-2019/crowd-test-service-backend into feature-V2.0

xuxuan пре 5 година
родитељ
комит
f6ad6011b6

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/HaveNotAgencyAuthException.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.exception;
+
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019-07-30 09:15
+ */
+@NoArgsConstructor
+public class HaveNotAgencyAuthException extends BaseException {
+    public HaveNotAgencyAuthException(String msg){
+        super(msg);
+    }
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/HaveNotPartAuthException.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.exception;
+
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019-07-30 09:15
+ */
+@NoArgsConstructor
+public class HaveNotPartAuthException extends BaseException {
+    public HaveNotPartAuthException(String msg){
+        super(msg);
+    }
+}

+ 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;

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 5 - 1
site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java

@@ -49,7 +49,11 @@ public class ExceptionAdvice {
             return "资源不存在";
         } else if (e instanceof UserTaskCountNoExistException) {
             return "当前用户没有参与接包";
-        } else
+        } else if (e instanceof HaveNotAgencyAuthException){
+            return "您未认证为接包用户,请认证后操作。";
+        } else if (e instanceof HaveNotPartAuthException){
+            return "您未认证为发包用户,请认证后操作。";
+        }  else
             return e.getMessage();
     }
 

+ 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();

+ 11 - 0
site/src/main/java/com/mooctest/crowd/site/service/AuthCheckService.java

@@ -0,0 +1,11 @@
+package com.mooctest.crowd.site.service;
+
+
+import com.mooctest.crowd.domain.domainobject.User;
+
+public interface AuthCheckService {
+
+    Boolean isAgency(User user);
+
+    Boolean isPart(User user);
+}

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

@@ -49,4 +49,8 @@ public interface CommonService {
     DataDTO getAllData();
 
     List<UserTaskCountVO> getCount();
+
+    Boolean checkCreateProject(Long userId);
+
+    Boolean checkAcceptTask(Long userId);
 }

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

@@ -23,7 +23,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) {
         /*

+ 52 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/AuthCheckServiceImpl.java

@@ -0,0 +1,52 @@
+package com.mooctest.crowd.site.service.impl;
+
+import com.mooctest.crowd.domain.domainobject.User;
+import com.mooctest.crowd.site.data.enums.RoleType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author:xx
+ * @date:2020/7/8
+ * @description:
+ */
+@Slf4j
+@Service
+public class AuthCheckServiceImpl{
+
+    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;
+    }
+
+    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.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;
+    }
+
+    public static Boolean canAcceptTask(User user) {
+        if(user.getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()) ||
+                role.getName().equals(RoleType.ENTERPRISE_USER.getName()) ||
+                role.getName().equals(RoleType.SYSTEM_ADMIN.getName()) ||
+                role.getName().equals(RoleType.REGIONAL_MANAGER.getName()))){
+            return true;
+        }
+        return false;
+    }
+}

+ 23 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -3,6 +3,9 @@ package com.mooctest.crowd.site.service.impl;
 import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
 import com.mooctest.crowd.domain.dao.ResourceTypeDao;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.User;
+import com.mooctest.crowd.domain.exception.HaveNotAgencyAuthException;
+import com.mooctest.crowd.domain.exception.HaveNotPartAuthException;
 import com.mooctest.crowd.domain.model.ResourceTypePO;
 import com.mooctest.crowd.domain.repository.*;
 import com.mooctest.crowd.site.constants.CommonConstant;
@@ -203,6 +206,26 @@ public class CommonServiceImpl implements CommonService {
         return viewMediator.getCount();
     }
 
+    @Override
+    public Boolean checkCreateProject(Long userId) {
+        User user = userRepo.getByID(userId);
+        Boolean isPart = AuthCheckServiceImpl.canCreateProject(user);
+        if(!isPart){
+            throw new HaveNotPartAuthException();
+        }
+        return isPart;
+    }
+
+    @Override
+    public Boolean checkAcceptTask(Long userId) {
+        User user = userRepo.getByID(userId);
+        Boolean isAgency = AuthCheckServiceImpl.canAcceptTask(user);
+        if(!isAgency){
+            throw new HaveNotAgencyAuthException();
+        }
+        return isAgency;
+    }
+
     Pageable getPageable(SearchConditionVO searchConditionVO) {
         int activePage = searchConditionVO.getActivePage() == 0 ? 1 : searchConditionVO.getActivePage();
         Sort sort = new Sort(Sort.Direction.DESC, "id");

+ 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();
         }
     }
 

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/OSSUploadServiceImpl.java

@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import java.awt.*;
+import java.util.UUID;
 
 /**
  * @author: Diors.Po
@@ -29,7 +30,7 @@ public class OSSUploadServiceImpl implements UploadService {
 
     @Override
     public String uploadImage(MultipartFile file, Long userId) {
-        String fileName = UploadType.IMAGE+userId+"_"
+        String fileName = UploadType.IMAGE+userId+"_"+UUID.randomUUID()+"_"
                 +System.currentTimeMillis()+""
                 +file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."), file.getOriginalFilename().length());
         return doUpload(fileName, file);

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


Неке датотеке нису приказане због велике количине промена