From a93a44c3d45e14165a4f4f6fc1e95b18b17f7735 Mon Sep 17 00:00:00 2001 From: Odboy Date: Wed, 14 Jan 2026 23:34:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(role):=20=E4=BC=98=E5=8C=96=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9C=8D=E5=8A=A1=E4=B8=AD=E7=9A=84=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=92=8C=E6=95=B0=E6=8D=AE=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SystemDictDetailController.java | 4 - .../controller/SystemRoleController.java | 2 +- .../dal/mysql/SystemRoleMenuMapper.java | 3 + .../dal/mysql/SystemUserRoleMapper.java | 3 + .../system/service/SystemDeptService.java | 4 +- .../system/service/SystemRoleMenuService.java | 27 +++++ .../system/service/SystemRoleService.java | 102 ++++++++---------- .../system/service/SystemUserRoleService.java | 36 +++++-- .../mapper/SystemDictDetailMapper.xml | 50 ++++----- .../resources/mapper/SystemRoleMapper.xml | 18 ++-- .../resources/mapper/SystemRoleMenuMapper.xml | 16 +++ .../resources/mapper/SystemUserRoleMapper.xml | 6 ++ 12 files changed, 163 insertions(+), 108 deletions(-) create mode 100644 cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMenuMapper.xml diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemDictDetailController.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemDictDetailController.java index a0ae7e94..3053bcf4 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemDictDetailController.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemDictDetailController.java @@ -26,17 +26,13 @@ import cn.odboy.system.service.SystemDictDetailService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import java.util.List; -import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemRoleController.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemRoleController.java index eb2a7b36..d721636b 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemRoleController.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemRoleController.java @@ -52,7 +52,7 @@ public class SystemRoleController { @PostMapping(value = "/getRoleById") @PreAuthorize("@el.check('roles:list')") public ResponseEntity getRoleById(@RequestBody SystemRoleTb args) { - return ResponseEntity.ok(systemRoleService.getRoleById(args.getId())); + return ResponseEntity.ok(systemRoleService.getRoleVoById(args.getId())); } @ApiOperation("导出角色数据") diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMenuMapper.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMenuMapper.java index b7700380..7e784853 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMenuMapper.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleMenuMapper.java @@ -17,7 +17,9 @@ package cn.odboy.system.dal.mysql; import cn.odboy.system.dal.dataobject.SystemRoleMenuTb; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 角色菜单关联 Mapper @@ -27,4 +29,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SystemRoleMenuMapper extends BaseMapper { + List listMenuPermissionByRoleIds(@Param("roleIds") List roleIds); } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java index 9f9f4235..738d124a 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java @@ -27,5 +27,8 @@ import org.apache.ibatis.annotations.Param; public interface SystemUserRoleMapper extends BaseMapper { Set listUserRoleByUserId(@Param("userId") Long userId); + List listUserRoleLevelByUserId(@Param("userId") Long userId); + + List listUserRoleIdByUserId(@Param("userId") Long userId); } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java index 3a3567e1..c1c532c5 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java @@ -129,7 +129,7 @@ public class SystemDeptService { /** * 更新父节点中子节点数目 -> TestPassed * - * @param deptId / + * @param deptId 部门id */ @Transactional(rollbackFor = Exception.class) public void updateDeptSubCnt(Long deptId) { @@ -179,7 +179,7 @@ public class SystemDeptService { /** * 查询所有数据 * - * @param args 条件 + * @param args / * @param isQuery / * @return / * @throws Exception / diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleMenuService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleMenuService.java index bb0a308a..b69d09be 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleMenuService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleMenuService.java @@ -16,6 +16,7 @@ package cn.odboy.system.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemRoleMenuTb; import cn.odboy.system.dal.model.response.SystemMenuVo; @@ -40,6 +41,11 @@ public class SystemRoleMenuService { @Autowired private SystemMenuMapper systemMenuMapper; + /** + * 删除角色菜单关联 -> TestPassed + * + * @param roleId 角色id + */ @Transactional(rollbackFor = Exception.class) public void deleteRoleMenuByRoleId(Long roleId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -47,6 +53,12 @@ public class SystemRoleMenuService { systemRoleMenuMapper.delete(wrapper); } + /** + * 批量绑定角色菜单关联 -> TestPassed + * + * @param menus 菜单集合 + * @param roleId 角色id + */ @Transactional(rollbackFor = Exception.class) public void batchInsertRoleMenu(Set menus, Long roleId) { if (CollUtil.isNotEmpty(menus)) { @@ -61,6 +73,11 @@ public class SystemRoleMenuService { } } + /** + * 批量删除角色菜单关联 -> TestPassed + * + * @param roleIds 角色id集合 + */ @Transactional(rollbackFor = Exception.class) public void batchDeleteRoleMenu(Set roleIds) { if (CollUtil.isNotEmpty(roleIds)) { @@ -92,6 +109,11 @@ public class SystemRoleMenuService { return new LinkedHashSet<>(systemMenuVos); } + /** + * 批量删除菜单角色关联 -> TestPassed + * + * @param menuIds 菜单id集合 + */ @Transactional(rollbackFor = Exception.class) public void deleteRoleMenuByMenuIds(List menuIds) { if (CollUtil.isEmpty(menuIds)) { @@ -101,4 +123,9 @@ public class SystemRoleMenuService { wrapper.in(SystemRoleMenuTb::getMenuId, menuIds); systemRoleMenuMapper.delete(wrapper); } + + public List listMenuPermissionByRoleIds(List roleIds) { + List permissions = systemRoleMenuMapper.listMenuPermissionByRoleIds(roleIds); + return permissions.stream().filter(StrUtil::isNotBlank).collect(Collectors.toList()); + } } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java index d5832c65..1c5a3eb1 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemRoleService.java @@ -32,9 +32,9 @@ import cn.odboy.system.dal.mysql.SystemRoleMapper; import cn.odboy.system.framework.permission.core.KitSecurityHelper; import cn.odboy.util.KitBeanUtil; import cn.odboy.util.KitPageUtil; -import cn.odboy.util.KitValidUtil; import cn.odboy.util.xlsx.KitExcelExporter; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.util.ArrayList; import java.util.Collections; @@ -67,7 +67,7 @@ public class SystemRoleService { @Transactional(rollbackFor = Exception.class) public void saveRole(SystemCreateRoleArgs args) { checkRoleLevels(args.getLevel()); - if (this.countRoleByName(args.getName()) > 0) { + if (this.existRoleWithName(args.getName())) { throw new BadRequestException("角色名称已存在"); } SystemRoleTb roleTb = KitBeanUtil.copyToClass(args, SystemRoleTb.class); @@ -78,16 +78,17 @@ public class SystemRoleService { } } - private SystemRoleTb getRoleByName(String name) { + private boolean existRoleWithName(String name) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SystemRoleTb::getName, name); - return systemRoleMapper.selectOne(wrapper); + return systemRoleMapper.exists(wrapper); } - private long countRoleByName(String name) { + private boolean existRoleWithNameNeSelf(String name, Long roleId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SystemRoleTb::getName, name); - return systemRoleMapper.selectCount(wrapper); + wrapper.eq(SystemRoleTb::getId, roleId); + return systemRoleMapper.exists(wrapper); } /** @@ -98,9 +99,8 @@ public class SystemRoleService { @Transactional(rollbackFor = Exception.class) public void updateRoleById(SystemRoleVo args) { checkRoleLevels(args.getLevel()); - SystemRoleTb role = this.getRoleTbById(args.getId()); - SystemRoleTb role1 = this.getRoleByName(args.getName()); - if (role1 != null && !role1.getId().equals(role.getId())) { + SystemRoleTb role = systemRoleMapper.selectById(args.getId()); + if (this.existRoleWithNameNeSelf(args.getName(), role.getId())) { throw new BadRequestException("角色名称已存在"); } role.setName(args.getName()); @@ -108,7 +108,7 @@ public class SystemRoleService { role.setDataScope(args.getDataScope()); role.setLevel(args.getLevel()); // 更新 - systemRoleMapper.insertOrUpdate(role); + systemRoleMapper.updateById(role); // 删除关联部门数据 systemRoleDeptService.batchDeleteRoleDept(Collections.singleton(args.getId())); // 判断是否有部门数据, 若有, 则需更新关联 @@ -117,10 +117,6 @@ public class SystemRoleService { } } - private SystemRoleTb getRoleTbById(Long id) { - return systemRoleMapper.selectById(id); - } - /** * 修改绑定的菜单 -> TestPassed * @@ -132,7 +128,6 @@ public class SystemRoleService { checkRoleLevels(role.getLevel()); // 更新菜单 systemRoleMenuService.deleteRoleMenuByRoleId(role.getId()); - // 判断是否为空 Set menus = args.getMenus(); if (CollUtil.isNotEmpty(menus)) { systemRoleMenuService.batchInsertRoleMenu(menus, role.getId()); @@ -146,8 +141,7 @@ public class SystemRoleService { */ @Transactional(rollbackFor = Exception.class) public void deleteRoleByIds(Set ids) { - List roleLevels = systemRoleMapper.selectByIds(ids).stream().map(SystemRoleTb::getLevel).distinct() - .collect(Collectors.toList()); + List roleLevels = systemRoleMapper.listRoleLevelByRoleIds(new ArrayList<>(ids)); for (Integer roleLevel : roleLevels) { checkRoleLevels(roleLevel); } @@ -165,7 +159,7 @@ public class SystemRoleService { */ public List listAllRole() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.orderByAsc(SystemRoleTb::getLevel); + wrapper.orderByDesc(SystemRoleTb::getCreateTime); return systemRoleMapper.selectList(wrapper); } @@ -176,24 +170,21 @@ public class SystemRoleService { * @param rolePage 分页参数 * @return / */ - public List queryRoleByArgs(SystemQueryRoleArgs args, Page rolePage) { - KitValidUtil.notNull(args); - // 查询角色基本信息 + public List queryRoleByArgs(SystemQueryRoleArgs args, Page rolePage) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemRoleTb::getName, args.getBlurry()).or() - .like(SystemRoleTb::getDescription, args.getBlurry())); - if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) { - wrapper.between(SystemRoleTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1)); + this.injectQueryParams(args, wrapper); + return systemRoleMapper.selectList(wrapper); + } + + private void injectQueryParams(SystemQueryRoleArgs args, LambdaQueryWrapper wrapper) { + if (args != null) { + wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemRoleTb::getName, args.getBlurry()).or() + .like(SystemRoleTb::getDescription, args.getBlurry())); + if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) { + wrapper.between(SystemRoleTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1)); + } } wrapper.orderByAsc(SystemRoleTb::getLevel); - List roles; - if (rolePage == null) { - roles = systemRoleMapper.selectList(wrapper); - } else { - Page page = systemRoleMapper.selectPage(rolePage, wrapper); - roles = page.getRecords(); - } - return roles.stream().map(systemUserRoleService::convertToRoleVo).collect(Collectors.toList()); } /** @@ -204,13 +195,14 @@ public class SystemRoleService { * @return / */ public KitPageResult searchRoleByArgs(SystemQueryRoleArgs args, Page page) { - List roles = this.queryRoleByArgs(args, page); - Long total = this.countRoleByArgs(args); - return KitPageUtil.toPage(roles, total); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + this.injectQueryParams(args, wrapper); + IPage data = systemRoleMapper.selectPage(page, wrapper).convert(systemUserRoleService::convertToRoleVo); + return KitPageUtil.toPage(data); } /** - * 查询用户权限信息 -> TestPassed + * 查询用户权限信息 -> TestPassed? * * @param user 用户信息 * @return 权限信息 @@ -222,9 +214,17 @@ public class SystemRoleService { permissions.add("admin"); return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); } - List roles = systemUserRoleService.listRoleVoByUsersId(user.getId()); - permissions = roles.stream().flatMap(role -> role.getMenus().stream()).map(SystemMenuVo::getPermission) - .filter(StrUtil::isNotBlank).collect(Collectors.toSet()); +// List roles = systemUserRoleService.listRoleVoByUsersId(user.getId()); +// permissions = roles.stream().flatMap(role -> role.getMenus().stream()).map(SystemMenuVo::getPermission) +// .filter(StrUtil::isNotBlank).collect(Collectors.toSet()); +// return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); + List roleIds = systemUserRoleService.listUserRoleIdByUserId(user.getId()); + // 查询角色权限 + if (CollUtil.isNotEmpty(roleIds)) { + return systemRoleMenuService.listMenuPermissionByRoleIds(roleIds).stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); + } + // 没有包含任何角色,赋予默认权限 + permissions.add("IsAJoker"); return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); } @@ -234,23 +234,12 @@ public class SystemRoleService { * @param ids / */ public void verifyBindRelationByIds(Set ids) { - if (systemUserRoleService.countUserByRoleIds(ids) > 0) { + if (systemUserRoleService.existUserWithRoleIds(ids)) { throw new BadRequestException("所选角色存在用户关联, 请解除关联再试!"); } } - public Long countRoleByArgs(SystemQueryRoleArgs args) { - KitValidUtil.notNull(args); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemRoleTb::getName, args.getBlurry()).or() - .like(SystemRoleTb::getDescription, args.getBlurry())); - if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) { - wrapper.between(SystemRoleTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1)); - } - return systemRoleMapper.selectCount(wrapper); - } - - public SystemRoleVo getRoleById(Long id) { + public SystemRoleVo getRoleVoById(Long id) { SystemRoleTb roleTb = systemRoleMapper.selectById(id); if (roleTb == null) { return null; @@ -268,8 +257,7 @@ public class SystemRoleService { * @return / */ private int checkRoleLevels(Integer level) { - List levels = systemUserRoleService.listRoleVoByUsersId(KitSecurityHelper.getCurrentUserId()).stream() - .map(SystemRoleVo::getLevel).collect(Collectors.toList()); + List levels = systemUserRoleService.listUserRoleLevelByUserId(KitSecurityHelper.getCurrentUserId()); int min = Collections.min(levels); if (level != null) { if (level < min) { @@ -280,9 +268,9 @@ public class SystemRoleService { } public void exportRoleXlsx(HttpServletResponse response, SystemQueryRoleArgs args) { - List systemRoleVos = this.queryRoleByArgs(args, null); + List systemRoleVos = this.queryRoleByArgs(args, null); List rowVos = new ArrayList<>(); - for (SystemRoleVo dataObject : systemRoleVos) { + for (SystemRoleTb dataObject : systemRoleVos) { SystemRoleExportRowVo rowVo = new SystemRoleExportRowVo(); rowVo.setName(dataObject.getName()); rowVo.setLevel(dataObject.getLevel()); diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserRoleService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserRoleService.java index dda51c91..41f74ecf 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserRoleService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserRoleService.java @@ -148,15 +148,6 @@ public class SystemUserRoleService { } } - public long countUserByRoleIds(Set ids) { - if (CollUtil.isEmpty(ids)) { - return 0L; - } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(SystemUserRoleTb::getRoleId, ids); - return systemUserRoleMapper.selectCount(wrapper); - } - /** * 根据用户id查询角色 -> TestPassed * @@ -168,7 +159,7 @@ public class SystemUserRoleService { } /** - * 根据用户id查询角色级别 -> TestPassed + * 根据用户id查询角色级别集合 -> TestPassed * * @param userId / * @return / @@ -176,4 +167,29 @@ public class SystemUserRoleService { public List listUserRoleLevelByUserId(Long userId) { return systemUserRoleMapper.listUserRoleLevelByUserId(userId); } + + /** + * 根据用户id查询角色id集合 -> TestPassed + * + * @param userId / + * @return / + */ + public List listUserRoleIdByUserId(Long userId) { + return systemUserRoleMapper.listUserRoleIdByUserId(userId); + } + + /** + * 根据角色id集合判断是否存在关联用户 -> TestPassed + * + * @param ids 角色id集合 + * @return / + */ + public boolean existUserWithRoleIds(Set ids) { + if (CollUtil.isEmpty(ids)) { + return false; + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SystemUserRoleTb::getRoleId, ids); + return systemUserRoleMapper.exists(wrapper); + } } diff --git a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemDictDetailMapper.xml b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemDictDetailMapper.xml index ad6e4642..c8985ddd 100644 --- a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemDictDetailMapper.xml +++ b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemDictDetailMapper.xml @@ -1,29 +1,29 @@ - - + + diff --git a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMapper.xml b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMapper.xml index f2b977fc..486a3730 100644 --- a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMapper.xml +++ b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMapper.xml @@ -1,13 +1,13 @@ - + diff --git a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMenuMapper.xml b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMenuMapper.xml new file mode 100644 index 00000000..596ebc48 --- /dev/null +++ b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemRoleMenuMapper.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserRoleMapper.xml b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserRoleMapper.xml index c2ab58c6..19b83a1f 100644 --- a/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserRoleMapper.xml +++ b/cutejava/cutejava-module-system/src/main/resources/mapper/SystemUserRoleMapper.xml @@ -13,4 +13,10 @@ LEFT JOIN system_users_roles t2 ON t1.role_id = t2.role_id WHERE t2.user_id = #{userId} +