diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/MenuServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/MenuServiceApi.java index 9305ebeb0..4bae223c7 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/MenuServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/MenuServiceApi.java @@ -1,7 +1,5 @@ package cn.stylefeng.roses.kernel.system; -import java.util.List; - /** * 菜单api * @@ -20,14 +18,4 @@ public interface MenuServiceApi { */ boolean hasMenu(String appCode); - /** - * 通过资源编码集合,获取菜单的id集合 - * - * @param resourceCodes 资源编码集合 - * @return 菜单id的集合 - * @author fengshuonan - * @date 2020/11/26 21:27 - */ - List getMenuIdsByResourceCodes(List resourceCodes); - } diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuRequest.java index 7046105a2..f790b9b61 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuRequest.java @@ -24,44 +24,55 @@ public class SysMenuRequest extends BaseRequest { /** * 主键 */ - @NotNull(message = "id不能为空,请检查id参数", groups = {edit.class, delete.class, detail.class}) - private Long id; + @NotNull(message = "menuId不能为空", groups = {edit.class, delete.class, detail.class}) + private Long menuId; /** * 父id */ - @NotNull(message = "pid不能为空,请检查pid参数", groups = {add.class, edit.class}) - private Long pid; + @NotNull(message = "menuParentId不能为空", groups = {add.class, edit.class}) + private Long menuParentId; /** - * 名称 + * 菜单名称 */ - @NotBlank(message = "名称不能为空,请检查name参数", groups = {add.class, edit.class}) + @NotBlank(message = "菜单名称不能为空", groups = {add.class, edit.class}) @TableUniqueValue( - message = "名称存在重复,请检查name参数", + message = "菜单名称存在重复", groups = {add.class, edit.class}, tableName = "sys_menu", - columnName = "name") - private String name; + columnName = "menu_name") + private String menuName; /** - * 编码 + * 菜单的编码 */ - @NotBlank(message = "编码不能为空,请检查code参数", groups = {add.class, edit.class}) + @NotBlank(message = "菜单的编码不能为空", groups = {add.class, edit.class}) @TableUniqueValue( - message = "编码存在重复,请检查code参数", + message = "菜单的编码不能为空", groups = {add.class, edit.class}, tableName = "sys_menu", - columnName = "code") - private String code; + columnName = "menu_code") + private String menuCode; /** - * 菜单类型(字典 0目录 1菜单 2按钮) + * 应用分类(应用编码) */ - @NotNull(message = "菜单类型不能为空,请检查type参数", groups = {add.class, edit.class}) - @Min(value = 0, message = "菜单类型格式错误,请检查type参数", groups = {add.class, edit.class}) - @Max(value = 2, message = "菜单类型格式错误,请检查type参数", groups = {add.class, edit.class}) - private Integer type; + @NotBlank(message = "应用分类不能为空", groups = {add.class, edit.class, getAppMenus.class}) + private String appCode; + + /** + * 是否可见(Y-是,N-否) + */ + @NotBlank(message = "是否可见不能为空", groups = {add.class, edit.class}) + @FlagValue(message = "是否可见格式错误,正确格式应该Y或者N,请检查visible参数", groups = {add.class, edit.class}) + private String visible; + + /** + * 排序 + */ + @NotNull(message = "排序不能为空", groups = {add.class, edit.class}) + private Integer menuSort; /** * 图标 @@ -79,54 +90,16 @@ public class SysMenuRequest extends BaseRequest { private String component; /** - * 权限标识 + * 外部链接打开方式:1-内置外链,2-新页面外链 */ - private String permission; + @Min(value = 1, message = "打开方式格式错误,请检查openType参数", groups = {add.class, edit.class}) + @Max(value = 2, message = "打开方式格式错误,请检查openType参数", groups = {add.class, edit.class}) + private Integer linkOpenType; /** - * 应用分类(应用编码) + * 外部链接地址 */ - @NotBlank(message = "应用分类不能为空,请检查appCode参数", groups = {add.class, edit.class, getAppMenus.class}) - private String appCode; - - /** - * 打开方式(字典 0无 1组件 2内链 3外链) - */ - @NotNull(message = "打开方式不能为空,请检查openType参数", groups = {add.class, edit.class}) - @Min(value = 0, message = "打开方式格式错误,请检查openType参数", groups = {add.class, edit.class}) - @Max(value = 3, message = "打开方式格式错误,请检查openType参数", groups = {add.class, edit.class}) - private Integer openType; - - /** - * 是否可见(Y-是,N-否) - */ - @NotBlank(message = "是否可见不能为空,请检查visible参数", groups = {add.class, edit.class}) - @FlagValue(message = "是否可见格式错误,正确格式应该Y或者N,请检查visible参数", groups = {add.class, edit.class}) - private String visible; - - /** - * 内链地址 - */ - private String link; - - /** - * 重定向地址 - */ - private String redirect; - - /** - * 权重(字典 1系统权重 2业务权重) - */ - @NotNull(message = "权重不能为空,请检查weight参数", groups = {add.class, edit.class}) - @Min(value = 0, message = "权重格式错误,请检查weight参数", groups = {add.class, edit.class}) - @Max(value = 2, message = "权重格式错误,请检查weight参数", groups = {add.class, edit.class}) - private Integer weight; - - /** - * 排序 - */ - @NotNull(message = "排序不能为空,请检查sort参数", groups = {add.class, edit.class}) - private Integer sort; + private String linkUrl; /** * 备注 diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java index 6f85aea26..080036af9 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java @@ -1,10 +1,10 @@ package cn.stylefeng.roses.kernel.menu.modular.entity; +import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; +import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; -import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,41 +25,41 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode { /** * 主键 */ - @TableId("id") - private Long id; + @TableId("menu_id") + private Long menuId; /** * 父id,顶级节点的父id是0 */ - @TableField("pid") - private Long pid; + @TableField("menu_parent_id") + private Long menuParentId; /** * 父id集合,中括号包住,逗号分隔 */ - @TableField("pids") - private String pids; + @TableField("menu_pids") + private String menuPids; /** - * 名称 + * 菜单的名称 */ - @TableField("name") - private String name; + @TableField("menu_name") + private String menuName; /** * 菜单的编码 */ - @TableField("code") - private String code; + @TableField("menu_code") + private String menuCode; /** - * 应用分类(应用编码) + * 应用编码 */ @TableField("app_code") private String appCode; /** - * 是否可见(Y-是,N-否) + * 是否可见:Y-是,N-否 */ @TableField("visible") private String visible; @@ -67,21 +67,15 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode { /** * 排序 */ - @TableField("sort") - private BigDecimal sort; + @TableField("menu_sort") + private BigDecimal menuSort; /** - * 状态(1-启用,2-禁用) + * 状态:1-启用,2-禁用 */ @TableField("status_flag") private Integer statusFlag; - /** - * 关联的资源的编码 - */ - @TableField("resource_code") - private String resourceCode; - /** * 图标 */ @@ -101,7 +95,7 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode { private String component; /** - * 外部链接打开方式(1内置外链 2新页面外链) + * 外部链接打开方式:1-内置外链,2-新页面外链 */ @TableField("link_open_type") private Integer linkOpenType; @@ -119,7 +113,7 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode { private String remark; /** - * 是否删除,Y-被删除,N-未删除 + * 是否删除:Y-被删除,N-未删除 */ @TableField("del_flag") private String delFlag; @@ -132,12 +126,12 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode { @Override public String getNodeId() { - return id.toString(); + return menuId.toString(); } @Override public String getNodeParentId() { - return pid.toString(); + return menuParentId.toString(); } @Override diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuFactory.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuFactory.java index 94cc6c193..c79fba249 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuFactory.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuFactory.java @@ -25,11 +25,11 @@ public class MenuFactory { */ public static MenuBaseTreeNode parseMenuBaseTreeNode(SysMenu sysMenu) { MenuBaseTreeNode menuTreeNode = new MenuBaseTreeNode(); - menuTreeNode.setId(sysMenu.getId()); - menuTreeNode.setParentId(sysMenu.getPid()); - menuTreeNode.setValue(String.valueOf(sysMenu.getId())); - menuTreeNode.setTitle(sysMenu.getName()); - menuTreeNode.setWeight(sysMenu.getSort()); + menuTreeNode.setId(sysMenu.getMenuId()); + menuTreeNode.setParentId(sysMenu.getMenuParentId()); + menuTreeNode.setValue(String.valueOf(sysMenu.getMenuId())); + menuTreeNode.setTitle(sysMenu.getMenuName()); + menuTreeNode.setWeight(sysMenu.getMenuSort()); return menuTreeNode; } @@ -44,13 +44,13 @@ public class MenuFactory { sysMenuList.forEach(sysMenu -> { LoginMenuTreeNode loginMenuTreeNode = new LoginMenuTreeNode(); loginMenuTreeNode.setComponent(sysMenu.getComponent()); - loginMenuTreeNode.setId(sysMenu.getId()); - loginMenuTreeNode.setName(sysMenu.getCode()); + loginMenuTreeNode.setId(sysMenu.getMenuId()); + loginMenuTreeNode.setName(sysMenu.getMenuCode()); loginMenuTreeNode.setPath(sysMenu.getRouter()); - loginMenuTreeNode.setPid(sysMenu.getPid()); + loginMenuTreeNode.setPid(sysMenu.getMenuParentId()); LoginMenuTreeNode.Meta mateItem = new LoginMenuTreeNode().new Meta(); mateItem.setIcon(sysMenu.getIcon()); - mateItem.setTitle(sysMenu.getName()); + mateItem.setTitle(sysMenu.getMenuName()); mateItem.setLink(sysMenu.getLinkUrl()); // 是否可见 diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuServiceImpl.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuServiceImpl.java index e796fbd84..61c7e913f 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuServiceImpl.java @@ -27,14 +27,11 @@ package cn.stylefeng.roses.kernel.menu.modular.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; -import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu; -import cn.stylefeng.roses.kernel.menu.modular.factory.MenuFactory; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.db.api.DbOperatorApi; +import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu; +import cn.stylefeng.roses.kernel.menu.modular.factory.MenuFactory; import cn.stylefeng.roses.kernel.menu.modular.mapper.SysMenuMapper; import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; @@ -50,11 +47,13 @@ import cn.stylefeng.roses.kernel.system.exception.enums.SysMenuExceptionEnum; import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest; import cn.stylefeng.roses.kernel.system.pojo.menu.tree.LoginMenuTreeNode; import cn.stylefeng.roses.kernel.system.pojo.menu.tree.MenuBaseTreeNode; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -81,8 +80,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl BeanUtil.copyProperties(sysMenuRequest, sysMenu); // 组装pids - String newPids = createPids(sysMenuRequest.getPid()); - sysMenu.setPids(newPids); + String newPids = createPids(sysMenuRequest.getMenuParentId()); + sysMenu.setMenuPids(newPids); // 设置启用状态 sysMenu.setStatusFlag(StatusEnum.ENABLE.getCode()); @@ -103,7 +102,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl BeanUtil.copyProperties(sysMenuRequest, oldMenu); // 设置新的pids - oldMenu.setPids(newPids); + oldMenu.setMenuPids(newPids); // 不能修改状态,用修改状态接口修改状态 oldMenu.setStatusFlag(null); @@ -115,7 +114,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Override public void delete(SysMenuRequest sysMenuRequest) { - Long id = sysMenuRequest.getId(); + Long id = sysMenuRequest.getMenuId(); // 获取所有子级的节点id Set childIdList = this.dbOperatorApi.findSubListByParentId( @@ -125,7 +124,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 逻辑删除,设置删除标识 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper - .in(SysMenu::getId, childIdList) + .in(SysMenu::getMenuId, childIdList) .set(SysMenu::getDelFlag, YesOrNotEnum.Y.getCode()); this.update(updateWrapper); } @@ -153,11 +152,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 获取菜单列表 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(SysMenu::getId, menuIdList) + queryWrapper.in(SysMenu::getMenuId, menuIdList) .eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode()) .eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode()) .eq(SysMenu::getAppCode, appCode) - .orderByAsc(SysMenu::getSort); + .orderByAsc(SysMenu::getMenuSort); List sysMenuList = this.list(queryWrapper); // 转换成登录菜单格式 @@ -188,7 +187,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl if (!LoginContext.me().getSuperAdminFlag()) { List menuIdList = getCurrentUserMenuIds(); if (!menuIdList.isEmpty()) { - wrapper.in(SysMenu::getId, menuIdList); + wrapper.in(SysMenu::getMenuId, menuIdList); } } @@ -210,28 +209,6 @@ public class SysMenuServiceImpl extends ServiceImpl impl return !list.isEmpty(); } - @Override - public List getMenuIdsByResourceCodes(List resourceCodes) { - - if (ObjectUtil.isEmpty(resourceCodes)) { - return new ArrayList<>(); - } - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - - // 根据资源编码集合查询 - queryWrapper.in(SysMenu::getResourceCode, resourceCodes); - - // 查询未删除状态的 - queryWrapper.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode()); - - // 只查询菜单id - queryWrapper.select(SysMenu::getId); - - List list = this.list(queryWrapper); - return list.stream().map(SysMenu::getId).collect(Collectors.toList()); - } - /** * 获取系统菜单 * @@ -239,7 +216,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @date 2020/3/27 9:13 */ private SysMenu querySysMenu(SysMenuRequest sysMenuRequest) { - SysMenu sysMenu = this.getById(sysMenuRequest.getId()); + SysMenu sysMenu = this.getById(sysMenuRequest.getMenuId()); if (ObjectUtil.isNull(sysMenu)) { throw new ServiceException(SysMenuExceptionEnum.MENU_NOT_EXIST); } @@ -263,7 +240,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl } else { //获取父菜单 SysMenu parentMenu = this.getById(pid); - return parentMenu.getPids() + return parentMenu.getMenuPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + pid + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA; } @@ -285,8 +262,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl } // 根据菜单名称模糊查询 - if (ObjectUtil.isNotEmpty(sysMenuRequest.getName())) { - queryWrapper.like(SysMenu::getName, sysMenuRequest.getName()); + if (ObjectUtil.isNotEmpty(sysMenuRequest.getMenuName())) { + queryWrapper.like(SysMenu::getMenuName, sysMenuRequest.getMenuName()); } } @@ -294,7 +271,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl queryWrapper.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode()); // 根据排序升序排列,序号越小越在前 - queryWrapper.orderByAsc(SysMenu::getSort); + queryWrapper.orderByAsc(SysMenu::getMenuSort); return queryWrapper; } @@ -334,12 +311,12 @@ public class SysMenuServiceImpl extends ServiceImpl impl private String updateChildrenAppAndLevel(SysMenuRequest sysMenuRequest, SysMenu oldMenu) { // 本菜单旧的pids - Long oldPid = oldMenu.getPid(); - String oldPids = oldMenu.getPids(); + Long oldPid = oldMenu.getMenuParentId(); + String oldPids = oldMenu.getMenuPids(); // 生成新的pid和pids - Long newPid = sysMenuRequest.getPid(); - String newPids = this.createPids(sysMenuRequest.getPid()); + Long newPid = sysMenuRequest.getMenuParentId(); + String newPids = this.createPids(sysMenuRequest.getMenuParentId()); // 是否更新子应用的标识 boolean updateSubAppsFlag = false; @@ -365,7 +342,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 查找所有叶子节点,包含子节点的子节点 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(SysMenu::getPids, oldMenu.getId()); + queryWrapper.like(SysMenu::getMenuPids, oldMenu.getMenuId()); List list = this.list(queryWrapper); // 更新所有子节点的应用为当前菜单的应用 @@ -380,12 +357,12 @@ public class SysMenuServiceImpl extends ServiceImpl impl if (updateSubPidsFlag) { list.forEach(child -> { // 子节点pids组成 = 当前菜单新pids + 当前菜单id + 子节点自己的pids后缀 - String oldParentCodesPrefix = oldPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getId() + String oldParentCodesPrefix = oldPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getMenuId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA; - String oldParentCodesSuffix = child.getPids().substring(oldParentCodesPrefix.length()); - String menuParentCodes = newPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getId() + String oldParentCodesSuffix = child.getMenuPids().substring(oldParentCodesPrefix.length()); + String menuParentCodes = newPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getMenuId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA + oldParentCodesSuffix; - child.setPids(menuParentCodes); + child.setMenuPids(menuParentCodes); }); } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/entity/SysRoleMenu.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/entity/SysRoleMenu.java new file mode 100644 index 000000000..ec5b3faa9 --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/entity/SysRoleMenu.java @@ -0,0 +1,40 @@ +package cn.stylefeng.roses.kernel.role.modular.entity; + +import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 角色菜单关联表 + * + * @author fengshuonan + * @date 2020/12/19 18:19 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("sys_role_menu") +public class SysRoleMenu extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "role_menu_id", type = IdType.ASSIGN_ID) + private Long roleMenuId; + + /** + * 角色id + */ + @TableField("role_id") + private Long roleId; + + /** + * 菜单id + */ + @TableField("menu_id") + private Long menuId; + +} diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/SysRoleMenuMapper.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/SysRoleMenuMapper.java new file mode 100644 index 000000000..65dd208b0 --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/SysRoleMenuMapper.java @@ -0,0 +1,13 @@ +package cn.stylefeng.roses.kernel.role.modular.mapper; + +import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 角色菜单关联表 + * + * @author fengshuonan + * @date 2020/12/19 18:20 + */ +public interface SysRoleMenuMapper extends BaseMapper { +} diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/mapping/SysRoleMenuMapper.xml b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/mapping/SysRoleMenuMapper.xml new file mode 100644 index 000000000..a474e9ddf --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/mapper/mapping/SysRoleMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/SysRoleMenuService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/SysRoleMenuService.java new file mode 100644 index 000000000..224ae2e38 --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/SysRoleMenuService.java @@ -0,0 +1,14 @@ +package cn.stylefeng.roses.kernel.role.modular.service; + +import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 角色菜单关联信息 + * + * @author fengshuonan + * @date 2020/12/19 18:21 + */ +public interface SysRoleMenuService extends IService { + +} diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleMenuServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleMenuServiceImpl.java new file mode 100644 index 000000000..04d96a8b0 --- /dev/null +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleMenuServiceImpl.java @@ -0,0 +1,18 @@ +package cn.stylefeng.roses.kernel.role.modular.service.impl; + +import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleMenu; +import cn.stylefeng.roses.kernel.role.modular.mapper.SysRoleMenuMapper; +import cn.stylefeng.roses.kernel.role.modular.service.SysRoleMenuService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 角色菜单关联信息 + * + * @author fengshuonan + * @date 2020/12/19 18:21 + */ +@Service +public class SysRoleMenuServiceImpl extends ServiceImpl implements SysRoleMenuService { + +} diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleServiceImpl.java index 4e7fbd679..6f2672992 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/role/modular/service/impl/SysRoleServiceImpl.java @@ -27,9 +27,6 @@ package cn.stylefeng.roses.kernel.role.modular.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum; import cn.stylefeng.roses.kernel.auth.api.exception.AuthException; @@ -39,9 +36,11 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.role.modular.entity.SysRole; import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleDataScope; +import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleMenu; import cn.stylefeng.roses.kernel.role.modular.entity.SysRoleResource; import cn.stylefeng.roses.kernel.role.modular.mapper.SysRoleMapper; import cn.stylefeng.roses.kernel.role.modular.service.SysRoleDataScopeService; +import cn.stylefeng.roses.kernel.role.modular.service.SysRoleMenuService; import cn.stylefeng.roses.kernel.role.modular.service.SysRoleResourceService; import cn.stylefeng.roses.kernel.role.modular.service.SysRoleService; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; @@ -56,6 +55,9 @@ import cn.stylefeng.roses.kernel.system.exception.enums.SysRoleExceptionEnum; import cn.stylefeng.roses.kernel.system.pojo.role.request.SysRoleRequest; import cn.stylefeng.roses.kernel.system.pojo.role.response.SysRoleResponse; import cn.stylefeng.roses.kernel.system.util.DataScopeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -86,6 +88,9 @@ public class SysRoleServiceImpl extends ServiceImpl impl @Resource private MenuServiceApi menuServiceApi; + @Resource + private SysRoleMenuService roleMenuService; + @Override public void add(SysRoleRequest sysRoleRequest) { SysRole sysRole = new SysRole(); @@ -324,11 +329,21 @@ public class SysRoleServiceImpl extends ServiceImpl impl @Override public List getMenuIdsByRoleIds(List roleIds) { - // 获取角色绑定的资源 - List roleResourceIdList = this.getRoleResourceList(roleIds); + if (roleIds == null || roleIds.isEmpty()) { + return new ArrayList<>(); + } - // 获取资源对应的菜单 - return this.menuServiceApi.getMenuIdsByResourceCodes(roleResourceIdList); + // 获取角色绑定的菜单 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysRoleMenu::getRoleId, roleIds); + queryWrapper.select(SysRoleMenu::getMenuId); + + List roleMenus = this.roleMenuService.list(queryWrapper); + if (roleMenus == null || roleMenus.isEmpty()) { + return new ArrayList<>(); + } + + return roleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()); } @Override