【menu】整理menu模块的字段和业务,新增角色关联菜单表

pull/3/head
fengshuonan 2020-12-19 18:31:08 +08:00
parent e54482b4ad
commit 4c5a01554e
11 changed files with 206 additions and 169 deletions

View File

@ -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<Long> getMenuIdsByResourceCodes(List<String> resourceCodes);
}

View File

@ -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;
/**
*

View File

@ -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;
/**
* idid0
*/
@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

View File

@ -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());
// 是否可见

View File

@ -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<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> impl
BeanUtil.copyProperties(sysMenuRequest, oldMenu);
// 设置新的pids
oldMenu.setPids(newPids);
oldMenu.setMenuPids(newPids);
// 不能修改状态,用修改状态接口修改状态
oldMenu.setStatusFlag(null);
@ -115,7 +114,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public void delete(SysMenuRequest sysMenuRequest) {
Long id = sysMenuRequest.getId();
Long id = sysMenuRequest.getMenuId();
// 获取所有子级的节点id
Set<Long> childIdList = this.dbOperatorApi.findSubListByParentId(
@ -125,7 +124,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
// 逻辑删除,设置删除标识
LambdaUpdateWrapper<SysMenu> 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<SysMenuMapper, SysMenu> impl
// 获取菜单列表
LambdaQueryWrapper<SysMenu> 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<SysMenu> sysMenuList = this.list(queryWrapper);
// 转换成登录菜单格式
@ -188,7 +187,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
if (!LoginContext.me().getSuperAdminFlag()) {
List<Long> menuIdList = getCurrentUserMenuIds();
if (!menuIdList.isEmpty()) {
wrapper.in(SysMenu::getId, menuIdList);
wrapper.in(SysMenu::getMenuId, menuIdList);
}
}
@ -210,28 +209,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return !list.isEmpty();
}
@Override
public List<Long> getMenuIdsByResourceCodes(List<String> resourceCodes) {
if (ObjectUtil.isEmpty(resourceCodes)) {
return new ArrayList<>();
}
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
// 根据资源编码集合查询
queryWrapper.in(SysMenu::getResourceCode, resourceCodes);
// 查询未删除状态的
queryWrapper.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode());
// 只查询菜单id
queryWrapper.select(SysMenu::getId);
List<SysMenu> list = this.list(queryWrapper);
return list.stream().map(SysMenu::getId).collect(Collectors.toList());
}
/**
*
*
@ -239,7 +216,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> 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<SysMenuMapper, SysMenu> impl
// 查找所有叶子节点,包含子节点的子节点
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(SysMenu::getPids, oldMenu.getId());
queryWrapper.like(SysMenu::getMenuPids, oldMenu.getMenuId());
List<SysMenu> list = this.list(queryWrapper);
// 更新所有子节点的应用为当前菜单的应用
@ -380,12 +357,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> 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);
});
}

View File

@ -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;
}

View File

@ -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<SysRoleMenu> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.roses.kernel.role.modular.mapper.SysRoleMenuMapper">
</mapper>

View File

@ -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<SysRoleMenu> {
}

View File

@ -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<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
}

View File

@ -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<SysRoleMapper, SysRole> 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<SysRoleMapper, SysRole> impl
@Override
public List<Long> getMenuIdsByRoleIds(List<Long> roleIds) {
// 获取角色绑定的资源
List<String> roleResourceIdList = this.getRoleResourceList(roleIds);
if (roleIds == null || roleIds.isEmpty()) {
return new ArrayList<>();
}
// 获取资源对应的菜单
return this.menuServiceApi.getMenuIdsByResourceCodes(roleResourceIdList);
// 获取角色绑定的菜单
LambdaQueryWrapper<SysRoleMenu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysRoleMenu::getRoleId, roleIds);
queryWrapper.select(SysRoleMenu::getMenuId);
List<SysRoleMenu> roleMenus = this.roleMenuService.list(queryWrapper);
if (roleMenus == null || roleMenus.isEmpty()) {
return new ArrayList<>();
}
return roleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
}
@Override