diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java index b3e8cc40a..24e172142 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java @@ -144,7 +144,7 @@ public class SysRoleController extends BaseController { @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") public R remove(@PathVariable Long[] roleIds) { - return toAjax(roleService.deleteRoleByIds(roleIds)); + return toAjax(roleService.deleteRoleByIds(List.of(roleIds))); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 655526fb3..8cf6d3982 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -3,7 +3,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; @@ -21,6 +20,20 @@ import java.util.List; */ public interface SysDeptMapper extends BaseMapperPlus { + default String buildDeptByRoleSql(Long roleId) { + return """ + select dept_id from sys_role_dept where role_id = %d + """.formatted(roleId); + } + + default String buildParentDeptByRoleSql(Long roleId) { + return """ + select parent_id from sys_dept where dept_id in ( + select dept_id from sys_role_dept where role_id = %d + ) + """.formatted(roleId); + } + /** * 查询部门管理数据 * @@ -33,10 +46,11 @@ public interface SysDeptMapper extends BaseMapperPlus { default List selectDeptList(Wrapper queryWrapper) { return this.selectVoList(queryWrapper); } + /** * 分页查询部门管理数据 * - * @param page 分页参数 + * @param page 分页信息 * @param queryWrapper 查询条件 * @return 部门信息集合 */ @@ -46,6 +60,7 @@ public interface SysDeptMapper extends BaseMapperPlus { default Page selectPageDeptList(Page page, Wrapper queryWrapper) { return this.selectVoPage(page, queryWrapper); } + /** * 统计指定部门ID的部门数量 * @@ -58,6 +73,7 @@ public interface SysDeptMapper extends BaseMapperPlus { default long countDeptById(Long deptId) { return this.selectCount(new LambdaQueryWrapper().eq(SysDept::getDeptId, deptId)); } + /** * 根据父部门ID查询其所有子部门的列表 * @@ -90,6 +106,16 @@ public interface SysDeptMapper extends BaseMapperPlus { * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 */ - List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + default List selectDeptListByRoleId(Long roleId, boolean deptCheckStrictly) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(SysDept::getDeptId) + .inSql(SysDept::getDeptId, this.buildDeptByRoleSql(roleId)) + .orderByAsc(SysDept::getParentId) + .orderByAsc(SysDept::getOrderNum); + if (deptCheckStrictly) { + wrapper.notInSql(SysDept::getDeptId, this.buildParentDeptByRoleSql(roleId)); + } + return this.selectObjs(wrapper); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index 14f758ae1..d71c2998e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -1,13 +1,10 @@ package org.dromara.system.mapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Constants; import org.dromara.common.core.constant.SystemConstants; -import org.dromara.system.domain.SysMenu; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.SysMenuVo; -import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,13 +15,27 @@ import java.util.List; */ public interface SysMenuMapper extends BaseMapperPlus { - /** - * 根据用户查询系统菜单列表 - * - * @param queryWrapper 查询条件 - * @return 菜单列表 - */ - List selectMenuListByUserId(@Param(Constants.WRAPPER) Wrapper queryWrapper); + default String buildMenuByUserSql(Long userId) { + return """ + select menu_id from sys_role_menu where role_id in ( + select role_id from sys_user_role where user_id = %d + ) + """.formatted(userId); + } + + default String buildMenuByRoleSql(Long roleId) { + return """ + select menu_id from sys_role_menu where role_id = %d + """.formatted(roleId); + } + + default String buildParentMenuByRoleSql(Long roleId) { + return """ + select parent_id from sys_menu where menu_id in ( + select menu_id from sys_role_menu where role_id = %d + ) + """.formatted(roleId); + } /** * 根据用户ID查询权限 @@ -32,7 +43,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param userId 用户ID * @return 权限列表 */ - List selectMenuPermsByUserId(Long userId); + default List selectMenuPermsByUserId(Long userId) { + return this.selectObjs( + new LambdaQueryWrapper() + .select(SysMenu::getPerms) + .inSql(SysMenu::getMenuId, this.buildMenuByUserSql(userId)) + ); + } /** * 根据角色ID查询权限 @@ -40,7 +57,13 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param roleId 角色ID * @return 权限列表 */ - List selectMenuPermsByRoleId(Long roleId); + default List selectMenuPermsByRoleId(Long roleId) { + return this.selectObjs( + new LambdaQueryWrapper() + .select(SysMenu::getPerms) + .inSql(SysMenu::getMenuId, this.buildMenuByRoleSql(roleId)) + ); + } /** * 根据用户ID查询菜单 @@ -56,14 +79,6 @@ public interface SysMenuMapper extends BaseMapperPlus { return this.selectList(lqw); } - /** - * 根据用户ID查询菜单 - * - * @param userId 用户ID - * @return 菜单列表 - */ - List selectMenuTreeByUserId(Long userId); - /** * 根据角色ID查询菜单树信息 * @@ -71,6 +86,16 @@ public interface SysMenuMapper extends BaseMapperPlus { * @param menuCheckStrictly 菜单树选择项是否关联显示 * @return 选中菜单列表 */ - List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + default List selectMenuListByRoleId(Long roleId, boolean menuCheckStrictly) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(SysMenu::getMenuId) + .inSql(SysMenu::getMenuId, buildMenuByRoleSql(roleId)) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum); + if (menuCheckStrictly) { + wrapper.notInSql(SysMenu::getMenuId, this.buildParentMenuByRoleSql(roleId)); + } + return this.selectObjs(wrapper); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index 2efa5c888..a457c53a2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; @@ -31,6 +32,9 @@ public interface SysPostMapper extends BaseMapperPlus { * @param userId 用户ID * @return 结果 */ - List selectPostsByUserId(Long userId); + default List selectPostsByUserId(Long userId) { + return this.selectVoList(new LambdaQueryWrapper() + .inSql(SysPost::getPostId, "select post_id from sys_user_post where user_id = " + userId)); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java index ac5a47e54..1d3a0bb77 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -19,11 +20,26 @@ import java.util.List; */ public interface SysRoleMapper extends BaseMapperPlus { + default String buildRoleByUserSql(Long userId) { + return """ + select role_id from sys_user_role where user_id = %d + """.formatted(userId); + } + + /** + * 分页查询角色列表 + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 包含角色信息的分页结果 + */ @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "r.create_by") + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") }) - Page selectPageRoleList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + default Page selectPageRoleList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper) { + return this.selectVoPage(page, queryWrapper); + } /** * 根据条件分页查询角色数据 @@ -32,16 +48,26 @@ public interface SysRoleMapper extends BaseMapperPlus { * @return 角色数据集合信息 */ @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "r.create_by") + @DataColumn(key = "deptName", value = "create_dept"), + @DataColumn(key = "userName", value = "create_by") }) - List selectRoleList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + default List selectRoleList(@Param(Constants.WRAPPER) Wrapper queryWrapper) { + return this.selectVoList(queryWrapper); + } + /** + * 根据角色ID查询角色信息 + * + * @param roleId 角色ID + * @return 对应的角色信息 + */ @DataPermission({ - @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "deptName", value = "r.create_dept"), @DataColumn(key = "userName", value = "r.create_by") }) - SysRoleVo selectRoleById(Long roleId); + default SysRoleVo selectRoleById(Long roleId) { + return this.selectVoById(roleId); + } /** * 根据用户ID查询角色 @@ -49,14 +75,11 @@ public interface SysRoleMapper extends BaseMapperPlus { * @param userId 用户ID * @return 角色列表 */ - List selectRolePermissionByUserId(Long userId); - - /** - * 根据用户ID查询角色 - * - * @param userId 用户ID - * @return 角色列表 - */ - List selectRolesByUserId(Long userId); + default List selectRolesByUserId(Long userId) { + return this.selectVoList(new LambdaQueryWrapper() + .select(SysRole::getRoleId, SysRole::getRoleName, SysRole::getRoleKey, + SysRole::getRoleSort, SysRole::getDataScope, SysRole::getStatus) + .inSql(SysRole::getRoleId, this.buildRoleByUserSql(userId))); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index 851b13a5a..2cfd3db98 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -21,17 +21,30 @@ import java.util.List; */ public interface SysUserMapper extends BaseMapperPlus { + /** + * 分页查询用户列表,并进行数据权限控制 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @return 分页的用户信息 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default Page selectPageUserList(Page page, Wrapper queryWrapper) { return this.selectVoPage(page, queryWrapper); } + /** + * 查询用户列表,并进行数据权限控制 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default List selectUserList(Wrapper queryWrapper) { return this.selectVoList(queryWrapper); @@ -45,7 +58,7 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) List selectUserExportList(@Param(Constants.WRAPPER) Wrapper queryWrapper); @@ -58,7 +71,7 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) Page selectAllocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); @@ -70,29 +83,48 @@ public interface SysUserMapper extends BaseMapperPlus { */ @DataPermission({ @DataColumn(key = "deptName", value = "d.dept_id"), - @DataColumn(key = "userName", value = "u.user_id") + @DataColumn(key = "userName", value = "u.create_by") }) Page selectUnallocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 根据用户ID统计用户数量 + * + * @param userId 用户ID + * @return 用户数量 + */ @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) default long countUserById(Long userId) { return this.selectCount(new LambdaQueryWrapper().eq(SysUser::getUserId, userId)); } + /** + * 根据条件更新用户数据 + * + * @param user 要更新的用户实体 + * @param updateWrapper 更新条件封装器 + * @return 更新操作影响的行数 + */ @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper updateWrapper); + /** + * 根据用户ID更新用户数据 + * + * @param user 要更新的用户实体 + * @return 更新操作影响的行数 + */ @Override @DataPermission({ @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") + @DataColumn(key = "userName", value = "create_by") }) int updateById(@Param(Constants.ENTITY) SysUser user); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java index e2f706c89..e7c6ae38a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java @@ -1,5 +1,6 @@ package org.dromara.system.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysUserRole; @@ -12,6 +13,17 @@ import java.util.List; */ public interface SysUserRoleMapper extends BaseMapperPlus { - List selectUserIdsByRoleId(Long roleId); + /** + * 根据角色ID查询关联的用户ID列表 + * + * @param roleId 角色ID + * @return 关联到指定角色的用户ID列表 + */ + default List selectUserIdsByRoleId(Long roleId) { + return this.selectObjs(new LambdaQueryWrapper() + .select(SysUserRole::getUserId).inSql(SysUserRole::getRoleId, + "select role_id from sys_role where role_id = " + roleId) + ); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index cec4bf775..5b320c0d3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -167,7 +167,7 @@ public interface ISysRoleService { * @param roleIds 需要删除的角色ID * @return 结果 */ - int deleteRoleByIds(Long[] roleIds); + int deleteRoleByIds(List roleIds); /** * 取消授权用户角色 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 89a09f7f4..43bf505bf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -5,8 +5,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.SystemConstants; @@ -67,29 +65,20 @@ public class SysMenuServiceImpl implements ISysMenuService { @Override public List selectMenuList(SysMenuBo menu, Long userId) { List menuList; - // 管理员显示所有菜单信息 - if (LoginHelper.isSuperAdmin(userId)) { - menuList = baseMapper.selectVoList(new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 管理员显示所有菜单信息 不是管理员 按用户id过滤菜单 + if (!LoginHelper.isSuperAdmin(userId)) { + // 通过用户id获取角色id 通过角色id获取菜单id 然后in菜单 + wrapper.inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId)); + } + menuList = baseMapper.selectVoList( + wrapper.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()) .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus()) .eq(StringUtils.isNotBlank(menu.getMenuType()), SysMenu::getMenuType, menu.getMenuType()) .eq(ObjectUtil.isNotNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId()) .orderByAsc(SysMenu::getParentId) .orderByAsc(SysMenu::getOrderNum)); - } else { - QueryWrapper wrapper = Wrappers.query(); - wrapper.inSql("r.role_id", "select role_id from sys_user_role where user_id = " + userId) - .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName()) - .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible()) - .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus()) - .eq(StringUtils.isNotBlank(menu.getMenuType()), "m.menu_type", menu.getMenuType()) - .eq(ObjectUtil.isNotNull(menu.getParentId()), "m.parent_id", menu.getParentId()) - .orderByAsc("m.parent_id") - .orderByAsc("m.order_num"); - List list = baseMapper.selectMenuListByUserId(wrapper); - menuList = MapstructUtils.convert(list, SysMenuVo.class); - } return menuList; } @@ -141,7 +130,13 @@ public class SysMenuServiceImpl implements ISysMenuService { if (LoginHelper.isSuperAdmin(userId)) { menus = baseMapper.selectMenuTreeAll(); } else { - menus = baseMapper.selectMenuTreeByUserId(userId); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + menus = baseMapper.selectList( + wrapper.in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) + .eq(SysMenu::getStatus, SystemConstants.NORMAL) + .inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId)) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum)); } return getChildPerms(menus, Constants.TOP_PARENT_ID); } @@ -169,7 +164,7 @@ public class SysMenuServiceImpl implements ISysMenuService { SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId); List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); if (CollUtil.isEmpty(menuIds)) { - return new ArrayList<>(); + return List.of(); } List parentIds = null; if (tenantPackage.getMenuCheckStrictly()) { @@ -284,17 +279,6 @@ public class SysMenuServiceImpl implements ISysMenuService { return baseMapper.exists(new LambdaQueryWrapper().eq(SysMenu::getParentId, menuId)); } - /** - * 查询菜单使用数量 - * - * @param menuId 菜单ID - * @return 结果 - */ - @Override - public boolean checkMenuExistRole(Long menuId) { - return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); - } - /** * 是否存在菜单子节点 * @@ -306,6 +290,17 @@ public class SysMenuServiceImpl implements ISysMenuService { return baseMapper.exists(new LambdaQueryWrapper().in(SysMenu::getParentId, menuIds).notIn(SysMenu::getMenuId, menuIds)); } + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public boolean checkMenuExistRole(Long menuId) { + return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); + } + /** * 新增保存菜单信息 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 57d14076a..fe8814ca6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -7,14 +7,13 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; -import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -73,15 +72,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private Wrapper buildQueryWrapper(SysRoleBo bo) { Map params = bo.getParams(); - QueryWrapper wrapper = Wrappers.query(); - wrapper.eq("r.del_flag", SystemConstants.NORMAL) - .eq(ObjectUtil.isNotNull(bo.getRoleId()), "r.role_id", bo.getRoleId()) - .like(StringUtils.isNotBlank(bo.getRoleName()), "r.role_name", bo.getRoleName()) - .eq(StringUtils.isNotBlank(bo.getStatus()), "r.status", bo.getStatus()) - .like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey()) + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(ObjectUtil.isNotNull(bo.getRoleId()), SysRole::getRoleId, bo.getRoleId()) + .like(StringUtils.isNotBlank(bo.getRoleName()), SysRole::getRoleName, bo.getRoleName()) + .eq(StringUtils.isNotBlank(bo.getStatus()), SysRole::getStatus, bo.getStatus()) + .like(StringUtils.isNotBlank(bo.getRoleKey()), SysRole::getRoleKey, bo.getRoleKey()) .between(params.get("beginTime") != null && params.get("endTime") != null, - "r.create_time", params.get("beginTime"), params.get("endTime")) - .orderByAsc("r.role_sort").orderByAsc("r.create_time"); + SysRole::getCreateTime, params.get("beginTime"), params.get("endTime")) + .orderByAsc(SysRole::getRoleSort).orderByAsc(SysRole::getCreateTime); return wrapper; } @@ -175,9 +173,9 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public List selectRoleByIds(List roleIds) { - return baseMapper.selectRoleList(new QueryWrapper() - .eq("r.status", SystemConstants.NORMAL) - .in(CollUtil.isNotEmpty(roleIds), "r.role_id", roleIds)); + return baseMapper.selectRoleList(new LambdaQueryWrapper() + .eq(SysRole::getStatus, SystemConstants.NORMAL) + .in(CollUtil.isNotEmpty(roleIds), SysRole::getRoleId, roleIds)); } /** @@ -351,14 +349,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private int insertRoleMenu(SysRoleBo role) { int rows = 1; // 新增用户与角色管理 - List list = new ArrayList(); + List list = new ArrayList<>(); for (Long menuId : role.getMenuIds()) { SysRoleMenu rm = new SysRoleMenu(); rm.setRoleId(role.getRoleId()); rm.setMenuId(menuId); list.add(rm); } - if (list.size() > 0) { + if (CollUtil.isEmpty(list)) { rows = roleMenuMapper.insertBatch(list) ? list.size() : 0; } return rows; @@ -372,14 +370,14 @@ public class SysRoleServiceImpl implements ISysRoleService { private int insertRoleDept(SysRoleBo role) { int rows = 1; // 新增角色与部门(数据权限)管理 - List list = new ArrayList(); + List list = new ArrayList<>(); for (Long deptId : role.getDeptIds()) { SysRoleDept rd = new SysRoleDept(); rd.setRoleId(role.getRoleId()); rd.setDeptId(deptId); list.add(rd); } - if (list.size() > 0) { + if (CollUtil.isEmpty(list)) { rows = roleDeptMapper.insertBatch(list) ? list.size() : 0; } return rows; @@ -411,21 +409,20 @@ public class SysRoleServiceImpl implements ISysRoleService { @CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, allEntries = true) @Override @Transactional(rollbackFor = Exception.class) - public int deleteRoleByIds(Long[] roleIds) { - for (Long roleId : roleIds) { - SysRole role = baseMapper.selectById(roleId); + public int deleteRoleByIds(List roleIds) { + List roles = baseMapper.selectByIds(roleIds); + for (SysRole role : roles) { checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); - checkRoleDataScope(roleId); - if (countUserRoleByRoleId(roleId) > 0) { + checkRoleDataScope(role.getRoleId()); + if (countUserRoleByRoleId(role.getRoleId()) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName())); } } - List ids = Arrays.asList(roleIds); // 删除角色与菜单关联 - roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, ids)); + roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds)); // 删除角色与部门关联 - roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, ids)); - return baseMapper.deleteByIds(ids); + roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, roleIds)); + return baseMapper.deleteByIds(roleIds); } /** @@ -547,4 +544,5 @@ public class SysRoleServiceImpl implements ISysRoleService { } }); } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index e347f1e9b..acfb708d7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -479,8 +479,8 @@ public class SysUserServiceImpl implements ISysUserService { } // 判断是否具有此角色的操作权限 List roles = roleMapper.selectRoleList( - new QueryWrapper().in("r.role_id", roleList)); - if (CollUtil.isEmpty(roles)) { + new LambdaQueryWrapper().in(SysRole::getRoleId, roleList)); + if (CollUtil.isEmpty(roles) || roles.size() != roleList.size()) { throw new ServiceException("没有权限访问角色的数据"); } if (clear) { diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 6c5d89d92..928ad2738 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -4,18 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index b9eced806..9e78302f3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -4,67 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml index 3c79918d8..a75350072 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -4,15 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index 4ef7b1e22..7f69e0101 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -4,56 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - select distinct r.role_id, - r.role_name, - r.role_key, - r.role_sort, - r.data_scope, - r.menu_check_strictly, - r.dept_check_strictly, - r.status, - r.del_flag, - r.create_time, - r.remark - from sys_role r - left join sys_user_role sur on sur.role_id = r.role_id - left join sys_user u on u.user_id = sur.user_id - left join sys_dept d on u.dept_id = d.dept_id - - - - - - - - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml index bc52d1a6d..6f7cedfee 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -4,10 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - -