mirror of https://gitee.com/stylefeng/roses
新增获取菜单接口
parent
f6e609e742
commit
d5d598631d
|
@ -0,0 +1,97 @@
|
|||
package cn.stylefeng.roses.kernel.system.pojo.menu.response;
|
||||
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo;
|
||||
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统菜单
|
||||
*
|
||||
* @author majianguo
|
||||
* @date 2021/1/7 15:18
|
||||
*/
|
||||
@Data
|
||||
public class SysMenuResponse implements AbstractTreeNode {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long menuId;
|
||||
|
||||
/**
|
||||
* 父id,顶级节点的父id是-1
|
||||
*/
|
||||
private Long menuParentId;
|
||||
|
||||
/**
|
||||
* 父id集合,中括号包住,逗号分隔
|
||||
*/
|
||||
private String menuPids;
|
||||
|
||||
/**
|
||||
* 菜单的名称
|
||||
*/
|
||||
private String menuName;
|
||||
|
||||
/**
|
||||
* 应用编码
|
||||
*/
|
||||
private String appCode;
|
||||
|
||||
/**
|
||||
* 是否可见:Y-是,N-否
|
||||
*/
|
||||
private String visible;
|
||||
|
||||
/**
|
||||
* 路由地址,浏览器显示的URL,例如/menu,适用于antd vue版本
|
||||
*/
|
||||
private String antdvRouter;
|
||||
|
||||
/**
|
||||
* 前端组件名,适用于antd vue版本
|
||||
*/
|
||||
private String antdvComponent;
|
||||
|
||||
/**
|
||||
* 图标,适用于antd vue版本
|
||||
*/
|
||||
private String antdvIcon;
|
||||
|
||||
/**
|
||||
* 外部链接打开方式:1-内置打开外链,2-新页面外链,适用于antd vue版本
|
||||
*/
|
||||
private Integer antdvLinkOpenType;
|
||||
|
||||
/**
|
||||
* 外部链接地址
|
||||
*/
|
||||
private String antdvLinkUrl;
|
||||
|
||||
/**
|
||||
* 子节点(表中不存在,用于构造树)
|
||||
*/
|
||||
private List children;
|
||||
|
||||
/**
|
||||
* 菜单可以被那些角色访问
|
||||
*/
|
||||
private List<SimpleRoleInfo> roles;
|
||||
|
||||
@Override
|
||||
public String getNodeId() {
|
||||
return menuId.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNodeParentId() {
|
||||
return menuParentId.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChildrenNodes(List childrenNodes) {
|
||||
this.children = childrenNodes;
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@ import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
|
|||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.response.SysMenuResponse;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.ztree.ZTreeNode;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
@ -141,4 +142,16 @@ public class SysMenuController {
|
|||
return new SuccessResponseData(sysMenuService.getAntDVueIndexMenus(sysMenuRequest.getAppCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统所有菜单
|
||||
*
|
||||
* @author majianguo
|
||||
* @date 2021/1/7 15:17
|
||||
*/
|
||||
@GetResource(name = "获取菜单列表(包含菜单可以被那些角色访问)", path = "/sysMenu/getSystemAllMenus", requiredPermission = false)
|
||||
public ResponseData getSystemAllMenus() {
|
||||
List<SysMenuResponse> sysMenuResponses = sysMenuService.getSystemAllMenus();
|
||||
return new SuccessResponseData(sysMenuResponses);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package cn.stylefeng.roses.kernel.menu.modular.mapper;
|
||||
|
||||
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.response.SysMenuResponse;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统菜单mapper接口
|
||||
*
|
||||
|
@ -10,4 +13,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||
* @date 2020/3/13 16:05
|
||||
*/
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
|
||||
/**
|
||||
* 获取系统所有菜单
|
||||
*
|
||||
* @author majianguo
|
||||
* @date 2021/1/7 15:27
|
||||
*/
|
||||
List<SysMenuResponse> getSystemAllMenus();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,47 @@
|
|||
<?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.guns.sys.modular.menu.mapper.SysMenuMapper">
|
||||
<mapper namespace="cn.stylefeng.roses.kernel.menu.modular.mapper.SysMenuMapper">
|
||||
|
||||
<resultMap id="systemMenuAndRole" type="cn.stylefeng.roses.kernel.system.pojo.menu.response.SysMenuResponse">
|
||||
<id column="menu_id" property="menuId"/>
|
||||
<result column="menu_parent_id" property="menuParentId"/>
|
||||
<result column="menu_pids" property="menuPids"/>
|
||||
<result column="menu_name" property="menuName"/>
|
||||
<result column="app_code" property="appCode"/>
|
||||
<result column="visible" property="visible"/>
|
||||
<result column="antdv_router" property="antdvRouter"/>
|
||||
<result column="antdv_component" property="antdvComponent"/>
|
||||
<result column="antdv_icon" property="antdvIcon"/>
|
||||
<result column="antdv_link_open_type" property="antdvLinkOpenType"/>
|
||||
<result column="antdv_link_url" property="antdvLinkUrl"/>
|
||||
<collection property="roles" ofType="cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo">
|
||||
<id column="role_id" property="roleId"/>
|
||||
<result column="role_name" property="roleName"/>
|
||||
<result column="role_code" property="roleCode"/>
|
||||
<result column="data_scope_type" property="dataScopeType"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="getSystemAllMenus" resultMap="systemMenuAndRole">
|
||||
SELECT sm.menu_id,
|
||||
sm.menu_parent_id,
|
||||
sm.menu_pids,
|
||||
sm.menu_name,
|
||||
sm.app_code,
|
||||
sm.visible,
|
||||
sm.antdv_router,
|
||||
sm.antdv_component,
|
||||
sm.antdv_icon,
|
||||
sm.antdv_link_open_type,
|
||||
sm.antdv_link_url,
|
||||
sr.role_id,
|
||||
sr.role_name,
|
||||
sr.role_code,
|
||||
sr.data_scope_type
|
||||
FROM sys_menu sm
|
||||
LEFT JOIN sys_role_menu srm ON sm.menu_id = srm.menu_id
|
||||
LEFT JOIN sys_role sr ON srm.role_id = sr.role_id
|
||||
WHERE sm.del_flag = 'N'
|
||||
AND sm.status_flag = 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -29,6 +29,7 @@ import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest;
|
|||
import cn.stylefeng.roses.kernel.system.pojo.menu.antd.AntdIndexMenuTreeNode;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.other.MenuSelectTreeNode;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.response.SysMenuResponse;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.ztree.ZTreeNode;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
|
@ -161,4 +162,11 @@ public interface SysMenuService extends IService<SysMenu> {
|
|||
*/
|
||||
List<MenuSelectTreeNode> treeForGrant(SysMenuRequest sysMenuRequest);
|
||||
|
||||
/**
|
||||
* 获取系统所有菜单
|
||||
*
|
||||
* @author majianguo
|
||||
* @date 2021/1/7 15:24
|
||||
*/
|
||||
List<SysMenuResponse> getSystemAllMenus();
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest;
|
|||
import cn.stylefeng.roses.kernel.system.pojo.menu.antd.AntdIndexMenuTreeNode;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.other.MenuSelectTreeNode;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.response.SysMenuResponse;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.ztree.ZTreeNode;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
|
@ -130,15 +131,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
Long id = sysMenuRequest.getMenuId();
|
||||
|
||||
// 获取所有子级的节点id
|
||||
Set<Long> childIdList = this.dbOperatorApi.findSubListByParentId(
|
||||
"sys_menu", "menu_pids", "menu_id", id);
|
||||
Set<Long> childIdList = this.dbOperatorApi.findSubListByParentId("sys_menu", "menu_pids", "menu_id", id);
|
||||
childIdList.add(id);
|
||||
|
||||
// 逻辑删除,设置删除标识
|
||||
LambdaUpdateWrapper<SysMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper
|
||||
.in(SysMenu::getMenuId, childIdList)
|
||||
.set(SysMenu::getDelFlag, YesOrNotEnum.Y.getCode());
|
||||
updateWrapper.in(SysMenu::getMenuId, childIdList).set(SysMenu::getDelFlag, YesOrNotEnum.Y.getCode());
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
|
||||
|
@ -220,10 +218,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
|
||||
// 获取菜单列表
|
||||
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(SysMenu::getMenuId, menuIdList)
|
||||
.eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode())
|
||||
.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode())
|
||||
.orderByAsc(SysMenu::getMenuSort);
|
||||
queryWrapper.in(SysMenu::getMenuId, menuIdList).eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode()).eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode()).orderByAsc(SysMenu::getMenuSort);
|
||||
|
||||
// 如果应用编码不为空,则拼接应用编码
|
||||
if (StrUtil.isNotBlank(appCode)) {
|
||||
|
@ -292,6 +287,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
return new DefaultTreeBuildFactory<MenuSelectTreeNode>().doTreeBuild(menuTreeNodeList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysMenuResponse> getSystemAllMenus() {
|
||||
List<SysMenuResponse> responses = this.baseMapper.getSystemAllMenus();
|
||||
return new DefaultTreeBuildFactory<SysMenuResponse>().doTreeBuild(responses);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMenu(String appCode) {
|
||||
SysMenuRequest sysMenuRequest = new SysMenuRequest();
|
||||
|
@ -328,14 +329,11 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
*/
|
||||
private String createPids(Long pid) {
|
||||
if (pid.equals(SystemConstants.DEFAULT_PARENT_ID)) {
|
||||
return SymbolConstant.LEFT_SQUARE_BRACKETS + SystemConstants.DEFAULT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS
|
||||
+ SymbolConstant.COMMA;
|
||||
return SymbolConstant.LEFT_SQUARE_BRACKETS + SystemConstants.DEFAULT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
} else {
|
||||
//获取父菜单
|
||||
SysMenu parentMenu = this.getById(pid);
|
||||
return parentMenu.getMenuPids()
|
||||
+ SymbolConstant.LEFT_SQUARE_BRACKETS + pid + SymbolConstant.RIGHT_SQUARE_BRACKETS
|
||||
+ SymbolConstant.COMMA;
|
||||
return parentMenu.getMenuPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + pid + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -456,11 +454,9 @@ 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.getMenuId()
|
||||
+ SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
String oldParentCodesPrefix = oldPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getMenuId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||
String oldParentCodesSuffix = child.getMenuPids().substring(oldParentCodesPrefix.length());
|
||||
String menuParentCodes = newPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getMenuId()
|
||||
+ SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA + oldParentCodesSuffix;
|
||||
String menuParentCodes = newPids + SymbolConstant.LEFT_SQUARE_BRACKETS + oldMenu.getMenuId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA + oldParentCodesSuffix;
|
||||
child.setMenuPids(menuParentCodes);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue