新增获取菜单接口

pull/3/head
rays 2021-01-07 16:52:12 +08:00
parent f6e609e742
commit d5d598631d
6 changed files with 186 additions and 19 deletions

View File

@ -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;
/**
* idid-1
*/
private Long menuParentId;
/**
* id
*/
private String menuPids;
/**
*
*/
private String menuName;
/**
*
*/
private String appCode;
/**
* Y-N-
*/
private String visible;
/**
* URL/menuantd 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;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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