|
@@ -1,24 +1,28 @@
|
|
|
package com.fdkankan.site.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.fdkankan.site.common.PageInfo;
|
|
|
import com.fdkankan.site.common.ResultCode;
|
|
|
-import com.fdkankan.site.common.util.JwtUtil;
|
|
|
import com.fdkankan.site.common.util.VUtils;
|
|
|
-import com.fdkankan.site.entity.Project;
|
|
|
-import com.fdkankan.site.entity.ProjectTeam;
|
|
|
+import com.fdkankan.site.entity.*;
|
|
|
+import com.fdkankan.site.entity.dto.ProjectTeamAddDTO;
|
|
|
+import com.fdkankan.site.entity.dto.ProjectTeamDTO;
|
|
|
+import com.fdkankan.site.entity.vo.TeamUserSelect;
|
|
|
import com.fdkankan.site.exception.BusinessException;
|
|
|
import com.fdkankan.site.httpClient.client.FdKKClient;
|
|
|
import com.fdkankan.site.httpClient.request.FdkkLoginRequest;
|
|
|
import com.fdkankan.site.httpClient.response.FdkkResponse;
|
|
|
import com.fdkankan.site.mapper.IProjectTeamMapper;
|
|
|
import com.fdkankan.site.request.ProjectTeamListParam;
|
|
|
-import com.fdkankan.site.service.IProjectService;
|
|
|
-import com.fdkankan.site.service.IProjectTeamService;
|
|
|
+import com.fdkankan.site.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import org.apache.catalina.User;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -28,6 +32,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -44,11 +49,37 @@ public class ProjectTeamServiceImpl extends ServiceImpl<IProjectTeamMapper, Proj
|
|
|
FdKKClient fdKKClient;
|
|
|
@Autowired
|
|
|
IProjectService projectService;
|
|
|
+ @Autowired
|
|
|
+ IUserService userService;
|
|
|
+ @Autowired
|
|
|
+ IUserRoleService userRoleService;
|
|
|
+ @Autowired
|
|
|
+ IMarkingUserService markingUserService;
|
|
|
+ @Autowired
|
|
|
+ IMarkingService markingService;
|
|
|
+ @Autowired
|
|
|
+ IRoleService roleService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProjectTeam> getListByUserId(Integer userId) {
|
|
|
+ LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(ProjectTeam::getUserId,userId);
|
|
|
+ return this.list(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ProjectTeam findByUserIdAndProjectId(Integer userId, Integer projectId) {
|
|
|
+ LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(ProjectTeam::getUserId,userId);
|
|
|
+ wrapper.eq(ProjectTeam::getProjectId,projectId);
|
|
|
+ return getOne(wrapper);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
- public List<ProjectTeam> getListByUserName(String userName) {
|
|
|
+ public List<ProjectTeam> getListByUserIdAndProjectId(Integer userId, Integer projectId) {
|
|
|
LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(ProjectTeam::getUserName,userName);
|
|
|
+ wrapper.eq(ProjectTeam::getUserId,userId);
|
|
|
+ wrapper.eq(ProjectTeam::getProjectId,projectId);
|
|
|
return this.list(wrapper);
|
|
|
}
|
|
|
|
|
@@ -57,63 +88,95 @@ public class ProjectTeamServiceImpl extends ServiceImpl<IProjectTeamMapper, Proj
|
|
|
ProjectTeam team = new ProjectTeam();
|
|
|
team.setIsCreater(1);
|
|
|
team.setProjectId(projectId);
|
|
|
- team.setUserName(JwtUtil.getUserName(token));
|
|
|
+ User user = userService.findByTokenCovUserName(token);
|
|
|
+ team.setUserId(user.getUserId());
|
|
|
this.save(team);
|
|
|
+ Role manager = roleService.findByRoleKey("manager");
|
|
|
+ UserRole userRole=new UserRole();
|
|
|
+ userRole.setRoleId(manager.getRoleId());
|
|
|
+ userRole.setUserId(user.getUserId());
|
|
|
+ userRole.setProjectId(projectId);
|
|
|
+ userRoleService.save(userRole);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Object pageList(ProjectTeamListParam param) {
|
|
|
VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
|
|
|
projectService.checkTokenPer(param.getToken(),param.getProjectId());
|
|
|
- LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(ProjectTeam::getProjectId,param.getProjectId());
|
|
|
+
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .selectAll(ProjectTeam.class)
|
|
|
+ .select(User::getUserName)
|
|
|
+ .selectCollection(Role.class, ProjectTeamDTO::getRoles)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .leftJoin(UserRole.class,UserRole::getUserId,User::getUserId)
|
|
|
+ .leftJoin(Role.class, Role::getRoleId, UserRole::getRoleId)
|
|
|
+ .eq(ProjectTeam::getProjectId,param.getProjectId())
|
|
|
+ .eq(UserRole::getProjectId,param.getProjectId())
|
|
|
+ ;
|
|
|
if(StringUtils.isNotBlank(param.getUserName())){
|
|
|
- wrapper.like(ProjectTeam::getUserName,param.getUserName());
|
|
|
+ wrapper.like(User::getUserName,param.getUserName());
|
|
|
}
|
|
|
- Page<ProjectTeam> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
|
|
|
-
|
|
|
- return PageInfo.PageInfo(page);
|
|
|
+ IPage<ProjectTeamDTO> projectTeamIPage = baseMapper.selectJoinPage(new Page<>(param.getPageNum(), param.getPageSize()), ProjectTeamDTO.class, wrapper);
|
|
|
+ return PageInfo.PageInfo(projectTeamIPage);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Object addUser(ProjectTeam param, String token) {
|
|
|
+ public Object addUser(ProjectTeamAddDTO param, String token) {
|
|
|
VUtils.isTure(param.getProjectId() == null || StringUtils.isBlank(param.getUserName())).throwMessage(ResultCode.PARAM_MISS);
|
|
|
VUtils.isTure(!this.checkUserName(param.getUserName())).throwMessage(ResultCode.USER_NOT_EXIST);
|
|
|
-
|
|
|
- // ProjectTeam projectTeam = this.getProjectCreater(param.getProjectId());
|
|
|
+ // ProjectTeam projectTeam = this.getProjectCreater(param.getProjectId());
|
|
|
//VUtils.isTure(projectTeam == null).throwMessage(ResultCode.PROJECT_CREATER_NOT_EXIST);
|
|
|
//VUtils.isTure(!projectTeam.getUserName().equals(JwtUtil.getUserName(token))).throwMessage(ResultCode.NOT_PERM);
|
|
|
-
|
|
|
- LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(ProjectTeam::getProjectId,param.getProjectId());
|
|
|
- wrapper.eq(ProjectTeam::getUserName,param.getUserName());
|
|
|
- long count = this.count(wrapper);
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .select(ProjectTeam::getTeamId)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .eq(User::getUserName,param.getUserName())
|
|
|
+ .eq(ProjectTeam::getProjectId,param.getProjectId()) ;
|
|
|
+ long count = getBaseMapper().selectJoinCount(wrapper);
|
|
|
VUtils.isTure(count >0).throwMessage(ResultCode.USER_EXIST);
|
|
|
-
|
|
|
+ User user = userService.findByUserName(param.getUserName());
|
|
|
ProjectTeam team = new ProjectTeam();
|
|
|
team.setProjectId(param.getProjectId());
|
|
|
- team.setUserName(param.getUserName());
|
|
|
+ team.setUserId(user.getUserId());
|
|
|
team.setRemark(param.getRemark());
|
|
|
+ team.setNickName(param.getNickName());
|
|
|
+ if (StrUtil.isNotEmpty(param.getBindAccount())){
|
|
|
+ team.setBindAccount(param.getBindAccount());
|
|
|
+ }
|
|
|
this.save(team);
|
|
|
+ for (Integer roleId : param.getRoles()) {
|
|
|
+ UserRole userRole=new UserRole();
|
|
|
+ userRole.setRoleId(roleId);
|
|
|
+ userRole.setUserId(user.getUserId());
|
|
|
+ userRole.setProjectId(param.getProjectId());
|
|
|
+ userRoleService.save(userRole);
|
|
|
+ }
|
|
|
return team;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ProjectTeam getProjectCreater(Integer projectId) {
|
|
|
- LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(ProjectTeam::getProjectId,projectId);
|
|
|
- wrapper.eq(ProjectTeam::getIsCreater,1);
|
|
|
- return this.getOne(wrapper);
|
|
|
+ public ProjectTeamDTO getProjectCreater(Integer projectId) {
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .selectAll(ProjectTeam.class)
|
|
|
+ .select(User::getUserName)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .eq(ProjectTeam::getProjectId,projectId)
|
|
|
+ .eq(ProjectTeam::getIsCreater,1);;
|
|
|
+ return getBaseMapper().selectJoinOne(ProjectTeamDTO.class,wrapper);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public HashMap<Integer, String> getProjectCreaterMap(Set<Integer> projectIds) {
|
|
|
HashMap<Integer, String> map = new HashMap<>();
|
|
|
if(projectIds.size() >0){
|
|
|
- LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.in(ProjectTeam::getProjectId,projectIds);
|
|
|
- wrapper.eq(ProjectTeam::getIsCreater,1);
|
|
|
- List<ProjectTeam> list = this.list(wrapper);
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .selectAll(ProjectTeam.class)
|
|
|
+ .select(User::getUserName)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .in(ProjectTeam::getProjectId,projectIds)
|
|
|
+ .eq(ProjectTeam::getIsCreater,1);;
|
|
|
+ List<ProjectTeamDTO> list = getBaseMapper().selectJoinList(ProjectTeamDTO.class,wrapper);
|
|
|
list.forEach(entity -> map.put(entity.getProjectId(),entity.getUserName()));
|
|
|
}
|
|
|
return map;
|
|
@@ -136,9 +199,9 @@ public class ProjectTeamServiceImpl extends ServiceImpl<IProjectTeamMapper, Proj
|
|
|
|
|
|
ProjectTeam createrTeam = this.getProjectCreater(team.getProjectId());
|
|
|
VUtils.isTure(createrTeam == null).throwMessage(ResultCode.PROJECT_CREATER_NOT_EXIST);
|
|
|
- String userName = JwtUtil.getUserName(token);
|
|
|
- if(!createrTeam.getUserName().equals(userName)){
|
|
|
- if(!team.getUserName().equals(userName)){
|
|
|
+ User user = userService.findByTokenCovUserName(token);
|
|
|
+ if(!NumberUtil.equals(createrTeam.getUserId(),user.getUserId())){
|
|
|
+ if(!NumberUtil.equals(team.getUserId(),user.getUserId())){
|
|
|
throw new BusinessException(ResultCode.NOT_PERM);
|
|
|
}else {
|
|
|
this.removeById(param.getTeamId());
|
|
@@ -147,24 +210,33 @@ public class ProjectTeamServiceImpl extends ServiceImpl<IProjectTeamMapper, Proj
|
|
|
}
|
|
|
|
|
|
this.removeById(param.getTeamId());
|
|
|
+ userRoleService.delUserRole(team.getUserId(),team.getProjectId());
|
|
|
+ List<Marking> byProjectId = markingService.findByProjectId(team.getProjectId());
|
|
|
+ for (Marking marking : byProjectId) {
|
|
|
+ markingUserService.delByUserIdAndMarkingId(team.getUserId(),marking.getMarkingId());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void updateRemark(ProjectTeam param) {
|
|
|
VUtils.isTure(param.getTeamId() == null ).throwMessage(ResultCode.PARAM_MISS);
|
|
|
+ ProjectTeam byId = getById(param.getTeamId());
|
|
|
LambdaUpdateWrapper<ProjectTeam> wrapper = new LambdaUpdateWrapper<>();
|
|
|
wrapper.eq(ProjectTeam::getTeamId,param.getTeamId())
|
|
|
.set(ProjectTeam::getRemark,param.getRemark());
|
|
|
- this.update(wrapper);
|
|
|
+ this.update(byId,wrapper);
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Set<Integer> getProjectIdByCreater(String projectCreater) {
|
|
|
- LambdaQueryWrapper<ProjectTeam> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.like(ProjectTeam::getUserName,projectCreater);
|
|
|
- wrapper.eq(ProjectTeam::getIsCreater,1);
|
|
|
- return this.list(wrapper).stream().map(ProjectTeam::getProjectId).collect(Collectors.toSet());
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .selectAll(ProjectTeam.class)
|
|
|
+ .select(User::getUserName)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .eq(User::getUserName,projectCreater)
|
|
|
+ .eq(ProjectTeam::getIsCreater,1);
|
|
|
+ return getBaseMapper().selectList(wrapper).stream().map(ProjectTeam::getProjectId).collect(Collectors.toSet());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -173,4 +245,58 @@ public class ProjectTeamServiceImpl extends ServiceImpl<IProjectTeamMapper, Proj
|
|
|
wrapper.eq(ProjectTeam::getProjectId,projectId);
|
|
|
this.remove(wrapper);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProjectTeamDTO> listAll(ProjectTeamListParam param) {
|
|
|
+ MPJLambdaWrapper<ProjectTeam> wrapper = new MPJLambdaWrapper<ProjectTeam>()
|
|
|
+ .selectAll(ProjectTeam.class)
|
|
|
+ .select(User::getUserName)
|
|
|
+ .leftJoin(User.class, User::getUserId, ProjectTeam::getUserId)
|
|
|
+ .eq(ProjectTeam::getProjectId,param.getProjectId());
|
|
|
+ if(StringUtils.isNotBlank(param.getUserName())){
|
|
|
+ wrapper.like(User::getUserName,param.getUserName());
|
|
|
+ }
|
|
|
+ List<ProjectTeamDTO> projectTeamIPage = baseMapper.selectJoinList( ProjectTeamDTO.class, wrapper);
|
|
|
+ return projectTeamIPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TeamUserSelect> buildTreeSelect(List<ProjectTeamDTO> projectTeamDTOS) {
|
|
|
+ return projectTeamDTOS.stream().map(TeamUserSelect::new).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateUser(ProjectTeamAddDTO param) {
|
|
|
+ VUtils.isTure(param.getTeamId() == null ).throwMessage(ResultCode.PARAM_MISS);
|
|
|
+ ProjectTeam projectTeam = getById(param.getTeamId());
|
|
|
+ LambdaUpdateWrapper<ProjectTeam> wrapper = new LambdaUpdateWrapper<>();
|
|
|
+ wrapper.eq(ProjectTeam::getTeamId,param.getTeamId());
|
|
|
+ boolean updateFlag=false;
|
|
|
+ if (StrUtil.isNotEmpty(param.getRemark())&&!projectTeam.getRemark().equals(param.getRemark())){
|
|
|
+ wrapper.set(ProjectTeam::getRemark,param.getRemark());
|
|
|
+ updateFlag=true;
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotEmpty(param.getBindAccount())){
|
|
|
+ updateFlag=true;
|
|
|
+ wrapper.set(ProjectTeam::getBindAccount,param.getBindAccount());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotEmpty(param.getNickName())){
|
|
|
+ updateFlag=true;
|
|
|
+ wrapper.set(ProjectTeam::getNickName,param.getNickName());
|
|
|
+ }
|
|
|
+ if (updateFlag){
|
|
|
+ this.update(wrapper);
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(param.getRoles())){
|
|
|
+ userRoleService.delUserRole(param.getUserId(),param.getProjectId());
|
|
|
+ for (Integer roleId : param.getRoles()) {
|
|
|
+ UserRole userRole=new UserRole();
|
|
|
+ userRole.setRoleId(roleId);
|
|
|
+ userRole.setUserId(param.getUserId());
|
|
|
+ userRole.setProjectId(param.getProjectId());
|
|
|
+ userRoleService.save(userRole);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|