[add] 部门、角色、用户关联
This commit is contained in:
@ -188,12 +188,6 @@ api-decrypt:
|
|||||||
privateKey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=
|
privateKey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=
|
||||||
|
|
||||||
springdoc:
|
springdoc:
|
||||||
external-docs:
|
|
||||||
url: /doc.html
|
|
||||||
swagger-ui:
|
|
||||||
path: /swagger-ui.html
|
|
||||||
tags-sorter: alpha
|
|
||||||
operations-sorter: alpha
|
|
||||||
api-docs:
|
api-docs:
|
||||||
# 是否开启接口文档
|
# 是否开启接口文档
|
||||||
enabled: true
|
enabled: true
|
||||||
|
BIN
xinnengyuan/ruoyi-admin/src/main/resources/favicon.ico
Normal file
BIN
xinnengyuan/ruoyi-admin/src/main/resources/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
@ -9,6 +9,7 @@ import org.dromara.facility.service.IFacMatrixService;
|
|||||||
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
|
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
|
||||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.dromara.system.service.ISysDeptService;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
@ -38,6 +39,9 @@ public class DemoTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private IDesTechnicalStandardService desTechnicalStandardService;
|
private IDesTechnicalStandardService desTechnicalStandardService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysDeptService deptService;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void test() {
|
void test() {
|
||||||
Boolean result = photovoltaicPanelPartsService
|
Boolean result = photovoltaicPanelPartsService
|
||||||
@ -79,4 +83,10 @@ public class DemoTest {
|
|||||||
.list();
|
.list();
|
||||||
Boolean result = progressCategoryService.insertByTemplate(1906557369562726402L, matrixList, null);
|
Boolean result = progressCategoryService.insertByTemplate(1906557369562726402L, matrixList, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeptProject() {
|
||||||
|
deptService.selectProjectIdById(100L);
|
||||||
|
deptService.selectProjectIdById(1937478258803171329L);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,22 @@ public interface IBusUserProjectRelevancyService extends IService<BusUserProject
|
|||||||
*/
|
*/
|
||||||
Long insertByBo(BusUserProjectRelevancyCreateReq req);
|
Long insertByBo(BusUserProjectRelevancyCreateReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @param userIdList 用户ID列表
|
||||||
|
*/
|
||||||
|
void saveBatchByUserList(Long projectId, List<Long> userIdList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectIdList 项目ID列表
|
||||||
|
* @param userId 用户ID
|
||||||
|
*/
|
||||||
|
void saveBatchByProjectList(List<Long> projectIdList, Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改系统用户与项目关联
|
* 修改系统用户与项目关联
|
||||||
*
|
*
|
||||||
@ -74,6 +90,21 @@ public interface IBusUserProjectRelevancyService extends IService<BusUserProject
|
|||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
*/
|
||||||
|
void deleteByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目ID和用户ID列表删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param oldProjectId 项目ID
|
||||||
|
* @param userIds 用户ID列表
|
||||||
|
*/
|
||||||
|
void deleteByProjectAndUserIds(Long oldProjectId, List<Long> userIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前登录用户项目列表
|
* 获取当前登录用户项目列表
|
||||||
*
|
*
|
||||||
|
@ -50,9 +50,6 @@ import org.dromara.project.service.IBusProjectService;
|
|||||||
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
||||||
import org.dromara.quality.service.IQltKnowledgeDocumentService;
|
import org.dromara.quality.service.IQltKnowledgeDocumentService;
|
||||||
import org.dromara.safety.service.IHseKnowledgeDocumentService;
|
import org.dromara.safety.service.IHseKnowledgeDocumentService;
|
||||||
import org.dromara.system.domain.bo.SysDeptBo;
|
|
||||||
import org.dromara.system.domain.vo.SysDeptVo;
|
|
||||||
import org.dromara.system.service.ISysDeptService;
|
|
||||||
import org.dromara.workflow.service.IFlwDefinitionService;
|
import org.dromara.workflow.service.IFlwDefinitionService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
@ -100,9 +97,6 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
@Resource
|
@Resource
|
||||||
private IFacMatrixService matrixService;
|
private IFacMatrixService matrixService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ISysDeptService deptService;
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Resource
|
@Resource
|
||||||
private IHseKnowledgeDocumentService hseKnowledgeDocumentService;
|
private IHseKnowledgeDocumentService hseKnowledgeDocumentService;
|
||||||
@ -323,26 +317,6 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
if (this.lambdaQuery().eq(BusProject::getShortName, req.getShortName()).count() > 0) {
|
if (this.lambdaQuery().eq(BusProject::getShortName, req.getShortName()).count() > 0) {
|
||||||
throw new ServiceException("项目简称已存在", HttpStatus.BAD_REQUEST);
|
throw new ServiceException("项目简称已存在", HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
// 添加新部门
|
|
||||||
SysDeptBo queryBo = new SysDeptBo();
|
|
||||||
queryBo.setParentId(BusProjectConstant.PARENT_ID);
|
|
||||||
// 查询父节点部门
|
|
||||||
SysDeptVo deptVo = deptService.selectDeptList(queryBo).getFirst();
|
|
||||||
Long deptId = deptVo.getDeptId();
|
|
||||||
SysDeptBo createBo = new SysDeptBo();
|
|
||||||
createBo.setParentId(deptId);
|
|
||||||
String shortName = req.getShortName();
|
|
||||||
createBo.setDeptName(shortName != null ? shortName : req.getProjectName());
|
|
||||||
if (!deptService.checkDeptNameUnique(createBo)) {
|
|
||||||
throw new ServiceException("新增项目部门'" + createBo.getDeptName() + "'失败,项目名称已存在");
|
|
||||||
}
|
|
||||||
// 新增部门
|
|
||||||
int dept = deptService.insertDept(createBo);
|
|
||||||
if (dept <= 0) {
|
|
||||||
throw new ServiceException("新增项目部门'" + createBo.getDeptName() + "'失败");
|
|
||||||
}
|
|
||||||
Long newDeptId = deptService.selectIdByDeptName(createBo.getDeptName());
|
|
||||||
project.setDeptId(newDeptId);
|
|
||||||
// 写入数据库
|
// 写入数据库
|
||||||
boolean save = this.save(project);
|
boolean save = this.save(project);
|
||||||
if (!save) {
|
if (!save) {
|
||||||
|
@ -27,6 +27,7 @@ import org.dromara.project.service.IBusProjectService;
|
|||||||
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
||||||
import org.dromara.system.service.ISysUserService;
|
import org.dromara.system.service.ISysUserService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl<BusUserProje
|
|||||||
@Resource
|
@Resource
|
||||||
private IBusProjectService projectService;
|
private IBusProjectService projectService;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
@Resource
|
@Resource
|
||||||
private ISysUserService userService;
|
private ISysUserService userService;
|
||||||
|
|
||||||
@ -120,6 +122,54 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl<BusUserProje
|
|||||||
return userProjectRelevancy.getId();
|
return userProjectRelevancy.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @param userIdList 用户ID列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void saveBatchByUserList(Long projectId, List<Long> userIdList) {
|
||||||
|
if (ObjectUtils.isEmpty(projectId) || ObjectUtils.isEmpty(userIdList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<BusUserProjectRelevancy> userProjectRelevancyList = userIdList.stream().map(userId -> {
|
||||||
|
BusUserProjectRelevancy userProjectRelevancy = new BusUserProjectRelevancy();
|
||||||
|
userProjectRelevancy.setUserId(userId);
|
||||||
|
userProjectRelevancy.setProjectId(projectId);
|
||||||
|
return userProjectRelevancy;
|
||||||
|
}).toList();
|
||||||
|
boolean saveRelevancy = this.saveBatch(userProjectRelevancyList);
|
||||||
|
if (!saveRelevancy) {
|
||||||
|
throw new ServiceException("新增用户和项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param projectIdList 项目ID列表
|
||||||
|
* @param userId 用户ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void saveBatchByProjectList(List<Long> projectIdList, Long userId) {
|
||||||
|
if (ObjectUtils.isEmpty(projectIdList) || ObjectUtils.isEmpty(userId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<BusUserProjectRelevancy> userProjectRelevancyList = projectIdList.stream().map(projectId -> {
|
||||||
|
BusUserProjectRelevancy userProjectRelevancy = new BusUserProjectRelevancy();
|
||||||
|
userProjectRelevancy.setUserId(userId);
|
||||||
|
userProjectRelevancy.setProjectId(projectId);
|
||||||
|
return userProjectRelevancy;
|
||||||
|
}).toList();
|
||||||
|
boolean saveRelevancy = this.saveBatch(userProjectRelevancyList);
|
||||||
|
if (!saveRelevancy) {
|
||||||
|
throw new ServiceException("新增用户和项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改系统用户与项目关联
|
* 修改系统用户与项目关联
|
||||||
*
|
*
|
||||||
@ -195,6 +245,46 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl<BusUserProje
|
|||||||
return this.removeBatchByIds(ids);
|
return this.removeBatchByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void deleteByUserId(Long userId) {
|
||||||
|
List<BusUserProjectRelevancy> relevancyList = this.lambdaQuery()
|
||||||
|
.eq(BusUserProjectRelevancy::getUserId, userId)
|
||||||
|
.list();
|
||||||
|
if (CollUtil.isNotEmpty(relevancyList)) {
|
||||||
|
boolean result = this.removeBatchByIds(relevancyList);
|
||||||
|
if (!result) {
|
||||||
|
throw new ServiceException("删除用户项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目ID和用户ID列表删除系统用户与项目关联
|
||||||
|
*
|
||||||
|
* @param oldProjectId 项目ID
|
||||||
|
* @param userIds 用户ID列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void deleteByProjectAndUserIds(Long oldProjectId, List<Long> userIds) {
|
||||||
|
List<BusUserProjectRelevancy> relevancyList = this.lambdaQuery()
|
||||||
|
.eq(BusUserProjectRelevancy::getProjectId, oldProjectId)
|
||||||
|
.in(BusUserProjectRelevancy::getUserId, userIds)
|
||||||
|
.list();
|
||||||
|
if (CollUtil.isNotEmpty(relevancyList)) {
|
||||||
|
boolean result = this.removeBatchByIds(relevancyList);
|
||||||
|
if (!result) {
|
||||||
|
throw new ServiceException("删除用户项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前登录用户项目列表
|
* 获取当前登录用户项目列表
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@ import org.dromara.system.domain.bo.SysDeptBo;
|
|||||||
import org.dromara.system.domain.bo.SysRoleBo;
|
import org.dromara.system.domain.bo.SysRoleBo;
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
import org.dromara.system.domain.vo.DeptTreeSelectVo;
|
import org.dromara.system.domain.vo.DeptTreeSelectVo;
|
||||||
|
import org.dromara.system.domain.vo.SysDeptVo;
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.service.ISysDeptService;
|
import org.dromara.system.service.ISysDeptService;
|
||||||
@ -50,12 +51,12 @@ public class SysRoleController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取角色列表
|
* 获取角色信息列表(不分页)
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:role:list")
|
@SaCheckPermission("system:role:list")
|
||||||
@GetMapping("/listNoPage/isSubsetDept")
|
@GetMapping("/listNoPage")
|
||||||
public List<SysRoleVo> listNoPageByIsSubsetDept(SysRoleBo roleBo) {
|
public List<SysRoleVo> listNoPage(SysRoleBo role) {
|
||||||
return roleService.selectRoleListByIsSubsetDept(roleBo);
|
return roleService.selectRoleList(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,8 +95,15 @@ public class SysRoleController extends BaseController {
|
|||||||
} else if (!roleService.checkRoleKeyUnique(role)) {
|
} else if (!roleService.checkRoleKeyUnique(role)) {
|
||||||
return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
||||||
}
|
}
|
||||||
|
Long deptId = role.getDeptId();
|
||||||
|
if (deptId == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,请选择关联的部门");
|
||||||
|
}
|
||||||
|
SysDeptVo deptVo = deptService.selectDeptById(deptId);
|
||||||
|
if (deptVo == null) {
|
||||||
|
return R.fail("新增角色'" + role.getRoleName() + "'失败,关联的部门不存在");
|
||||||
|
}
|
||||||
return toAjax(roleService.insertRole(role));
|
return toAjax(roleService.insertRole(role));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,6 +34,11 @@ public class SysDept extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门名称
|
* 部门名称
|
||||||
*/
|
*/
|
||||||
@ -90,9 +95,4 @@ public class SysDept extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private String isSubset;
|
private String isSubset;
|
||||||
|
|
||||||
/**
|
|
||||||
* 角色ID
|
|
||||||
*/
|
|
||||||
private Long roleId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,10 @@ package org.dromara.system.domain;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import org.dromara.common.tenant.core.TenantEntity;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.dromara.common.tenant.core.TenantEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色表 sys_role
|
* 角色表 sys_role
|
||||||
@ -26,6 +26,11 @@ public class SysRole extends TenantEntity {
|
|||||||
@TableId(value = "role_id")
|
@TableId(value = "role_id")
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色名称
|
* 角色名称
|
||||||
*/
|
*/
|
||||||
|
@ -4,7 +4,6 @@ import io.github.linpeilie.annotations.AutoMapper;
|
|||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
|
||||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
import org.dromara.system.domain.SysDept;
|
import org.dromara.system.domain.SysDept;
|
||||||
|
|
||||||
@ -29,6 +28,11 @@ public class SysDeptBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门名称
|
* 部门名称
|
||||||
*/
|
*/
|
||||||
|
@ -28,6 +28,11 @@ public class SysRoleBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色名称
|
* 角色名称
|
||||||
*/
|
*/
|
||||||
@ -88,11 +93,6 @@ public class SysRoleBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String isSpecial;
|
private String isSpecial;
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否有子部门
|
|
||||||
*/
|
|
||||||
private String isSubsetDept;
|
|
||||||
|
|
||||||
public SysRoleBo(Long roleId) {
|
public SysRoleBo(Long roleId) {
|
||||||
this.roleId = roleId;
|
this.roleId = roleId;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
@ -75,4 +76,22 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
|
|||||||
*/
|
*/
|
||||||
List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
|
List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
|
||||||
|
|
||||||
|
@Select("""
|
||||||
|
WITH RECURSIVE dept_tree AS (
|
||||||
|
SELECT dept_id, parent_id, project_id, is_subset
|
||||||
|
FROM sys_dept
|
||||||
|
WHERE dept_id = #{deptId}
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT d.dept_id, d.parent_id, d.project_id, d.is_subset
|
||||||
|
FROM sys_dept d
|
||||||
|
INNER JOIN dept_tree dt ON d.parent_id = dt.dept_id
|
||||||
|
)
|
||||||
|
SELECT DISTINCT project_id
|
||||||
|
FROM dept_tree
|
||||||
|
WHERE is_subset = '0' AND project_id IS NOT NULL
|
||||||
|
""")
|
||||||
|
List<Long> getProjectIdsByDept(@Param("deptId") Long deptId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,14 @@ public interface ISysDeptService {
|
|||||||
// */
|
// */
|
||||||
// SysDeptBo selectDeptByIdBo(SysDeptBo dept);
|
// SysDeptBo selectDeptByIdBo(SysDeptBo dept);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门ID查询所属项目ID列表
|
||||||
|
*
|
||||||
|
* @param deptId 部门id
|
||||||
|
* @return 项目id列表
|
||||||
|
*/
|
||||||
|
List<Long> selectProjectIdById(Long deptId);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过部门名称查询部门ID
|
* 通过部门名称查询部门ID
|
||||||
|
@ -27,14 +27,6 @@ public interface ISysRoleService {
|
|||||||
*/
|
*/
|
||||||
List<SysRoleVo> selectRoleList(SysRoleBo role);
|
List<SysRoleVo> selectRoleList(SysRoleBo role);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件分页查询角色数据
|
|
||||||
*
|
|
||||||
* @param role 角色信息
|
|
||||||
* @return 角色数据集合信息
|
|
||||||
*/
|
|
||||||
List<SysRoleVo> selectRoleListByIsSubsetDept(SysRoleBo role);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户ID查询角色列表
|
* 根据用户ID查询角色列表
|
||||||
*
|
*
|
||||||
|
@ -9,10 +9,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.constant.CacheNames;
|
import org.dromara.common.core.constant.CacheNames;
|
||||||
import org.dromara.common.core.constant.HttpStatus;
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.domain.R;
|
|
||||||
import org.dromara.common.core.domain.dto.DeptDTO;
|
import org.dromara.common.core.domain.dto.DeptDTO;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.service.DeptService;
|
import org.dromara.common.core.service.DeptService;
|
||||||
@ -20,22 +20,19 @@ import org.dromara.common.core.utils.*;
|
|||||||
import org.dromara.common.mybatis.helper.DataBaseHelper;
|
import org.dromara.common.mybatis.helper.DataBaseHelper;
|
||||||
import org.dromara.common.redis.utils.CacheUtils;
|
import org.dromara.common.redis.utils.CacheUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.project.domain.BusProject;
|
||||||
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
||||||
import org.dromara.system.domain.SysDept;
|
import org.dromara.system.domain.SysDept;
|
||||||
import org.dromara.system.domain.SysRole;
|
import org.dromara.system.domain.SysRole;
|
||||||
import org.dromara.system.domain.SysUser;
|
import org.dromara.system.domain.SysUser;
|
||||||
import org.dromara.system.domain.bo.SysDeptBo;
|
import org.dromara.system.domain.bo.SysDeptBo;
|
||||||
import org.dromara.system.domain.bo.SysRoleBo;
|
|
||||||
import org.dromara.system.domain.enums.SysDeptIsSubsetEnum;
|
import org.dromara.system.domain.enums.SysDeptIsSubsetEnum;
|
||||||
import org.dromara.system.domain.enums.SysRoleIsSpecialEnum;
|
|
||||||
import org.dromara.system.domain.vo.SysDeptVo;
|
import org.dromara.system.domain.vo.SysDeptVo;
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
|
||||||
import org.dromara.system.mapper.SysDeptMapper;
|
import org.dromara.system.mapper.SysDeptMapper;
|
||||||
import org.dromara.system.mapper.SysRoleMapper;
|
import org.dromara.system.mapper.SysRoleMapper;
|
||||||
import org.dromara.system.mapper.SysUserMapper;
|
import org.dromara.system.mapper.SysUserMapper;
|
||||||
import org.dromara.system.service.ISysDeptService;
|
import org.dromara.system.service.ISysDeptService;
|
||||||
import org.dromara.system.service.ISysRoleService;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.cache.annotation.Caching;
|
import org.springframework.cache.annotation.Caching;
|
||||||
@ -45,12 +42,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门管理 服务实现
|
* 部门管理 服务实现
|
||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
||||||
@ -58,7 +57,8 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
private final SysDeptMapper baseMapper;
|
private final SysDeptMapper baseMapper;
|
||||||
private final SysRoleMapper roleMapper;
|
private final SysRoleMapper roleMapper;
|
||||||
private final SysUserMapper userMapper;
|
private final SysUserMapper userMapper;
|
||||||
private final ISysRoleService roleService;
|
private final IBusProjectService projectService;
|
||||||
|
private final IBusUserProjectRelevancyService userProjectRelevancyService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询部门管理数据
|
* 查询部门管理数据
|
||||||
@ -167,6 +167,17 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
return dept;
|
return dept;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门ID查询所属项目ID列表
|
||||||
|
*
|
||||||
|
* @param deptId 部门id
|
||||||
|
* @return 项目id列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Long> selectProjectIdById(Long deptId) {
|
||||||
|
return baseMapper.getProjectIdsByDept(deptId);
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 根据部门ID查询信息
|
// * 根据部门ID查询信息
|
||||||
// *
|
// *
|
||||||
@ -342,16 +353,13 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
if (LoginHelper.isSuperAdmin()) {
|
if (LoginHelper.isSuperAdmin()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SysDept dept = baseMapper.selectById(deptId);
|
List<SysRole> roleList = roleMapper.selectByIds(roleIds);
|
||||||
if (dept.getIsSubset().equals(SysDeptIsSubsetEnum.YES.getCode()) && CollUtil.isNotEmpty(roleIds)) {
|
for (SysRole role : roleList) {
|
||||||
List<SysRole> roleList = roleMapper.selectByIds(roleIds);
|
if (!role.getStatus().equals(SystemConstants.NORMAL)) {
|
||||||
for (SysRole role : roleList) {
|
throw new ServiceException("角色停用,不允许分配", HttpStatus.BAD_REQUEST);
|
||||||
if (!role.getStatus().equals(SystemConstants.NORMAL)) {
|
}
|
||||||
throw new ServiceException("角色停用,不允许分配", HttpStatus.BAD_REQUEST);
|
if (!role.getDeptId().equals(deptId)) {
|
||||||
}
|
throw new ServiceException("角色部门与部门不匹配", HttpStatus.BAD_REQUEST);
|
||||||
if (role.getIsSpecial().equals(SysRoleIsSpecialEnum.NO.getCode())) {
|
|
||||||
throw new ServiceException("当前部门与角色不匹配,请重新选择", HttpStatus.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,12 +379,35 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
if (!SystemConstants.NORMAL.equals(info.getStatus())) {
|
if (!SystemConstants.NORMAL.equals(info.getStatus())) {
|
||||||
throw new ServiceException("部门停用,不允许新增");
|
throw new ServiceException("部门停用,不允许新增");
|
||||||
}
|
}
|
||||||
if (!"0".equals(info.getIsSubset())){
|
if (SysDeptIsSubsetEnum.NO.getCode().equals(info.getIsSubset())) {
|
||||||
throw new ServiceException("当前部门不允许有子部门");
|
throw new ServiceException("当前部门不允许有子部门");
|
||||||
}
|
}
|
||||||
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
|
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
|
||||||
|
if (dept == null) {
|
||||||
|
throw new ServiceException("新增部门参数异常", HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
|
dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
|
||||||
return baseMapper.insert(dept);
|
String isSubset = bo.getIsSubset();
|
||||||
|
if (SysDeptIsSubsetEnum.NO.getCode().equals(isSubset)) {
|
||||||
|
Long projectId = bo.getProjectId();
|
||||||
|
if (projectId != null) {
|
||||||
|
BusProject project = projectService.getById(projectId);
|
||||||
|
if (project == null) {
|
||||||
|
throw new ServiceException("项目不存在", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
dept.setProjectId(projectId);
|
||||||
|
// 判断是否有需要新增项目关联的用户
|
||||||
|
List<Long> deptIds = this.getParentDeptIds(dept);
|
||||||
|
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
|
||||||
|
lqw.select(SysUser::getUserId);
|
||||||
|
lqw.in(SysUser::getDeptId, deptIds);
|
||||||
|
List<Long> userIds = userMapper.selectList(lqw).stream().map(SysUser::getUserId).toList();
|
||||||
|
if (CollUtil.isNotEmpty(userIds)) {
|
||||||
|
userProjectRelevancyService.saveBatchByUserList(projectId, userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return baseMapper.insert(dept);
|
||||||
// // cory 判断是否需要直接新增角色
|
// // cory 判断是否需要直接新增角色
|
||||||
// SysRoleBo role = getSysRoleBo(bo);
|
// SysRoleBo role = getSysRoleBo(bo);
|
||||||
// roleService.checkRoleAllowed(role);
|
// roleService.checkRoleAllowed(role);
|
||||||
@ -444,6 +475,37 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
} else {
|
} else {
|
||||||
dept.setAncestors(oldDept.getAncestors());
|
dept.setAncestors(oldDept.getAncestors());
|
||||||
}
|
}
|
||||||
|
// 新增逻辑:判断是否需要更新用户与项目的关联
|
||||||
|
String isSubset = dept.getIsSubset();
|
||||||
|
Long oldProjectId = oldDept.getProjectId();
|
||||||
|
Long newProjectId = dept.getProjectId();
|
||||||
|
if (SysDeptIsSubsetEnum.NO.getCode().equals(isSubset) && newProjectId != null) {
|
||||||
|
// 检查新项目是否存在
|
||||||
|
BusProject project = projectService.getById(newProjectId);
|
||||||
|
if (project == null) {
|
||||||
|
throw new ServiceException("关联项目不存在", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
// 获取当前部门及其上级部门 ID 列表
|
||||||
|
List<Long> deptIds = this.getParentDeptIds(dept);
|
||||||
|
// 获取部门用户 ID
|
||||||
|
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
|
||||||
|
lqw.select(SysUser::getUserId);
|
||||||
|
lqw.in(SysUser::getDeptId, deptIds);
|
||||||
|
List<Long> userIds = userMapper.selectList(lqw).stream()
|
||||||
|
.map(SysUser::getUserId)
|
||||||
|
.toList();
|
||||||
|
if (CollUtil.isNotEmpty(userIds)) {
|
||||||
|
// 情况 1:原本有项目,且项目 ID 改变 → 删除旧的,添加新的
|
||||||
|
if (oldProjectId != null && !Objects.equals(oldProjectId, newProjectId)) {
|
||||||
|
userProjectRelevancyService.deleteByProjectAndUserIds(oldProjectId, userIds);
|
||||||
|
userProjectRelevancyService.saveBatchByUserList(newProjectId, userIds);
|
||||||
|
}
|
||||||
|
// 情况 2:原本没有项目,现在新增了 → 直接添加
|
||||||
|
if (oldProjectId == null) {
|
||||||
|
userProjectRelevancyService.saveBatchByUserList(newProjectId, userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
int result = baseMapper.updateById(dept);
|
int result = baseMapper.updateById(dept);
|
||||||
if (SystemConstants.NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
|
if (SystemConstants.NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
|
||||||
&& !StringUtils.equals(SystemConstants.NORMAL, dept.getAncestors())) {
|
&& !StringUtils.equals(SystemConstants.NORMAL, dept.getAncestors())) {
|
||||||
@ -522,4 +584,27 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
return baseMapper.deleteById(deptId);
|
return baseMapper.deleteById(deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部门以及父部门ID列表
|
||||||
|
*
|
||||||
|
* @param dept 部门
|
||||||
|
* @return 部门ID列表
|
||||||
|
*/
|
||||||
|
public List<Long> getParentDeptIds(SysDept dept) {
|
||||||
|
List<Long> deptIds = new ArrayList<>();
|
||||||
|
|
||||||
|
if (StringUtils.isNotBlank(dept.getAncestors())) {
|
||||||
|
String[] ids = dept.getAncestors().split(",");
|
||||||
|
for (String id : ids) {
|
||||||
|
if (!"0".equals(id)) {
|
||||||
|
deptIds.add(Long.parseLong(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上自己
|
||||||
|
deptIds.add(dept.getDeptId());
|
||||||
|
return deptIds;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,6 @@ import org.dromara.system.domain.SysRoleDept;
|
|||||||
import org.dromara.system.domain.SysRoleMenu;
|
import org.dromara.system.domain.SysRoleMenu;
|
||||||
import org.dromara.system.domain.SysUserRole;
|
import org.dromara.system.domain.SysUserRole;
|
||||||
import org.dromara.system.domain.bo.SysRoleBo;
|
import org.dromara.system.domain.bo.SysRoleBo;
|
||||||
import org.dromara.system.domain.enums.SysDeptIsSubsetEnum;
|
|
||||||
import org.dromara.system.domain.enums.SysRoleIsSpecialEnum;
|
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
||||||
import org.dromara.system.mapper.SysRoleDeptMapper;
|
import org.dromara.system.mapper.SysRoleDeptMapper;
|
||||||
import org.dromara.system.mapper.SysRoleMapper;
|
import org.dromara.system.mapper.SysRoleMapper;
|
||||||
@ -74,29 +72,11 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
|
|||||||
return baseMapper.selectRoleList(this.buildQueryWrapper(role));
|
return baseMapper.selectRoleList(this.buildQueryWrapper(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件分页查询角色数据
|
|
||||||
*
|
|
||||||
* @param role 角色信息
|
|
||||||
* @return 角色数据集合信息
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<SysRoleVo> selectRoleListByIsSubsetDept(SysRoleBo role) {
|
|
||||||
LambdaQueryWrapper<SysRole> lqw = new LambdaQueryWrapper<>();
|
|
||||||
String isSubsetDept = role.getIsSubsetDept();
|
|
||||||
if (StringUtils.isNotBlank(isSubsetDept)) {
|
|
||||||
if (isSubsetDept.equals(SysDeptIsSubsetEnum.YES.getCode())) {
|
|
||||||
lqw.eq(SysRole::getIsSpecial, SysRoleIsSpecialEnum.NO.getCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lqw.eq(SysRole::getIsSpecial, true);
|
|
||||||
return List.of();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Wrapper<SysRole> buildQueryWrapper(SysRoleBo bo) {
|
private Wrapper<SysRole> buildQueryWrapper(SysRoleBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
QueryWrapper<SysRole> wrapper = Wrappers.query();
|
QueryWrapper<SysRole> wrapper = Wrappers.query();
|
||||||
wrapper.eq("r.del_flag", SystemConstants.NORMAL)
|
wrapper.eq("r.del_flag", SystemConstants.NORMAL)
|
||||||
|
.eq(ObjectUtil.isNotNull(bo.getDeptId()), "r.dept_id", bo.getDeptId())
|
||||||
.eq(ObjectUtil.isNotNull(bo.getIsSpecial()), "r.is_special", bo.getIsSpecial())
|
.eq(ObjectUtil.isNotNull(bo.getIsSpecial()), "r.is_special", bo.getIsSpecial())
|
||||||
.eq(ObjectUtil.isNotNull(bo.getRoleId()), "r.role_id", bo.getRoleId())
|
.eq(ObjectUtil.isNotNull(bo.getRoleId()), "r.role_id", bo.getRoleId())
|
||||||
.like(StringUtils.isNotBlank(bo.getRoleName()), "r.role_name", bo.getRoleName())
|
.like(StringUtils.isNotBlank(bo.getRoleName()), "r.role_name", bo.getRoleName())
|
||||||
|
@ -23,6 +23,7 @@ import org.dromara.common.core.utils.*;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.project.service.IBusUserProjectRelevancyService;
|
||||||
import org.dromara.system.domain.*;
|
import org.dromara.system.domain.*;
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
import org.dromara.system.domain.vo.SysPostVo;
|
import org.dromara.system.domain.vo.SysPostVo;
|
||||||
@ -30,6 +31,7 @@ import org.dromara.system.domain.vo.SysRoleVo;
|
|||||||
import org.dromara.system.domain.vo.SysUserExportVo;
|
import org.dromara.system.domain.vo.SysUserExportVo;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.mapper.*;
|
import org.dromara.system.mapper.*;
|
||||||
|
import org.dromara.system.service.ISysDeptService;
|
||||||
import org.dromara.system.service.ISysUserFileService;
|
import org.dromara.system.service.ISysUserFileService;
|
||||||
import org.dromara.system.service.ISysUserService;
|
import org.dromara.system.service.ISysUserService;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
@ -57,6 +59,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
private final SysPostMapper postMapper;
|
private final SysPostMapper postMapper;
|
||||||
private final SysUserRoleMapper userRoleMapper;
|
private final SysUserRoleMapper userRoleMapper;
|
||||||
private final SysUserPostMapper userPostMapper;
|
private final SysUserPostMapper userPostMapper;
|
||||||
|
private final ISysDeptService deptService;
|
||||||
|
private final IBusUserProjectRelevancyService userProjectRelevancyService;
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Resource
|
@Resource
|
||||||
@ -330,6 +334,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
insertUserPost(user, false);
|
insertUserPost(user, false);
|
||||||
// 新增用户与角色管理
|
// 新增用户与角色管理
|
||||||
insertUserRole(user, false);
|
insertUserRole(user, false);
|
||||||
|
// 关联部门所属项目
|
||||||
|
List<Long> projectIds = deptService.selectProjectIdById(user.getDeptId());
|
||||||
|
userProjectRelevancyService.saveBatchByProjectList(projectIds, user.getUserId());
|
||||||
return rows;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,6 +375,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
if (flag < 1) {
|
if (flag < 1) {
|
||||||
throw new ServiceException("修改用户" + user.getUserName() + "信息失败");
|
throw new ServiceException("修改用户" + user.getUserName() + "信息失败");
|
||||||
}
|
}
|
||||||
|
// 先删除旧关联
|
||||||
|
userProjectRelevancyService.deleteByUserId(user.getUserId());
|
||||||
|
// 添加新关联
|
||||||
|
List<Long> projectIds = deptService.selectProjectIdById(user.getDeptId());
|
||||||
|
userProjectRelevancyService.saveBatchByProjectList(projectIds, user.getUserId());
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user