Browse Source

Merge branch 'ReleaseForCofortest' into 'master'

Release for cofortest

See merge request crowd-2019/crowd-test-service-backend!205
郭超 3 years ago
parent
commit
705fdad930

+ 15 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ProvinceDao.java

@@ -0,0 +1,15 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ProvincePO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+
+@Transactional
+public interface ProvinceDao extends PagingAndSortingRepository<ProvincePO, Long>, JpaSpecificationExecutor<ProvincePO> {
+
+    List<ProvincePO> findAll();
+}

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

@@ -28,6 +28,6 @@ public interface RegionalManagerToRegionalDao extends PagingAndSortingRepository
 
     void deleteAll(Iterable<? extends RegionalManagerToRegionalPO> iterable);
 
-    RegionalManagerToRegionalPO save(RegionalManagerToRegionalPO regionalManagerToRegionalPO);
+    //RegionalManagerToRegionalPO save(RegionalManagerToRegionalPO regionalManagerToRegionalPO);
 
 }

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResourceTokenDao.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EndPointPO;
+import com.mooctest.crowd.domain.model.ResourceTokenPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+
+@Transactional
+public interface ResourceTokenDao extends PagingAndSortingRepository<ResourceTokenPO, Long> ,CrudRepository<ResourceTokenPO, Long>, JpaRepository<ResourceTokenPO, Long> ,JpaSpecificationExecutor<EndPointPO>{
+    Optional<ResourceTokenPO> findByProjectCodeAndTaskCodeAndUserId(String projectCode, String taskCode, Long userId);
+}

+ 5 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserToRoleDao.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.UserToRolePO;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
 
 import javax.transaction.Transactional;
 import java.util.List;
@@ -18,4 +20,7 @@ public interface UserToRoleDao extends CrudRepository<UserToRolePO,Long> {
     List<UserToRolePO> findByRoleId(Long roleId);
 
     UserToRolePO save(UserToRolePO userToRolePO);
+
+    @Query(value="SELECT user_to_role.UTR_R_ID from user_to_role WHERE user_to_role.UTR_U_ID=?",nativeQuery = true)
+    List<Long> findRoleId(@Param("userId") Long userId);
 }

+ 23 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ResourceToken.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResourceToken {
+    private Long id;
+    private String projectCode;
+    private String taskCode;
+    private Long userId;
+    private String token;
+
+    public ResourceToken(String projectCode, String taskCode, Long userId, String token) {
+        this.projectCode = projectCode;
+        this.taskCode = taskCode;
+        this.userId = userId;
+        this.token = token;
+    }
+}

+ 29 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ResourceTokenPO.java

@@ -0,0 +1,29 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+
+@Data
+@Entity
+@Table(name = "resource_token")
+public class ResourceTokenPO {
+
+    @Id
+    @Column(name = "RT_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "RT_P_CODE")
+    private String projectCode;
+
+    @Column(name = "RT_T_CODE")
+    private String taskCode;
+
+    @Column(name = "RT_U_ID")
+    private Long userId;
+
+    @Column(name = "RT_TOKEN")
+    private String token;
+}

+ 4 - 4
site/src/main/java/com/mooctest/crowd/site/command/ApplyAgencyAuthCommand.java

@@ -52,10 +52,10 @@ public class ApplyAgencyAuthCommand{
     private List<AgencyResourceCommand> evaluationAgencyResourceList;
 
     public EvaluationAgency toAgency(){
-        String reg = "\\d{15}(\\d{2}[0-9xX])?";
-        if(!IdCardNum.matches(reg)){
-            throw new HttpBadRequestException("身份证信息不合法");
-        }
+        //String reg = "\\d{15}(\\d{2}[0-9xX])?";
+//        if(!IdCardNum.matches(reg)){
+//            throw new HttpBadRequestException("身份证信息不合法");
+//        }
         EvaluationAgency agency = UserFactory.defaultAgency();
         BeanUtils.copyProperties(this, agency, "evaluationAgencyAbilityList", "evaluationAgencyResourceList");
         if( this.evaluationAgencyAbilityList != null&&this.evaluationAgencyAbilityList.size() > 0 ){

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java

@@ -7,6 +7,9 @@ import com.mooctest.crowd.site.annotation.LoginRequired;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+import com.mooctest.crowd.site.data.dto.UserProjectDTO;
+import com.mooctest.crowd.site.data.response.ResponseVO;
+import com.mooctest.crowd.site.data.response.ServerCode;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import com.mooctest.crowd.site.util.FileUtil;
@@ -219,4 +222,19 @@ public class CrowdProjectController{
     public  List<CrowdTestProject>  getByProject(){
         return projectService.getByProject();
     }
+
+    /**
+     * 获取指定项目任务的详情接口
+     * @param projectCode
+     * @return
+     */
+    @RequestMapping(value = "/api/project/{projectCode}/task/{taskCode}/user/{userId}/token/{token}", method = RequestMethod.GET)
+    public ResponseVO<UserProjectDTO> getProjectByToken(@PathVariable("projectCode") String projectCode,
+                                                        @PathVariable("taskCode") String taskCode,
+                                                        @PathVariable("userId") String userIdStr,
+                                                        @PathVariable("token") String token,
+                                                        HttpSession session){
+        Long userId = Long.parseLong(userIdStr);
+        return new ResponseVO<>(ServerCode.SUCCESS, projectService.getProjectByToken(projectCode, taskCode, userId, token));
+    }
 }

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

@@ -138,4 +138,18 @@ public class CrowdTaskController{
     public ResponseVO<List<JabaResult>> getTaskWord(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
         return new ResponseVO<>(ServerCode.SUCCESS, taskService.getTaskWord(projectCode, taskCode));
     }
+
+    /**
+     * 获取project task user对应的中认token
+     * @return
+     */
+    @LoginRequired
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/token", method = RequestMethod.GET)
+    public ResponseVO<String> getToken(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
+        Object user = session.getAttribute("userId");
+        if (user == null)
+            return new ResponseVO<>(ServerCode.ERROR, "未登录,请先登录");
+        Long userId = Long.parseLong((String)session.getAttribute("userId"));
+        return new ResponseVO<>(ServerCode.SUCCESS, taskService.getToken(projectCode, taskCode, userId));
+    }
 }

+ 16 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/UserProjectDTO.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.site.data.dto;
+
+import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
+import com.mooctest.crowd.site.data.vo.UserVO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class UserProjectDTO implements Serializable {
+    private UserVO userVO;
+    private CrowdProjectVO projectDetails;
+    private List<CrowdTaskVO> taskList;
+}

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

@@ -701,7 +701,7 @@ public class WebMediatorImpl implements ViewMediator {
                         }).filter(Objects::nonNull).collect(Collectors.toList());
                 if(allTaskOfAgency != null && allTaskOfAgency.size() > 0){
                     unfinishedTasks = allTaskOfAgency.stream()
-                            .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+                            .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && (crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED || crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT))
                             .sorted(Comparator.comparing(CrowdTestTask::getCreateTime).reversed())
                             .map(CrowdTaskVO::new).collect(Collectors.toList());
 
@@ -1704,21 +1704,30 @@ public class WebMediatorImpl implements ViewMediator {
             //区域管理员或系统管理员视角
             if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
                     || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
+                List<TaskToUser> acceptedUserList = task.getAcceptedUserList();
+                Optional<TaskToUser> taskToUserOptional = acceptedUserList.stream().filter(taskToUser -> taskToUser.getUserId().equals(user.getId())).findFirst();
                 if (task.getStatus() < CrowdTestTaskStatus.HAS_RECEIVED) {
+
                     taskOperationControl.setUpdate(true);
                     taskOperationControl.setTaskRecommend(true);
+                    taskOperationControl.setReceive(true);
                     // 具有配置项,需要在第三方进行填写报告
                     if(endPointPOOptional.isPresent()){
                         taskOperationControl.setWriteReport(true);
                     }
-                }
-                else{
+                }else if(task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED&&taskToUserOptional.isPresent()){
+                        taskOperationControl.setUploadReport(true);
+                        if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 0) {
+                            taskOperationControl.setFinish(true);
+                        } else if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 1) {
+                        taskOperationControl.setFinish(false);
+                        taskOperationControl.setUploadReport(false);
+                    }
+                }else{
                     taskOperationControl.setTaskRecommend(true);
                     if ((task.getParticipantHasCommittedCount() == task.getAcceptedCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
                         taskOperationControl.setConfirmFinish(true);
                     }
-
-                    taskOperationControl.setFinish(false);
                     if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
                         taskOperationControl.setConfirmFinish(false);
                         taskOperationControl.setTaskRecommend(false);

+ 3 - 0
site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java

@@ -4,6 +4,7 @@ import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+import com.mooctest.crowd.site.data.dto.UserProjectDTO;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
@@ -60,4 +61,6 @@ public interface CrowdProjectService {
     boolean modifyAllData();
 
     List<CrowdTestProject> getByProject();
+
+    UserProjectDTO getProjectByToken(String projectCode, String taskCode, Long userId, String token);
 }

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

@@ -44,4 +44,6 @@ public interface CrowdTaskService {
     TaskDetailsDTO addToken(String projectCode, String taskCode, Long userId, String token);
 
     List<JabaResult> getTaskWord(String projectCode, String taskCode);
+
+    String getToken(String projectCode, String taskCode, Long userId);
 }

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

@@ -5,6 +5,8 @@ import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.EvaluationAgencyNotExistException;
 import com.mooctest.crowd.domain.exception.UserNotExistException;
+import com.mooctest.crowd.domain.model.ProvincePO;
+import com.mooctest.crowd.domain.model.RegionalManagerToRegionalPO;
 import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
@@ -25,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -62,6 +65,10 @@ public class AgencyServiceImpl implements AgencyService {
     private EvaluationAgencyDao agencyDao;
     @Autowired
     private UserTaskCountDao userTaskCountDao;
+    @Autowired
+    private RegionalManagerToRegionalDao regionalManagerToRegionalDao;
+    @Autowired
+    private ProvinceDao provinceDao;
 
     @Override
     public EvaluationAgencyVO getDetailById(long userId) {
@@ -246,6 +253,8 @@ public class AgencyServiceImpl implements AgencyService {
         if (user.getEvaluationAgency().getType().contains("0") && user.getEvaluationAgency().getType().contains("1")) {
             user.getRoleList().add(userRepo.getRole(RoleType.PARTY_AGENCY.getName()));
             user.getRoleList().add(userRepo.getRole(RoleType.AGENCY.getName()));
+            user.getRoleList().add(userRepo.getRole(RoleType.REGIONAL_MANAGER.getName()));
+            this.addRegionalManager(userId);
         }
         //1是认证为研发机构0是认证为评测机构
         else if (user.getEvaluationAgency().getType().contains("1")) {
@@ -253,10 +262,25 @@ public class AgencyServiceImpl implements AgencyService {
         } else if (user.getEvaluationAgency().getType().contains("0")) {
             //给接包角色
             user.getRoleList().add(userRepo.getRole(RoleType.AGENCY.getName()));
+            user.getRoleList().add(userRepo.getRole(RoleType.REGIONAL_MANAGER.getName()));
+            this.addRegionalManager(userId);
         }
         return new AgencyVO(userRepo.saveUser(user).getEvaluationAgency());
     }
 
+    private void addRegionalManager(Long userId) {
+        List<ProvincePO> provinceList= provinceDao.findAll();
+        for(int i=0;i<provinceList.size();i++){
+            RegionalManagerToRegionalPO  regionalManagerToRegionalPO = new RegionalManagerToRegionalPO();
+            regionalManagerToRegionalPO.setUserId(userId);
+            regionalManagerToRegionalPO.setProvince(provinceList.get(i).getName());
+            regionalManagerToRegionalPO.setCity("*");
+            regionalManagerToRegionalPO.setIsDeleted(0);
+            regionalManagerToRegionalPO.setCreateTime(new Timestamp(System.currentTimeMillis()));
+            regionalManagerToRegionalDao.save(regionalManagerToRegionalPO);
+        }
+    }
+
     @Override
     public AgencyVO rejectAuth(Long userId, String explain) {
         User user = userRepo.getByID(userId);

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

@@ -8,6 +8,7 @@ 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.ResourceTokenPO;
 import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
@@ -16,11 +17,10 @@ import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+import com.mooctest.crowd.site.data.dto.UserProjectDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
 import com.mooctest.crowd.site.data.enums.RoleType;
-import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
-import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
-import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
+import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.OperationMediator;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdProjectService;
@@ -88,6 +88,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Autowired
     private UserTaskCountDao userTaskCountDao;
 
+	@Autowired
+	private ResourceTokenDao resourceTokenDao;
+
     @Autowired
     private ThemeSchedulerService themeSchedulerService;
 
@@ -486,7 +489,27 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         return projectRepo.getByProject();
     }
 
-    private List<CrowdTestProject> transferExcel2Projects(MultipartFile file) {
+	@Override
+	public UserProjectDTO getProjectByToken(String projectCode, String taskCode, Long userId, String token) {
+		Optional<ResourceTokenPO> resourceTokenPOOptional = resourceTokenDao.findByProjectCodeAndTaskCodeAndUserId(projectCode, taskCode, userId);
+		if(resourceTokenPOOptional.isPresent()){
+			if(!resourceTokenPOOptional.get().getToken().equals(token)){
+				throw new BaseException("token 无效");
+			}
+		}else{
+			throw new BaseException("token 无效");
+		}
+		UserProjectDTO userProjectDTO = new UserProjectDTO();
+		User user = userRepo.getByIDJustInfo(userId);
+		userProjectDTO.setUserVO(new UserVO(user));
+		ProjectDetailsDTO projectDetails = this.getProjectDetails(projectCode, userId);
+		userProjectDTO.setProjectDetails(projectDetails.getProjectDetails());
+		List<CrowdTaskVO> taskVOS = projectDetails.getTaskList().stream().filter(crowdTaskVO -> crowdTaskVO.getCode().equals(taskCode)).collect(Collectors.toList());
+		userProjectDTO.setTaskList(taskVOS);
+		return userProjectDTO;
+	}
+
+	private List<CrowdTestProject> transferExcel2Projects(MultipartFile file) {
         List<String> logList = new ArrayList<>();
         List<CrowdTestProject> projects = new ArrayList<>();
         Workbook workbook = null;

+ 31 - 8
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -2,18 +2,21 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
 import com.mooctest.crowd.domain.dao.EndPointDao;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
-import com.mooctest.crowd.domain.domainobject.DistributeType;
+import com.mooctest.crowd.domain.dao.ResourceTokenDao;
+import com.mooctest.crowd.domain.dao.UserToRoleDao;
+import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.exception.UnauthorizedException;
 import com.mooctest.crowd.domain.model.EndPointPO;
+import com.mooctest.crowd.domain.model.ResourceTokenPO;
+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.CrowdTestTaskRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.util.Converter;
+import com.mooctest.crowd.domain.util.MD5Base64Util;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
@@ -47,6 +50,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     private EndPointDao endPointDao;
 
     @Autowired
+    private ResourceTokenDao resourceTokenDao;
+
+    @Autowired
     CrowdTestProjectRepo projectRepo;
 
     @Autowired
@@ -64,6 +70,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Autowired
     private CommonRepo commonRepo;
 
+    @Autowired
+    private UserToRoleDao userToRoleDao;
+
     @Override
     public List<CrowdTaskVO> findMoreHotTasks() {
         return viewMediator.findMoreHotTasks();
@@ -159,9 +168,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     public TaskDetailsDTO acceptTask(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         // 项目发起者
-        if (project.getUserId().equals(userId)) {
-            throw new BaseException("您是项目发起者,不可接收自己项目下的测试任务!");
-        }
+        //if (project.getUserId().equals(userId)) {
+            //throw new BaseException("您是项目发起者,不可接收自己项目下的测试任务!");
+        //}
         CrowdTestTask task = project.getTask(taskCode);
         // 是否为第一个接包的人标识
         boolean isFirstAcceptPeople = false;
@@ -196,7 +205,8 @@ 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())) {
+        List<Long> roleList= userToRoleDao.findRoleId(userId);
+        if (userId.equals(project.getRegionalManagerId())&&!roleList.contains(2L)) {
             // 区域管理员提交任务
             task.commitByRegionalManager();
         } else if (AuthCheckServiceImpl.isAgency(userRepo.getByID(userId))) {
@@ -236,5 +246,18 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         return TFIDFAnalyzer.getInstance().extractTagsList(taskDetails.getCrowdTaskVO().getDescription(), 20);
     }
 
+    @Override
+    public String getToken(String projectCode, String taskCode, Long userId) {
+        Optional<ResourceTokenPO> resourceTokenPOOptional = resourceTokenDao.findByProjectCodeAndTaskCodeAndUserId(projectCode, taskCode, userId);
+        if(resourceTokenPOOptional.isPresent()){
+            return resourceTokenPOOptional.get().getToken();
+        }else{
+            String token = MD5Base64Util.EncryptionByBase64(projectCode + "-" + taskCode + "-" + userId);
+            ResourceToken resourceToken = new ResourceToken(projectCode, taskCode, userId, token);
+            ResourceTokenPO resourceTokenPO = resourceTokenDao.save(Converter.convert(ResourceTokenPO.class, resourceToken));
+            return resourceTokenPO.getToken();
+        }
+    }
+
 }
 

+ 4 - 4
site/src/main/resources/application.yml

@@ -203,9 +203,9 @@ spring:
     username: mooctest
     password: secr3t!
   redis:
-    host: 59.42.10.53
-    port: 6379
-    password: '#2019@callforttest@!'
+    host: 121.196.124.158
+    port: 16379
+    password:
     jedis:
       pool:
         max-active: 8
@@ -215,7 +215,7 @@ spring:
     database: 6
 user:
   service:
-    baseUrl: http://59.42.10.53:8081
+    baseUrl: http://8.136.118.225:8081
 
 file:
   save: