|
|
@@ -1,9 +1,15 @@
|
|
|
package com.yingpaipay.business.service.impl;
|
|
|
|
|
|
-import com.yingpaipay.business.domain.bo.ProjectUpdateStatusBo;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.yingpaipay.business.constant.DictTypeConst;
|
|
|
+import com.yingpaipay.business.domain.bo.*;
|
|
|
+import com.yingpaipay.business.domain.vo.ProjectOnDocumentVo;
|
|
|
+import com.yingpaipay.business.enumeration.ProjectStatusEnum;
|
|
|
+import com.yingpaipay.system.domain.SysUserProject;
|
|
|
import com.yingpaipay.business.domain.vo.ProjectListByNameVo;
|
|
|
import com.yingpaipay.business.domain.vo.ProjectMemberListVo;
|
|
|
import com.yingpaipay.system.domain.SysUserProjects;
|
|
|
+import com.yingpaipay.system.mapper.SysUserProjectMapper;
|
|
|
import com.yingpaipay.system.mapper.SysUserProjectsMapper;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
@@ -15,12 +21,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.system.domain.SysUser;
|
|
|
import org.dromara.system.mapper.SysUserMapper;
|
|
|
import org.dromara.system.service.ISysDeptService;
|
|
|
+import org.dromara.system.service.ISysDictTypeService;
|
|
|
import org.dromara.system.service.ISysOssService;
|
|
|
-import org.dromara.system.service.ISysRoleService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.yingpaipay.business.domain.bo.ProjectBo;
|
|
|
import com.yingpaipay.business.domain.vo.ProjectVo;
|
|
|
import com.yingpaipay.business.domain.Project;
|
|
|
import com.yingpaipay.business.mapper.ProjectMapper;
|
|
|
@@ -40,12 +46,13 @@ import java.util.*;
|
|
|
public class ProjectServiceImpl implements IProjectService {
|
|
|
|
|
|
private final ProjectMapper baseMapper;
|
|
|
- private final SysUserProjectsMapper userProjectMapper;
|
|
|
+ private final SysUserProjectsMapper userProjectsMapper;
|
|
|
+ private final SysUserProjectMapper userProjectMapper;
|
|
|
private final SysUserMapper userMapper;
|
|
|
|
|
|
private final ISysOssService ossService;
|
|
|
private final ISysDeptService deptService;
|
|
|
- private final ISysRoleService roleService;
|
|
|
+ private final ISysDictTypeService dictTypeService;
|
|
|
|
|
|
/**
|
|
|
* 查询项目管理
|
|
|
@@ -118,12 +125,15 @@ public class ProjectServiceImpl implements IProjectService {
|
|
|
lqw.between(params.get("beginUpdateTime") != null && params.get("endUpdateTime") != null,
|
|
|
Project::getUpdateTime, params.get("beginUpdateTime"), params.get("endUpdateTime"));
|
|
|
|
|
|
- SysUserProjects project = userProjectMapper.selectOne(Wrappers.lambdaQuery(SysUserProjects.class).eq(SysUserProjects::getUserId, LoginHelper.getUserId()));
|
|
|
- if (project.getProjects().isEmpty()) {
|
|
|
+ // TODO 只有拥有该项目数据权限的人才能够在列表中看到该项目
|
|
|
+ String projects = userProjectsMapper.selectOne(
|
|
|
+ Wrappers.lambdaQuery(SysUserProjects.class)
|
|
|
+ .eq(SysUserProjects::getUserId, LoginHelper.getUserId())
|
|
|
+ ).getProjects();
|
|
|
+ if (projects.isEmpty()) {
|
|
|
lqw.in(Project::getId, List.of(-1L));
|
|
|
- } else if (!project.getProjects().equals("*")) {
|
|
|
- List<Long> projectIds = Arrays.stream(project.getProjects().split(",")).map(Long::valueOf).toList();
|
|
|
- lqw.in(Project::getId, projectIds);
|
|
|
+ } else if (!projects.equals("*")) {
|
|
|
+ lqw.in(Project::getId, Arrays.stream(projects.split(",")).map(Long::valueOf).toList());
|
|
|
}
|
|
|
|
|
|
return lqw;
|
|
|
@@ -219,6 +229,120 @@ public class ProjectServiceImpl implements IProjectService {
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<ProjectMemberListVo> selectMemberListById(Long id, PageQuery pageQuery) {
|
|
|
- return TableDataInfo.build();
|
|
|
+ List<Long> userIds = new ArrayList<>();
|
|
|
+ Page<SysUserProject> page = userProjectMapper.selectPage(
|
|
|
+ pageQuery.build(),
|
|
|
+ Wrappers.lambdaQuery(SysUserProject.class)
|
|
|
+ .eq(SysUserProject::getProjectId, id)
|
|
|
+ .orderByDesc(SysUserProject::getJoinTime)
|
|
|
+ );
|
|
|
+ page.getRecords().forEach(e -> userIds.add(e.getUserId()));
|
|
|
+ if (userIds.isEmpty()) {
|
|
|
+ return TableDataInfo.build();
|
|
|
+ }
|
|
|
+ Map<Long, SysUser> userMap = new HashMap<>();
|
|
|
+ List<Long> deptIds = new ArrayList<>();
|
|
|
+ Map<Long, String> deptMap = new HashMap<>();
|
|
|
+ List<SysUser> userList = userMapper.selectByIds(userIds);
|
|
|
+ userList.forEach(e -> {
|
|
|
+ userMap.put(e.getUserId(), e);
|
|
|
+ deptIds.add(e.getDeptId());
|
|
|
+ });
|
|
|
+ if (!deptIds.isEmpty()) {
|
|
|
+ deptService.selectDeptByIds(deptIds)
|
|
|
+ .forEach(e -> deptMap.put(e.getDeptId(), e.getDeptName()));
|
|
|
+ }
|
|
|
+ return TableDataInfo.build(page.convert(e -> {
|
|
|
+ ProjectMemberListVo vo = new ProjectMemberListVo();
|
|
|
+ SysUser user = userMap.get(e.getUserId());
|
|
|
+ if (user == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ vo.setId(user.getUserId());
|
|
|
+ vo.setName(user.getNickName());
|
|
|
+ vo.setPhoneNumber(user.getPhonenumber());
|
|
|
+ vo.setDept(deptMap.get(user.getDeptId()));
|
|
|
+ vo.setNote(e.getNote());
|
|
|
+ vo.setTime(e.getJoinTime());
|
|
|
+ return vo;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean inviteProjectMember(ProjectInviteProjectMemberBo bo) {
|
|
|
+ if (bo.getUsers().isEmpty()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ List<SysUserProject> userProjectList = new ArrayList<>();
|
|
|
+ List<ProjectInviteMemberBo> users = bo.getUsers();
|
|
|
+ for (ProjectInviteMemberBo user : users) {
|
|
|
+ SysUserProject entity = new SysUserProject();
|
|
|
+ entity.setUserId(user.getId());
|
|
|
+ entity.setNote(user.getNote());
|
|
|
+ entity.setProjectId(bo.getProjectId());
|
|
|
+ userProjectList.add(entity);
|
|
|
+ }
|
|
|
+ return userProjectMapper.insertBatch(userProjectList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int removeProjectMember(Long projectId, Long userId) {
|
|
|
+ return userProjectMapper.delete(
|
|
|
+ Wrappers.lambdaQuery(SysUserProject.class)
|
|
|
+ .eq(SysUserProject::getUserId, userId)
|
|
|
+ .eq(SysUserProject::getProjectId, projectId)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<ProjectOnDocumentVo> listOnDocument(ProjectOnDocumentBo bo, PageQuery pageQuery) {
|
|
|
+ LambdaQueryWrapper<Project> wrapper = buildQueryOnDocumentWrapper(bo);
|
|
|
+ IPage<Project> page = baseMapper.selectPage(pageQuery.build(), wrapper);
|
|
|
+ return TableDataInfo.build(page.convert(e -> {
|
|
|
+ ProjectOnDocumentVo vo = new ProjectOnDocumentVo();
|
|
|
+ vo.setId(e.getId());
|
|
|
+ vo.setCode(e.getCode());
|
|
|
+ vo.setName(e.getName());
|
|
|
+ vo.setLanguage(e.getLanguage());
|
|
|
+ vo.setType(e.getType());
|
|
|
+ vo.setStatus(ProjectStatusEnum.getLabel(e.getStatus()));
|
|
|
+ vo.setStartTime(e.getStartTime());
|
|
|
+ vo.setEndTime(e.getEndTime());
|
|
|
+ vo.setCreateTime(e.getCreateTime());
|
|
|
+ vo.setUpdateTime(e.getUpdateTime());
|
|
|
+ return vo;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ private LambdaQueryWrapper<Project> buildQueryOnDocumentWrapper(ProjectOnDocumentBo bo) {
|
|
|
+ Map<String, Object> params = bo.getParams();
|
|
|
+ LambdaQueryWrapper<Project> lqw = Wrappers.lambdaQuery();
|
|
|
+ lqw.orderByDesc(Project::getId);
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getCode()), Project::getCode, bo.getCode());
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getName()), Project::getName, bo.getName());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getLanguage()), Project::getLanguage, bo.getLanguage());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getType()), Project::getType, bo.getType());
|
|
|
+ lqw.eq(bo.getStatus() != null, Project::getStatus, bo.getStatus());
|
|
|
+ lqw.between(params.get("beginStartTime") != null && params.get("endStartTime") != null,
|
|
|
+ Project::getStartTime, params.get("beginStartTime"), params.get("endStartTime"));
|
|
|
+ lqw.between(params.get("beginEndTime") != null && params.get("endEndTime") != null,
|
|
|
+ Project::getEndTime, params.get("beginEndTime"), params.get("endEndTime"));
|
|
|
+ lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
|
|
|
+ Project::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
|
|
|
+ lqw.between(params.get("beginUpdateTime") != null && params.get("endUpdateTime") != null,
|
|
|
+ Project::getUpdateTime, params.get("beginUpdateTime"), params.get("endUpdateTime"));
|
|
|
+
|
|
|
+ // TODO 只有拥有该项目数据权限的人才能够在列表中看到该项目
|
|
|
+ String projects = userProjectsMapper.selectOne(
|
|
|
+ Wrappers.lambdaQuery(SysUserProjects.class)
|
|
|
+ .eq(SysUserProjects::getUserId, LoginHelper.getUserId())
|
|
|
+ ).getProjects();
|
|
|
+ if (projects.isEmpty()) {
|
|
|
+ lqw.in(Project::getId, List.of(-1L));
|
|
|
+ } else if (!projects.equals("*")) {
|
|
|
+ lqw.in(Project::getId, Arrays.stream(projects.split(",")).map(Long::valueOf).toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ return lqw;
|
|
|
}
|
|
|
}
|