mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	抽取 activiti 到module-bpm-activiti, 为接入flowable 准备
This commit is contained in:
		
							
								
								
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							@@ -13,6 +13,7 @@
 | 
			
		||||
        <module>yudao-admin-server</module>
 | 
			
		||||
        <module>yudao-user-server</module>
 | 
			
		||||
        <module>yudao-core-service</module>
 | 
			
		||||
        <module>yudao-module-bpm</module>
 | 
			
		||||
    </modules>
 | 
			
		||||
 | 
			
		||||
    <name>${artifactId}</name>
 | 
			
		||||
 
 | 
			
		||||
@@ -44,9 +44,10 @@
 | 
			
		||||
            <artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- 默认引入bpm-activiti. 可以替换为bpm-flowable -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
            <artifactId>yudao-spring-boot-starter-activiti</artifactId>
 | 
			
		||||
            <artifactId>yudao-module-bpm-activiti</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- Web 相关 -->
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiacces
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierror
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.order;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.refund.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,6 @@ package cn.iocoder.yudao.adminserver.modules.pay.convert.app;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageItemRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,13 +3,15 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysUserSessionConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 | 
			
		||||
@@ -38,9 +40,10 @@ public class SysUserSessionController {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserSessionCoreService userSessionCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserService userService;
 | 
			
		||||
    private SysUserCoreService userCoreService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @ApiOperation("获得 Session 分页列表")
 | 
			
		||||
@@ -50,9 +53,9 @@ public class SysUserSessionController {
 | 
			
		||||
        PageResult<SysUserSessionDO> pageResult = userSessionService.getUserSessionPage(reqVO);
 | 
			
		||||
 | 
			
		||||
        // 获得拼接需要的数据
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userService.getUserMap(
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userCoreService.getUserMap(
 | 
			
		||||
                convertList(pageResult.getList(), SysUserSessionDO::getUserId));
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptService.getDeptMap(
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(
 | 
			
		||||
                convertList(userMap.values(), SysUserDO::getDeptId));
 | 
			
		||||
        // 拼接结果返回
 | 
			
		||||
        List<SysUserSessionPageItemRespVO> sessionList = new ArrayList<>(pageResult.getList().size());
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,11 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.controller.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiImplicitParam;
 | 
			
		||||
@@ -29,6 +30,9 @@ public class SysDeptController {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
 | 
			
		||||
    @PostMapping("create")
 | 
			
		||||
    @ApiOperation("创建部门")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:dept:create')")
 | 
			
		||||
@@ -80,7 +84,7 @@ public class SysDeptController {
 | 
			
		||||
    @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:dept:query')")
 | 
			
		||||
    public CommonResult<SysDeptRespVO> getDept(@RequestParam("id") Long id) {
 | 
			
		||||
        return success(SysDeptConvert.INSTANCE.convert(deptService.getDept(id)));
 | 
			
		||||
        return success(SysDeptConvert.INSTANCE.convert(deptCoreService.getDept(id)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiImplicitParam;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOper
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
@@ -44,7 +45,7 @@ public class SysOperateLogController {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysOperateLogService operateLogService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserService userService;
 | 
			
		||||
    private SysUserCoreService userCoreService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @ApiOperation("查看操作日志分页列表")
 | 
			
		||||
@@ -54,7 +55,7 @@ public class SysOperateLogController {
 | 
			
		||||
 | 
			
		||||
        // 获得拼接需要的数据
 | 
			
		||||
        Collection<Long> userIds = CollectionUtils.convertList(pageResult.getList(), SysOperateLogDO::getUserId);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userService.getUserMap(userIds);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userCoreService.getUserMap(userIds);
 | 
			
		||||
        // 拼接数据
 | 
			
		||||
        List<SysOperateLogRespVO> list = new ArrayList<>(pageResult.getList().size());
 | 
			
		||||
        pageResult.getList().forEach(operateLog -> {
 | 
			
		||||
@@ -75,7 +76,7 @@ public class SysOperateLogController {
 | 
			
		||||
 | 
			
		||||
        // 获得拼接需要的数据
 | 
			
		||||
        Collection<Long> userIds = CollectionUtils.convertList(list, SysOperateLogDO::getUserId);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userService.getUserMap(userIds);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = userCoreService.getUserMap(userIds);
 | 
			
		||||
        // 拼接数据
 | 
			
		||||
        List<SysOperateLogExcelVO> excelDataList = SysOperateLogConvert.INSTANCE.convertList(list, userMap);
 | 
			
		||||
        // 输出
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlo
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operate
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiImplicitParam;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.rol
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +1,17 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.controller.user;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptSimpleRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
 | 
			
		||||
@@ -50,7 +46,7 @@ public class SysUserController {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserCoreService userCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/create")
 | 
			
		||||
    @ApiOperation("新增用户")
 | 
			
		||||
@@ -105,7 +101,7 @@ public class SysUserController {
 | 
			
		||||
 | 
			
		||||
        // 获得拼接需要的数据
 | 
			
		||||
        Collection<Long> deptIds = convertList(pageResult.getList(), SysUserDO::getDeptId);
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptService.getDeptMap(deptIds);
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds);
 | 
			
		||||
        // 拼接结果返回
 | 
			
		||||
        List<SysUserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size());
 | 
			
		||||
        pageResult.getList().forEach(user -> {
 | 
			
		||||
@@ -144,8 +140,8 @@ public class SysUserController {
 | 
			
		||||
 | 
			
		||||
        // 获得拼接需要的数据
 | 
			
		||||
        Collection<Long> deptIds = convertList(users, SysUserDO::getDeptId);
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptService.getDeptMap(deptIds);
 | 
			
		||||
        Map<Long, SysUserDO> deptLeaderUserMap = userService.getUserMap(convertSet(deptMap.values(), SysDeptDO::getLeaderUserId));
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds);
 | 
			
		||||
        Map<Long, SysUserDO> deptLeaderUserMap = userCoreService.getUserMap(convertSet(deptMap.values(), SysDeptDO::getLeaderUserId));
 | 
			
		||||
        // 拼接数据
 | 
			
		||||
        List<SysUserExcelVO> excelUsers = new ArrayList<>(users.size());
 | 
			
		||||
        users.forEach(user -> {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,16 +5,16 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.Sy
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
@@ -48,7 +48,8 @@ public class SysUserProfileController {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserCoreService userCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysPostService postService;
 | 
			
		||||
    @Resource
 | 
			
		||||
@@ -69,7 +70,7 @@ public class SysUserProfileController {
 | 
			
		||||
        resp.setRoles(SysUserConvert.INSTANCE.convertList(userRoles));
 | 
			
		||||
        // 获得部门信息
 | 
			
		||||
        if (user.getDeptId() != null) {
 | 
			
		||||
            SysDeptDO dept = deptService.getDept(user.getDeptId());
 | 
			
		||||
            SysDeptDO dept = deptCoreService.getDept(user.getDeptId());
 | 
			
		||||
            resp.setDept(SysUserConvert.INSTANCE.convert02(dept));
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.system.convert.auth;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDe
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptSimpleRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.system.convert.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.convert.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,9 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.Sy
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,9 @@ package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.tool.enums.SqlConstants;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
import org.springframework.lang.Nullable;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@@ -20,9 +20,6 @@ public interface SysUserRoleMapper extends BaseMapperX<SysUserRoleDO> {
 | 
			
		||||
        return selectList(new QueryWrapper<SysUserRoleDO>().eq("role_id", roleId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default List<SysUserRoleDO> selectListByRoleIds(Collection<Long> roleIds) {
 | 
			
		||||
        return selectList("role_id", roleIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default void insertList(Long userId, Collection<Long> roleIds) {
 | 
			
		||||
        List<SysUserRoleDO> list = roleIds.stream().map(roleId -> {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.framework.datapermission.config;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer;
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAu
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
@@ -46,27 +46,6 @@ public interface SysDeptService {
 | 
			
		||||
     */
 | 
			
		||||
    void deleteDept(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定编号的部门列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门列表
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getSimpleDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定编号的部门 Map
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门 Map
 | 
			
		||||
     */
 | 
			
		||||
    default Map<Long, SysDeptDO> getDeptMap(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return Collections.emptyMap();
 | 
			
		||||
        }
 | 
			
		||||
        List<SysDeptDO> list = getSimpleDepts(ids);
 | 
			
		||||
        return CollectionUtils.convertMap(list, SysDeptDO::getId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 筛选部门列表
 | 
			
		||||
@@ -76,22 +55,6 @@ public interface SysDeptService {
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getSimpleDepts(SysDeptListReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得部门信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 部门编号
 | 
			
		||||
     * @return 部门信息
 | 
			
		||||
     */
 | 
			
		||||
    SysDeptDO getDept(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得部门信息数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门信息数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得所有子部门,从缓存中
 | 
			
		||||
     *
 | 
			
		||||
@@ -101,13 +64,4 @@ public interface SysDeptService {
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getDeptsByParentIdFromCache(Long parentId, boolean recursive);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验部门们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 部门编号不存在
 | 
			
		||||
     * 2. 部门被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 角色编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPo
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import org.springframework.lang.Nullable;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
@@ -86,13 +86,4 @@ public interface SysPostService {
 | 
			
		||||
     */
 | 
			
		||||
    SysPostDO getPost(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验岗位们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 岗位编号不存在
 | 
			
		||||
     * 2. 岗位被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 岗位编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validPosts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDe
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
@@ -159,11 +159,6 @@ public class SysDeptServiceImpl implements SysDeptService {
 | 
			
		||||
        deptProducer.sendDeptRefreshMessage();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDeptDO> getSimpleDepts(Collection<Long> ids) {
 | 
			
		||||
        return deptMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDeptDO> getSimpleDepts(SysDeptListReqVO reqVO) {
 | 
			
		||||
        return deptMapper.selectList(reqVO);
 | 
			
		||||
@@ -182,26 +177,6 @@ public class SysDeptServiceImpl implements SysDeptService {
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validDepts(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得科室信息
 | 
			
		||||
        List<SysDeptDO> depts = deptMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = CollectionUtils.convertMap(depts, SysDeptDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysDeptDO dept = deptMap.get(id);
 | 
			
		||||
            if (dept == null) {
 | 
			
		||||
                throw exception(DEPT_NOT_FOUND);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) {
 | 
			
		||||
                throw exception(DEPT_NOT_ENABLE, dept.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 递归获取所有的子部门,添加到 result 结果
 | 
			
		||||
     *
 | 
			
		||||
@@ -227,16 +202,6 @@ public class SysDeptServiceImpl implements SysDeptService {
 | 
			
		||||
                recursiveCount - 1, parentDeptMap));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public SysDeptDO getDept(Long id) {
 | 
			
		||||
        return deptMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDeptDO> getDepts(Collection<Long> ids) {
 | 
			
		||||
        return deptMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkCreateOrUpdate(Long id, Long parentId, String name) {
 | 
			
		||||
        // 校验自己存在
 | 
			
		||||
        checkDeptExists(id);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.service.dept.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
 | 
			
		||||
@@ -11,16 +8,14 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPo
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
@@ -84,26 +79,6 @@ public class SysPostServiceImpl implements SysPostService {
 | 
			
		||||
        return postMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validPosts(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        List<SysPostDO> posts = postMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysPostDO post = postMap.get(id);
 | 
			
		||||
            if (post == null) {
 | 
			
		||||
                throw exception(POST_NOT_FOUND);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) {
 | 
			
		||||
                throw exception(POST_NOT_ENABLE, post.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkCreateOrUpdate(Long id, String name, String code) {
 | 
			
		||||
        // 校验自己存在
 | 
			
		||||
        checkPostExists(id);
 | 
			
		||||
 
 | 
			
		||||
@@ -79,14 +79,4 @@ public interface SysDictDataService {
 | 
			
		||||
     */
 | 
			
		||||
    int countByDictType(String dictType);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验字典数据们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 字典数据不存在
 | 
			
		||||
     * 2. 字典数据被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型
 | 
			
		||||
     * @param values 字典数据值的数组
 | 
			
		||||
     */
 | 
			
		||||
    void validDictDatas(String dictType, Collection<String> values);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -134,25 +134,6 @@ public class SysDictDataServiceImpl implements SysDictDataService {
 | 
			
		||||
        return dictDataMapper.selectCountByDictType(dictType);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validDictDatas(String dictType, Collection<String> values) {
 | 
			
		||||
        if (CollUtil.isEmpty(values)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得字典数据信息
 | 
			
		||||
        List<SysDictDataDO> dictDatas = dictDataMapper.selectByDictTypeAndValues(dictType, values);
 | 
			
		||||
        Map<String, SysDictDataDO> dictDataMap = CollectionUtils.convertMap(dictDatas, SysDictDataDO::getValue);
 | 
			
		||||
        // 校验
 | 
			
		||||
        values.forEach(value -> {
 | 
			
		||||
            SysDictDataDO dictData = dictDataMap.get(value);
 | 
			
		||||
            if (dictData == null) {
 | 
			
		||||
                throw exception(DICT_DATA_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(dictData.getStatus())) {
 | 
			
		||||
                throw exception(DICT_DATA_NOT_ENABLE, dictData.getLabel());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkCreateOrUpdate(Long id, String value, String dictType) {
 | 
			
		||||
        // 校验自己存在
 | 
			
		||||
 
 | 
			
		||||
@@ -77,14 +77,6 @@ public interface SysPermissionService extends SecurityPermissionFrameworkService
 | 
			
		||||
     */
 | 
			
		||||
    Set<Long> getUserRoleIdListByRoleId(Long roleId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得拥有多个角色的用户编号集合
 | 
			
		||||
     *
 | 
			
		||||
     * @param roleIds 角色编号集合
 | 
			
		||||
     * @return 用户编号集合
 | 
			
		||||
     */
 | 
			
		||||
    Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 设置用户角色
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import org.springframework.lang.Nullable;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
@@ -129,13 +129,6 @@ public interface SysRoleService {
 | 
			
		||||
     */
 | 
			
		||||
    List<SysRoleDO> getRoleList(SysRoleExportReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验角色们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 角色编号不存在
 | 
			
		||||
     * 2. 角色被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 角色编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validRoles(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,11 @@ package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl;
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.collection.CollectionUtil;
 | 
			
		||||
import cn.hutool.core.util.ArrayUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer;
 | 
			
		||||
@@ -227,11 +227,7 @@ public class SysPermissionServiceImpl implements SysPermissionService {
 | 
			
		||||
                SysUserRoleDO::getRoleId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds) {
 | 
			
		||||
        return CollectionUtils.convertSet(userRoleMapper.selectListByRoleIds(roleIds),
 | 
			
		||||
                SysUserRoleDO::getRoleId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void assignUserRole(Long userId, Set<Long> roleIds) {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl;
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.collection.CollectionUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
 | 
			
		||||
@@ -13,7 +11,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.RoleCodeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer;
 | 
			
		||||
@@ -34,7 +32,6 @@ import org.springframework.util.StringUtils;
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
 | 
			
		||||
@@ -241,26 +238,6 @@ public class SysRoleServiceImpl implements SysRoleService {
 | 
			
		||||
        return roleMapper.listRoles(reqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validRoles(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得角色信息
 | 
			
		||||
        List<SysRoleDO> roles = roleMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysRoleDO> roleMap = CollectionUtils.convertMap(roles, SysRoleDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysRoleDO role = roleMap.get(id);
 | 
			
		||||
            if (role == null) {
 | 
			
		||||
                throw exception(ROLE_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())) {
 | 
			
		||||
                throw exception(ROLE_IS_DISABLE, role.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验角色的唯一字段是否重复
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -120,26 +120,7 @@ public interface SysUserService {
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsers(SysUserExportReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得用户列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     * @return 用户列表
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsers(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得用户 Map
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     * @return 用户 Map
 | 
			
		||||
     */
 | 
			
		||||
    default Map<Long, SysUserDO> getUserMap(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return new HashMap<>();
 | 
			
		||||
        }
 | 
			
		||||
        return CollectionUtils.convertMap(getUsers(ids), SysUserDO::getId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得用户列表,基于昵称模糊匹配
 | 
			
		||||
@@ -174,29 +155,4 @@ public interface SysUserService {
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsersByStatus(Integer status);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定岗位的用户数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param postIds 岗位数组
 | 
			
		||||
     * @return 用户数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsersByPostIds(Collection<Long> postIds);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定部门的用户数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param deptIds 部门数组
 | 
			
		||||
     * @return 用户数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验用户们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 用户编号不存在
 | 
			
		||||
     * 2. 用户被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validUsers(Set<Long> ids);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.Sy
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
 | 
			
		||||
@@ -17,6 +17,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermiss
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
@@ -52,6 +53,9 @@ public class SysUserServiceImpl implements SysUserService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysPostService postService;
 | 
			
		||||
    @Resource
 | 
			
		||||
@@ -174,18 +178,6 @@ public class SysUserServiceImpl implements SysUserService {
 | 
			
		||||
        return userMapper.selectList(reqVO, this.getDeptCondition(reqVO.getDeptId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsers(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        return userMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<Long, SysUserDO> getUserMap(Collection<Long> ids) {
 | 
			
		||||
        return SysUserService.super.getUserMap(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsersByNickname(String nickname) {
 | 
			
		||||
@@ -299,7 +291,7 @@ public class SysUserServiceImpl implements SysUserService {
 | 
			
		||||
        if (deptId == null) { // 允许不选择
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        SysDeptDO dept = deptService.getDept(deptId);
 | 
			
		||||
        SysDeptDO dept = deptCoreService.getDept(deptId);
 | 
			
		||||
        if (dept == null) {
 | 
			
		||||
            throw exception(DEPT_NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
@@ -389,44 +381,4 @@ public class SysUserServiceImpl implements SysUserService {
 | 
			
		||||
        return userMapper.selectListByStatus(status);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsersByPostIds(Collection<Long> postIds) {
 | 
			
		||||
        if (CollUtil.isEmpty(postIds)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        // 过滤不符合条件的
 | 
			
		||||
        // TODO 芋艿:暂时只能内存过滤。解决方案:1、新建一个关联表;2、基于 where + 函数;3、json 字段,适合 mysql 8+ 版本
 | 
			
		||||
        List<SysUserDO> users = userMapper.selectList();
 | 
			
		||||
        users.removeIf(user -> !CollUtil.containsAny(user.getPostIds(), postIds));
 | 
			
		||||
        return users;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds) {
 | 
			
		||||
        if (CollUtil.isEmpty(deptIds)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        return userMapper.selectListByDeptIds(deptIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validUsers(Set<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        List<SysUserDO> users = userMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = CollectionUtils.convertMap(users, SysUserDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysUserDO user = userMap.get(id);
 | 
			
		||||
            if (user == null) {
 | 
			
		||||
                throw exception(USER_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(user.getStatus())) {
 | 
			
		||||
                throw exception(USER_IS_DISABLE, user.getNickname());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,152 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.definition;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.RandomUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmFormFieldRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmFormServiceImpl;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.springframework.context.annotation.Import;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.FORM_NOT_EXISTS;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * {@link BpmFormServiceImpl} 的单元测试类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Import(BpmFormServiceImpl.class)
 | 
			
		||||
public class BpmFormServiceTest extends BaseDbUnitTest {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private BpmFormServiceImpl formService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private BpmFormMapper formMapper;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateForm_success() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmFormCreateReqVO reqVO = randomPojo(BpmFormCreateReqVO.class, o -> {
 | 
			
		||||
            o.setConf("{}");
 | 
			
		||||
            o.setFields(randomFields());
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        Long formId = formService.createForm(reqVO);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertNotNull(formId);
 | 
			
		||||
        // 校验记录的属性是否正确
 | 
			
		||||
        BpmFormDO form = formMapper.selectById(formId);
 | 
			
		||||
        assertPojoEquals(reqVO, form);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateForm_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> {
 | 
			
		||||
            o.setConf("{}");
 | 
			
		||||
            o.setFields(randomFields());
 | 
			
		||||
        });
 | 
			
		||||
        formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> {
 | 
			
		||||
            o.setId(dbForm.getId()); // 设置更新的 ID
 | 
			
		||||
            o.setConf("{'yudao': 'yuanma'}");
 | 
			
		||||
            o.setFields(randomFields());
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        formService.updateForm(reqVO);
 | 
			
		||||
        // 校验是否更新正确
 | 
			
		||||
        BpmFormDO form = formMapper.selectById(reqVO.getId()); // 获取最新的
 | 
			
		||||
        assertPojoEquals(reqVO, form);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateForm_notExists() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> {
 | 
			
		||||
            o.setConf("{'yudao': 'yuanma'}");
 | 
			
		||||
            o.setFields(randomFields());
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> formService.updateForm(reqVO), FORM_NOT_EXISTS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeleteForm_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        BpmFormDO dbForm = randomPojo(BpmFormDO.class);
 | 
			
		||||
        formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = dbForm.getId();
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        formService.deleteForm(id);
 | 
			
		||||
        // 校验数据不存在了
 | 
			
		||||
        assertNull(formMapper.selectById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeleteForm_notExists() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = randomLongId();
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> formService.deleteForm(id), FORM_NOT_EXISTS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGetFormPage() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> { // 等会查询到
 | 
			
		||||
            o.setName("芋道源码");
 | 
			
		||||
        });
 | 
			
		||||
        formMapper.insert(dbForm);
 | 
			
		||||
        // 测试 name 不匹配
 | 
			
		||||
        formMapper.insert(cloneIgnoreId(dbForm, o -> o.setName("源码")));
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmFormPageReqVO reqVO = new BpmFormPageReqVO();
 | 
			
		||||
        reqVO.setName("芋道");
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        PageResult<BpmFormDO> pageResult = formService.getFormPage(reqVO);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertEquals(1, pageResult.getTotal());
 | 
			
		||||
        assertEquals(1, pageResult.getList().size());
 | 
			
		||||
        assertPojoEquals(dbForm, pageResult.getList().get(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<String> randomFields() {
 | 
			
		||||
        int size = RandomUtil.randomInt(1, 3);
 | 
			
		||||
        return Stream.iterate(0, i -> i).limit(size)
 | 
			
		||||
                .map(i -> JsonUtils.toJsonString(randomPojo(BpmFormFieldRespDTO.class)))
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,134 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.definition;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.date.DateUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmUserGroupDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmUserGroupMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmUserGroupServiceImpl;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.springframework.context.annotation.Import;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.USER_GROUP_NOT_EXISTS;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* {@link BpmUserGroupServiceImpl} 的单元测试类
 | 
			
		||||
*
 | 
			
		||||
* @author 芋道源码
 | 
			
		||||
*/
 | 
			
		||||
@Import(BpmUserGroupServiceImpl.class)
 | 
			
		||||
public class BpmUserGroupServiceTest extends BaseDbUnitTest {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private BpmUserGroupServiceImpl userGroupService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private BpmUserGroupMapper userGroupMapper;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateUserGroup_success() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmUserGroupCreateReqVO reqVO = randomPojo(BpmUserGroupCreateReqVO.class);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        Long userGroupId = userGroupService.createUserGroup(reqVO);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertNotNull(userGroupId);
 | 
			
		||||
        // 校验记录的属性是否正确
 | 
			
		||||
        BpmUserGroupDO userGroup = userGroupMapper.selectById(userGroupId);
 | 
			
		||||
        assertPojoEquals(reqVO, userGroup);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateUserGroup_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        BpmUserGroupDO dbUserGroup = randomPojo(BpmUserGroupDO.class);
 | 
			
		||||
        userGroupMapper.insert(dbUserGroup);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmUserGroupUpdateReqVO reqVO = randomPojo(BpmUserGroupUpdateReqVO.class, o -> {
 | 
			
		||||
            o.setId(dbUserGroup.getId()); // 设置更新的 ID
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        userGroupService.updateUserGroup(reqVO);
 | 
			
		||||
        // 校验是否更新正确
 | 
			
		||||
        BpmUserGroupDO userGroup = userGroupMapper.selectById(reqVO.getId()); // 获取最新的
 | 
			
		||||
        assertPojoEquals(reqVO, userGroup);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateUserGroup_notExists() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        BpmUserGroupUpdateReqVO reqVO = randomPojo(BpmUserGroupUpdateReqVO.class);
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> userGroupService.updateUserGroup(reqVO), USER_GROUP_NOT_EXISTS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeleteUserGroup_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        BpmUserGroupDO dbUserGroup = randomPojo(BpmUserGroupDO.class);
 | 
			
		||||
        userGroupMapper.insert(dbUserGroup);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = dbUserGroup.getId();
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        userGroupService.deleteUserGroup(id);
 | 
			
		||||
       // 校验数据不存在了
 | 
			
		||||
       assertNull(userGroupMapper.selectById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeleteUserGroup_notExists() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = randomLongId();
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> userGroupService.deleteUserGroup(id), USER_GROUP_NOT_EXISTS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGetUserGroupPage() {
 | 
			
		||||
       // mock 数据
 | 
			
		||||
       BpmUserGroupDO dbUserGroup = randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
 | 
			
		||||
           o.setName("芋道源码");
 | 
			
		||||
           o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
           o.setCreateTime(DateUtils.buildTime(2021, 11, 11));
 | 
			
		||||
       });
 | 
			
		||||
       userGroupMapper.insert(dbUserGroup);
 | 
			
		||||
       // 测试 name 不匹配
 | 
			
		||||
       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName("芋道")));
 | 
			
		||||
       // 测试 status 不匹配
 | 
			
		||||
       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
			
		||||
       // 测试 createTime 不匹配
 | 
			
		||||
       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12))));
 | 
			
		||||
       // 准备参数
 | 
			
		||||
       BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
 | 
			
		||||
       reqVO.setName("源码");
 | 
			
		||||
       reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
       reqVO.setBeginCreateTime(DateUtils.buildTime(2021, 11, 10));
 | 
			
		||||
       reqVO.setEndCreateTime(DateUtils.buildTime(2021, 11, 12));
 | 
			
		||||
 | 
			
		||||
       // 调用
 | 
			
		||||
       PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
 | 
			
		||||
       // 断言
 | 
			
		||||
       assertEquals(1, pageResult.getTotal());
 | 
			
		||||
       assertEquals(1, pageResult.getList().size());
 | 
			
		||||
       assertPojoEquals(dbUserGroup, pageResult.getList().get(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPo
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysPostServiceImpl;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@ package cn.iocoder.yudao.adminserver.modules.system.service.permission;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,8 @@ import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
 | 
			
		||||
@@ -16,11 +16,11 @@ import cn.iocoder.yudao.adminserver.modules.system.service.user.impl.SysUserServ
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.mockito.stubbing.Answer;
 | 
			
		||||
@@ -42,7 +42,6 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEq
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
 | 
			
		||||
import static java.util.Collections.singleton;
 | 
			
		||||
import static java.util.Collections.singletonList;
 | 
			
		||||
import static org.assertj.core.util.Lists.newArrayList;
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertNull;
 | 
			
		||||
@@ -65,6 +64,9 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private SysDeptService deptService;
 | 
			
		||||
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private SysDeptCoreService deptCoreService;
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private SysPostService postService;
 | 
			
		||||
    @MockBean
 | 
			
		||||
@@ -86,7 +88,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(reqVO.getDeptId());
 | 
			
		||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        // mock postService 的方法
 | 
			
		||||
        List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
 | 
			
		||||
                randomPojo(SysPostDO.class, o -> {
 | 
			
		||||
@@ -122,7 +124,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(reqVO.getDeptId());
 | 
			
		||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        // mock postService 的方法
 | 
			
		||||
        List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
 | 
			
		||||
                randomPojo(SysPostDO.class, o -> {
 | 
			
		||||
@@ -357,7 +359,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(importUser.getDeptId());
 | 
			
		||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        // mock passwordEncoder 的方法
 | 
			
		||||
        when(passwordEncoder.encode(eq("yudaoyuanma"))).thenReturn("java");
 | 
			
		||||
 | 
			
		||||
@@ -391,7 +393,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(importUser.getDeptId());
 | 
			
		||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        SysUserImportRespVO respVO = userService.importUsers(newArrayList(importUser), false);
 | 
			
		||||
@@ -421,7 +423,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(importUser.getDeptId());
 | 
			
		||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        SysUserImportRespVO respVO = userService.importUsers(newArrayList(importUser), true);
 | 
			
		||||
@@ -528,7 +530,7 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
            o.setId(deptId);
 | 
			
		||||
            o.setStatus(CommonStatusEnum.DISABLE.getStatus());
 | 
			
		||||
        });
 | 
			
		||||
        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
        when(deptCoreService.getDept(eq(dept.getId()))).thenReturn(dept);
 | 
			
		||||
 | 
			
		||||
        // 调用,校验异常
 | 
			
		||||
        assertServiceException(() -> userService.checkDeptEnable(deptId),
 | 
			
		||||
@@ -580,22 +582,22 @@ public class SysUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
        verify(passwordEncoder, times(1)).matches(eq(oldPassword), eq(user.getPassword()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUsersByPostIds() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Collection<Long> postIds = asSet(10L, 20L);
 | 
			
		||||
        // mock 方法
 | 
			
		||||
        SysUserDO user1 = randomSysUserDO(o -> o.setPostIds(asSet(10L, 30L)));
 | 
			
		||||
        userMapper.insert(user1);
 | 
			
		||||
        SysUserDO user2 = randomSysUserDO(o -> o.setPostIds(singleton(100L)));
 | 
			
		||||
        userMapper.insert(user2);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        List<SysUserDO> result = userService.getUsersByPostIds(postIds);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertEquals(1, result.size());
 | 
			
		||||
        assertEquals(user1, result.get(0));
 | 
			
		||||
    }
 | 
			
		||||
//    @Test //TODO jason 已经移到userCoreService.getUsersByPostIds
 | 
			
		||||
//    public void testUsersByPostIds() {
 | 
			
		||||
//        // 准备参数
 | 
			
		||||
//        Collection<Long> postIds = asSet(10L, 20L);
 | 
			
		||||
//        // mock 方法
 | 
			
		||||
//        SysUserDO user1 = randomSysUserDO(o -> o.setPostIds(asSet(10L, 30L)));
 | 
			
		||||
//        userMapper.insert(user1);
 | 
			
		||||
//        SysUserDO user2 = randomSysUserDO(o -> o.setPostIds(singleton(100L)));
 | 
			
		||||
//        userMapper.insert(user2);
 | 
			
		||||
//
 | 
			
		||||
//        // 调用
 | 
			
		||||
//        List<SysUserDO> result = userService.getUsersByPostIds(postIds);
 | 
			
		||||
//        // 断言
 | 
			
		||||
//        assertEquals(1, result.size());
 | 
			
		||||
//        assertEquals(user1, result.get(0));
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    // ========== 随机对象 ==========
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
 | 
			
		||||
@@ -1,11 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
 | 
			
		||||
import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.RoleCodeEnum;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
@@ -36,7 +34,7 @@ public class SysRoleDO extends BaseDO {
 | 
			
		||||
    /**
 | 
			
		||||
     * 角色标识
 | 
			
		||||
     *
 | 
			
		||||
     * 枚举 {@link RoleCodeEnum}
 | 
			
		||||
     * 枚举
 | 
			
		||||
     */
 | 
			
		||||
    private String code;
 | 
			
		||||
    /**
 | 
			
		||||
@@ -52,7 +50,7 @@ public class SysRoleDO extends BaseDO {
 | 
			
		||||
    /**
 | 
			
		||||
     * 角色类型
 | 
			
		||||
     *
 | 
			
		||||
     * 枚举 {@link SysRoleTypeEnum}
 | 
			
		||||
     * 枚举
 | 
			
		||||
     */
 | 
			
		||||
    private Integer type;
 | 
			
		||||
    /**
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface SysDeptCoreMapper extends BaseMapperX<SysDeptDO> {
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface SysPostCoreMapper extends BaseMapperX<SysPostDO> {
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface SysRoleCoreMapper extends BaseMapperX<SysRoleDO> {
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,17 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface SysUserRoleCoreMapper extends BaseMapperX<SysUserRoleDO>  {
 | 
			
		||||
 | 
			
		||||
    default List<SysUserRoleDO> selectListByRoleIds(Collection<Long> roleIds) {
 | 
			
		||||
        return selectList(SysUserRoleDO::getRoleId, roleIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -5,7 +5,13 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface SysUserCoreMapper extends BaseMapperX<SysUserDO> {
 | 
			
		||||
 | 
			
		||||
    default List<SysUserDO> selectListByDeptIds(Collection<Long> deptIds) {
 | 
			
		||||
        return selectList(SysUserDO::getDeptId, deptIds);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.adminserver.modules.system.enums;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.enums;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * System 字典类型的枚举类
 | 
			
		||||
@@ -22,4 +22,24 @@ public interface SysErrorCodeConstants {
 | 
			
		||||
    ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1006002000, "社交授权失败,原因是:{}");
 | 
			
		||||
    ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1006002001, "社交解绑失败,非当前用户绑定");
 | 
			
		||||
 | 
			
		||||
    // ========== 用户模块 1006003000 ==========
 | 
			
		||||
    ErrorCode USER_NOT_EXISTS = new ErrorCode(1006003000, "用户不存在");
 | 
			
		||||
    ErrorCode USER_IS_DISABLE = new ErrorCode(1006003001, "名字为【{}】的用户已被禁用");
 | 
			
		||||
 | 
			
		||||
    // ========== 部门模块 1006004000 ==========
 | 
			
		||||
    ErrorCode DEPT_NOT_FOUND = new ErrorCode(1006004000, "当前部门不存在");
 | 
			
		||||
    ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1006004001, "部门不处于开启状态,不允许选择");
 | 
			
		||||
 | 
			
		||||
    // ========== 角色模块 1006005000 ==========
 | 
			
		||||
    ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1006005000, "角色不存在");
 | 
			
		||||
    ErrorCode ROLE_IS_DISABLE = new ErrorCode(1006005001, "名字为【{}】的角色已被禁用");
 | 
			
		||||
 | 
			
		||||
    // ========== 字典类型 1006006000 ==========
 | 
			
		||||
    ErrorCode DICT_DATA_NOT_EXISTS = new ErrorCode(1006006000, "当前字典数据不存在");
 | 
			
		||||
    ErrorCode DICT_DATA_NOT_ENABLE = new ErrorCode(1006006001, "字典数据({})不处于开启状态,不允许选择");
 | 
			
		||||
 | 
			
		||||
    // ========== 岗位模块 1006007000 ==========
 | 
			
		||||
    ErrorCode POST_NOT_FOUND = new ErrorCode(1006007000, "当前岗位不存在");
 | 
			
		||||
    ErrorCode POST_NOT_ENABLE = new ErrorCode(1006007001, "岗位({}) 不处于开启状态,不允许选择");
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,59 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.dept;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
public interface SysDeptCoreService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得部门信息数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门信息数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得部门信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 部门编号
 | 
			
		||||
     * @return 部门信息
 | 
			
		||||
     */
 | 
			
		||||
    SysDeptDO getDept(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验部门们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 部门编号不存在
 | 
			
		||||
     * 2. 部门被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 角色编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定编号的部门列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门列表
 | 
			
		||||
     */
 | 
			
		||||
    List<SysDeptDO> getSimpleDepts(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定编号的部门 Map
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 部门编号数组
 | 
			
		||||
     * @return 部门 Map
 | 
			
		||||
     */
 | 
			
		||||
    default Map<Long, SysDeptDO> getDeptMap(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return Collections.emptyMap();
 | 
			
		||||
        }
 | 
			
		||||
        List<SysDeptDO> list = getSimpleDepts(ids);
 | 
			
		||||
        return CollectionUtils.convertMap(list, SysDeptDO::getId);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.dept;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 岗位 Core Service 接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface SysPostCoreService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验岗位们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 岗位编号不存在
 | 
			
		||||
     * 2. 岗位被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 岗位编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validPosts(Collection<Long> ids);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,69 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.dept.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept.SysDeptCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DEPT_NOT_ENABLE;
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DEPT_NOT_FOUND;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 部门 Core Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class SysDeptCoreServiceImpl implements SysDeptCoreService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysDeptCoreMapper deptCoreMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDeptDO> getDepts(Collection<Long> ids) {
 | 
			
		||||
        return deptCoreMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public SysDeptDO getDept(Long id) {
 | 
			
		||||
        return deptCoreMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validDepts(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得科室信息
 | 
			
		||||
        List<SysDeptDO> depts = deptCoreMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysDeptDO> deptMap = CollectionUtils.convertMap(depts, SysDeptDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysDeptDO dept = deptMap.get(id);
 | 
			
		||||
            if (dept == null) {
 | 
			
		||||
                throw exception(DEPT_NOT_FOUND);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) {
 | 
			
		||||
                throw exception(DEPT_NOT_ENABLE, dept.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDeptDO> getSimpleDepts(Collection<Long> ids) {
 | 
			
		||||
        return deptCoreMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,50 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.dept.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept.SysPostCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysPostCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.POST_NOT_ENABLE;
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.POST_NOT_FOUND;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 岗位 Core Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class SysPostCoreServiceImpl implements SysPostCoreService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysPostCoreMapper sysPostCoreMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validPosts(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        List<SysPostDO> posts = sysPostCoreMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysPostDO post = postMap.get(id);
 | 
			
		||||
            if (post == null) {
 | 
			
		||||
                throw exception(POST_NOT_FOUND);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) {
 | 
			
		||||
                throw exception(POST_NOT_ENABLE, post.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,6 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.service.dict;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 字典数据 Service 接口
 | 
			
		||||
 *
 | 
			
		||||
@@ -14,4 +16,14 @@ public interface SysDictDataCoreService extends DictDataFrameworkService {
 | 
			
		||||
     */
 | 
			
		||||
    void initLocalCache();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验字典数据们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 字典数据不存在
 | 
			
		||||
     * 2. 字典数据被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型
 | 
			
		||||
     * @param values 字典数据值的数组
 | 
			
		||||
     */
 | 
			
		||||
    void validDictDatas(String dictType, Collection<String> values);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,11 @@ import cn.iocoder.yudao.coreservice.modules.system.convert.dict.SysDictDataCoreC
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict.SysDictDataCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import com.google.common.collect.ImmutableMap;
 | 
			
		||||
import com.google.common.collect.ImmutableTable;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.scheduling.annotation.Scheduled;
 | 
			
		||||
@@ -14,9 +17,11 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DICT_DATA_NOT_ENABLE;
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DICT_DATA_NOT_EXISTS;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 字典数据 Service 实现类
 | 
			
		||||
@@ -119,4 +124,22 @@ public class SysDictDataCoreServiceImpl implements SysDictDataCoreService {
 | 
			
		||||
        return SysDictDataCoreConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validDictDatas(String dictType, Collection<String> values) {
 | 
			
		||||
        if (CollUtil.isEmpty(values)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        ImmutableMap<String, SysDictDataDO> dictDataMap = valueDictDataCache.row(dictType);
 | 
			
		||||
        // 校验
 | 
			
		||||
        values.forEach(value -> {
 | 
			
		||||
            SysDictDataDO dictData = dictDataMap.get(value);
 | 
			
		||||
            if (dictData == null) {
 | 
			
		||||
                throw exception(DICT_DATA_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(dictData.getStatus())) {
 | 
			
		||||
                throw exception(DICT_DATA_NOT_ENABLE, dictData.getLabel());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,20 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.permission;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
/**
 | 
			
		||||
 * 权限 Core Service 接口
 | 
			
		||||
 *
 | 
			
		||||
 * 提供用户-角色、角色-菜单、角色-部门的关联权限处理
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface SysPermissionCoreService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得拥有多个角色的用户编号集合
 | 
			
		||||
     *
 | 
			
		||||
     * @param roleIds 角色编号集合
 | 
			
		||||
     * @return 用户编号集合
 | 
			
		||||
     */
 | 
			
		||||
    Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.permission;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 角色 Core Service 接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface SysRoleCoreService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验角色们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 角色编号不存在
 | 
			
		||||
     * 2. 角色被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 角色编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validRoles(Collection<Long> ids);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.permission.impl;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission.SysUserRoleCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
/**
 | 
			
		||||
 * 权限 Core Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class SysPermissionCoreServiceImpl implements SysPermissionCoreService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserRoleCoreMapper userRoleCoreMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds) {
 | 
			
		||||
        return CollectionUtils.convertSet(userRoleCoreMapper.selectListByRoleIds(roleIds),
 | 
			
		||||
                SysUserRoleDO::getRoleId);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,50 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.permission.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission.SysRoleCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysRoleCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.ROLE_IS_DISABLE;
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.ROLE_NOT_EXISTS;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 角色 Core Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class SysRoleCoreServiceImpl implements SysRoleCoreService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysRoleCoreMapper sysRoleCoreMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validRoles(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得角色信息
 | 
			
		||||
        List<SysRoleDO> roles = sysRoleCoreMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysRoleDO> roleMap = CollectionUtils.convertMap(roles, SysRoleDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysRoleDO role = roleMap.get(id);
 | 
			
		||||
            if (role == null) {
 | 
			
		||||
                throw exception(ROLE_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())) {
 | 
			
		||||
                throw exception(ROLE_IS_DISABLE, role.getName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.user;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 后台用户 Service Core 接口
 | 
			
		||||
@@ -17,4 +21,50 @@ public interface SysUserCoreService {
 | 
			
		||||
     */
 | 
			
		||||
    SysUserDO getUser(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定部门的用户数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param deptIds 部门数组
 | 
			
		||||
     * @return 用户数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定岗位的用户数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param postIds 岗位数组
 | 
			
		||||
     * @return 用户数组
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsersByPostIds(Collection<Long> postIds);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得用户列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     * @return 用户列表
 | 
			
		||||
     */
 | 
			
		||||
    List<SysUserDO> getUsers(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验用户们是否有效。如下情况,视为无效:
 | 
			
		||||
     * 1. 用户编号不存在
 | 
			
		||||
     * 2. 用户被禁用
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validUsers(Set<Long> ids);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得用户 Map
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 用户编号数组
 | 
			
		||||
     * @return 用户 Map
 | 
			
		||||
     */
 | 
			
		||||
    default Map<Long, SysUserDO> getUserMap(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return new HashMap<>();
 | 
			
		||||
        }
 | 
			
		||||
        return CollectionUtils.convertMap(getUsers(ids), SysUserDO::getId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,19 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.system.service.user.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.user.SysUserCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.USER_IS_DISABLE;
 | 
			
		||||
import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.USER_NOT_EXISTS;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 后台用户 Service Core 实现
 | 
			
		||||
@@ -23,4 +31,52 @@ public class SysUserCoreServiceImpl implements SysUserCoreService {
 | 
			
		||||
        return userCoreMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds) {
 | 
			
		||||
        if (CollUtil.isEmpty(deptIds)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        return userCoreMapper.selectListByDeptIds(deptIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsersByPostIds(Collection<Long> postIds) {
 | 
			
		||||
        if (CollUtil.isEmpty(postIds)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        // 过滤不符合条件的
 | 
			
		||||
        // TODO 芋艿:暂时只能内存过滤。解决方案:1、新建一个关联表;2、基于 where + 函数;3、json 字段,适合 mysql 8+ 版本
 | 
			
		||||
        List<SysUserDO> users = userCoreMapper.selectList();
 | 
			
		||||
        users.removeIf(user -> !CollUtil.containsAny(user.getPostIds(), postIds));
 | 
			
		||||
        return users;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysUserDO> getUsers(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        return userCoreMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validUsers(Set<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        List<SysUserDO> users = userCoreMapper.selectBatchIds(ids);
 | 
			
		||||
        Map<Long, SysUserDO> userMap = CollectionUtils.convertMap(users, SysUserDO::getId);
 | 
			
		||||
        // 校验
 | 
			
		||||
        ids.forEach(id -> {
 | 
			
		||||
            SysUserDO user = userMap.get(id);
 | 
			
		||||
            if (user == null) {
 | 
			
		||||
                throw exception(USER_NOT_EXISTS);
 | 
			
		||||
            }
 | 
			
		||||
            if (!CommonStatusEnum.ENABLE.getStatus().equals(user.getStatus())) {
 | 
			
		||||
                throw exception(USER_IS_DISABLE, user.getNickname());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@
 | 
			
		||||
        <mockito-inline.version>3.6.28</mockito-inline.version>
 | 
			
		||||
        <!-- Bpm 工作流相关 -->
 | 
			
		||||
        <activiti.version>7.1.0.M6</activiti.version>
 | 
			
		||||
        <flowable.version>6.7.0</flowable.version>
 | 
			
		||||
        <!-- 工具类相关 -->
 | 
			
		||||
        <lombok.version>1.18.20</lombok.version>
 | 
			
		||||
        <mapstruct.version>1.4.1.Final</mapstruct.version>
 | 
			
		||||
@@ -396,6 +397,33 @@
 | 
			
		||||
                <artifactId>activiti-image-generator</artifactId>
 | 
			
		||||
                <version>${activiti.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <!-- 工作流相关 flowable -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.flowable</groupId>
 | 
			
		||||
                <artifactId>flowable-spring-boot-starter-basic</artifactId>
 | 
			
		||||
                <version>${flowable.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.flowable</groupId>
 | 
			
		||||
                <artifactId>flowable-spring-boot-starter-actuator</artifactId>
 | 
			
		||||
                <version>${flowable.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
                <artifactId>yudao-module-bpm-core-service</artifactId>
 | 
			
		||||
                <version>${revision}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
                <artifactId>yudao-module-bpm-activiti</artifactId>
 | 
			
		||||
                <version>${revision}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
                <artifactId>yudao-module-bpm-flowable</artifactId>
 | 
			
		||||
                <version>${revision}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <!-- 工作流相关结束 -->
 | 
			
		||||
 | 
			
		||||
            <!-- 工具类相关 -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								yudao-module-bpm/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								yudao-module-bpm/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
			
		||||
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <parent>
 | 
			
		||||
        <artifactId>yudao</artifactId>
 | 
			
		||||
        <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
        <version>${revision}</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
    <modules>
 | 
			
		||||
        <module>yudao-module-bpm-flowable</module>
 | 
			
		||||
        <module>yudao-module-bpm-activiti</module>
 | 
			
		||||
        <module>yudao-module-bpm-core-service</module>
 | 
			
		||||
    </modules>
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <artifactId>yudao-module-bpm</artifactId>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										30
									
								
								yudao-module-bpm/yudao-module-bpm-activiti/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								yudao-module-bpm/yudao-module-bpm-activiti/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
			
		||||
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <parent>
 | 
			
		||||
        <artifactId>yudao-module-bpm</artifactId>
 | 
			
		||||
        <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
        <version>${revision}</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
 | 
			
		||||
    <artifactId>yudao-module-bpm-activiti</artifactId>
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
            <artifactId>yudao-spring-boot-starter-activiti</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
            <artifactId>yudao-core-service</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- Test 测试相关 -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>cn.iocoder.boot</groupId>
 | 
			
		||||
            <artifactId>yudao-spring-boot-starter-test</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
@@ -7,9 +7,6 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.B
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmUserGroupConvert;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmUserGroupDO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmUserGroupService;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserSimpleRespVO;
 | 
			
		||||
import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
@@ -22,7 +19,6 @@ import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user