|
@@ -1,16 +1,15 @@
|
|
|
package com.mooctest.crowd.site.service.impl;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
-import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
|
|
|
-import com.mooctest.crowd.domain.dao.FieldDao;
|
|
|
-import com.mooctest.crowd.domain.dao.TestTypeDao;
|
|
|
-import com.mooctest.crowd.domain.dao.UserTaskCountDao;
|
|
|
+import com.mooctest.crowd.domain.dao.*;
|
|
|
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.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;
|
|
|
import com.mooctest.crowd.domain.repository.UserRepo;
|
|
|
import com.mooctest.crowd.domain.util.Converter;
|
|
@@ -55,6 +54,11 @@ import java.util.stream.Collectors;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
+ @Autowired
|
|
|
+ private RoleDao roleDao;
|
|
|
+ @Autowired
|
|
|
+
|
|
|
+ private UserToRoleDao userToRoleDao;
|
|
|
|
|
|
@Autowired
|
|
|
private ViewMediator viewMediator;
|
|
@@ -76,7 +80,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
|
|
|
@Autowired
|
|
|
private FieldDao fieldDao;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private UserTaskCountDao userTaskCountDao;
|
|
|
|
|
@@ -85,19 +89,18 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
|
|
|
@Override
|
|
|
public List<CrowdTestProjectVO> findAllMoreHotProjects() {
|
|
|
- List<CrowdTestProjectVO> list=viewMediator.findMoreHotProjects();//根据创建时间已经倒叙排序好
|
|
|
+ List<CrowdTestProjectVO> list = viewMediator.findMoreHotProjects();//根据创建时间已经倒叙排序好
|
|
|
//根据参与人数倒叙排序
|
|
|
- List<CrowdTestProjectVO> moreHotProjects=list.stream().sorted(Comparator.comparing(CrowdTestProjectVO::getJoinCount).reversed()).collect(Collectors.toList());
|
|
|
- return moreHotProjects;
|
|
|
+ List<CrowdTestProjectVO> moreHotProjects = list.stream().sorted(Comparator.comparing(CrowdTestProjectVO::getJoinCount).reversed()).collect(Collectors.toList());
|
|
|
+ return moreHotProjects;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<CrowdTestProjectVO> findByNameLike(String name) {
|
|
|
- if(name==null||name.trim().equals("")){
|
|
|
- return viewMediator.crowdTestProjects().stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
+ if (name == null || name.trim().equals("")) {
|
|
|
+ return viewMediator.crowdTestProjects().stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
}
|
|
|
- return viewMediator.findByNameLike(name).stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
-
|
|
|
+ return viewMediator.findByNameLike(name).stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
}
|
|
@@ -111,12 +114,10 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
@Override
|
|
|
public List<CrowdTestProjectVO> findAll(Pageable pageable) {
|
|
|
|
|
|
- return viewMediator.crowdTestProjects();
|
|
|
+ return viewMediator.crowdTestProjects();
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
@Override
|
|
|
public List<CrowdTestProjectVO> findAll() {
|
|
|
return viewMediator.crowdTestProjects();
|
|
@@ -131,20 +132,52 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command) {
|
|
|
- CrowdTestProject project = command.toCrowdProject();
|
|
|
- project.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
|
|
|
- log.info("\n" + project.toString() + "\n");
|
|
|
- String projectCode = GenerateFlowCodeUtil.generateFlowCode("PROJ");
|
|
|
- project.setCode(projectCode);
|
|
|
- if(project.getCreateTime() == null){
|
|
|
- project.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ 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());
|
|
|
}
|
|
|
- ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
|
|
|
- projectRepo.saveCrowdTestProject(project);
|
|
|
- projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
|
|
|
- themeSchedulerService.createNewThemeScheduler(project);
|
|
|
- return projectDetailsDTO;
|
|
|
+ //获取用户角色列表所有的角色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;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (canCreateProject) {
|
|
|
+ CrowdTestProject project = command.toCrowdProject();
|
|
|
+ project.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
|
|
|
+ log.info("\n" + project.toString() + "\n");
|
|
|
+ String projectCode = GenerateFlowCodeUtil.generateFlowCode("PROJ");
|
|
|
+ project.setCode(projectCode);
|
|
|
+ if (project.getCreateTime() == null) {
|
|
|
+ project.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ }
|
|
|
+ ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
|
|
|
+ projectRepo.saveCrowdTestProject(project);
|
|
|
+ projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
|
|
|
+ themeSchedulerService.createNewThemeScheduler(project);
|
|
|
+ return projectDetailsDTO;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -155,7 +188,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
if (!project.getUserId().equals(crowdTestProjectCommand.getUserId()))
|
|
|
throw new BaseException("UserId不一致, newUserId: " + crowdTestProjectCommand.getUserId() + ", oldUserId: " + project.getUserId());
|
|
|
//todo 后面需要加入是否有权限进行更新
|
|
|
- if(project.getCreateTime() == null){
|
|
|
+ if (project.getCreateTime() == null) {
|
|
|
project.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
}
|
|
|
projectRepo.saveCrowdTestProject(operationMediator.updateProject(project, crowdTestProjectCommand));
|
|
@@ -327,12 +360,12 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
// 对用户判断认证类型 测评机构为1 测试人员为2
|
|
|
|
|
|
Optional<UserTaskCountPO> userTaskCountPOOptional = userTaskCountDao.findByUserId(user.getId());
|
|
|
- if(!userTaskCountPOOptional.isPresent()){
|
|
|
+ if (!userTaskCountPOOptional.isPresent()) {
|
|
|
UserTaskCount userTaskCount = new UserTaskCount(user.getId(), 1L, RoleType.EVALUATION_USER.getId());
|
|
|
userTaskCountDao.save(Converter.convert(UserTaskCountPO.class, userTaskCount));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
UserTaskCountPO userTaskCountPO = userTaskCountPOOptional.get();
|
|
|
- userTaskCountPO.setCount(userTaskCountPO.getCount()+1);
|
|
|
+ userTaskCountPO.setCount(userTaskCountPO.getCount() + 1);
|
|
|
userTaskCountDao.save(userTaskCountPO);
|
|
|
}
|
|
|
return null;
|
|
@@ -446,7 +479,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
project.setName(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 1:
|
|
|
- if(fieldDao.findAll().stream().noneMatch(fieldPO -> fieldPO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ if (fieldDao.findAll().stream().noneMatch(fieldPO -> fieldPO.getName().equals(cell.getStringCellValue().trim()))) {
|
|
|
logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "领域类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
@@ -454,7 +487,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
// project.setFieldType(fieldDao.findByName(cell.getStringCellValue().trim()).get().getCode());
|
|
|
break;
|
|
|
case 2:
|
|
|
- if(applicationTypeDao.findAll().stream().noneMatch(applicationTypePO -> applicationTypePO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ if (applicationTypeDao.findAll().stream().noneMatch(applicationTypePO -> applicationTypePO.getName().equals(cell.getStringCellValue().trim()))) {
|
|
|
logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "应用类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
@@ -462,7 +495,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
// project.setApplicationType(applicationTypeDao.findByName(cell.getStringCellValue().trim()).get().getCode());
|
|
|
break;
|
|
|
case 3:
|
|
|
- if(testTypeDao.findAll().stream().noneMatch(testTypePO -> testTypePO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ if (testTypeDao.findAll().stream().noneMatch(testTypePO -> testTypePO.getName().equals(cell.getStringCellValue().trim()))) {
|
|
|
logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
@@ -475,7 +508,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
project.setLinkMan(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 6:
|
|
|
- if(!cell.getStringCellValue().trim().contains("*")){
|
|
|
+ if (!cell.getStringCellValue().trim().contains("*")) {
|
|
|
if (!isRightPhone(cell.getStringCellValue().trim())) {
|
|
|
logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
|
|
|
break;
|