【menu】更新antdv的首页菜单获取

pull/3/head
fengshuonan 2020-12-30 20:55:16 +08:00
parent b8731d7433
commit 5d4a958746
9 changed files with 136 additions and 103 deletions

View File

@ -19,9 +19,14 @@ public interface SystemConstants {
String SYSTEM_EXCEPTION_STEP_CODE = "18";
/**
* id0
* id
*/
Long DEFAULT_PARENT_ID = 0L;
Long DEFAULT_PARENT_ID = -1L;
/**
* id
*/
Long VIRTUAL_ROOT_PARENT_ID = -2L;
/**
* pidsid

View File

@ -62,7 +62,7 @@ public class SysMenuRequest extends BaseRequest {
/**
*
*/
@NotBlank(message = "appCode不能为空", groups = {add.class, edit.class, getAppMenus.class})
@NotBlank(message = "appCode不能为空", groups = {add.class, edit.class, getAppMenusAntdVue.class})
private String appCode;
/**
@ -111,9 +111,9 @@ public class SysMenuRequest extends BaseRequest {
private String remark;
/**
*
* Antd Vue
*/
public @interface getAppMenus {
public @interface getAppMenusAntdVue {
}
}

View File

@ -1,7 +1,10 @@
package cn.stylefeng.roses.kernel.system.pojo.menu.antd;
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode;
import lombok.Data;
import java.util.List;
/**
*
*
@ -9,7 +12,7 @@ import lombok.Data;
* @date 2020/4/17 17:35
*/
@Data
public class AntdIndexMenuTreeNode {
public class AntdIndexMenuTreeNode implements AbstractTreeNode {
/**
* id
@ -22,19 +25,14 @@ public class AntdIndexMenuTreeNode {
private Long pid;
/**
* , ,
*
*/
private String name;
/**
*
*
*/
private String component;
/**
* , 访,
*/
private String redirect;
private String path;
/**
*
@ -42,46 +40,41 @@ public class AntdIndexMenuTreeNode {
private Meta meta;
/**
*
*
*/
private String path;
/**
* sidebar
*/
private boolean hidden;
private List<AntdIndexMenuTreeNode> children;
/**
*
*/
@Data
public class Meta {
public static class Meta {
/**
* , , *
*/
public String title;
/**
*
*
*/
public String icon;
/**
*
* , false
*/
public boolean show;
/**
* _blank
*/
public String target;
/**
* http
*/
public String link;
public Boolean invisible = false;
}
@Override
public String getNodeId() {
return this.id.toString();
}
@Override
public String getNodeParentId() {
return this.pid.toString();
}
@Override
public void setChildrenNodes(List childrenNodes) {
this.children = childrenNodes;
}
}

View File

@ -84,17 +84,6 @@ public class SysMenuController {
return new SuccessResponseData(sysMenuService.list(sysMenuRequest));
}
/**
*
*
* @author fengshuonan
* @date 2020/4/19 15:50
*/
@GetResource(name = "获取某个应用的菜单", path = "/sysMenu/getAppMenus", requiredPermission = false)
public ResponseData getAppMenus(@Validated(SysMenuRequest.getAppMenus.class) SysMenuRequest sysMenuRequest) {
return new SuccessResponseData(sysMenuService.getAppMenusAntDesign(sysMenuRequest.getAppCode()));
}
/**
*
*
@ -117,4 +106,15 @@ public class SysMenuController {
return new SuccessResponseData(sysMenuService.treeForGrant(sysMenuRequest));
}
/**
* Antd Vue
*
* @author fengshuonan
* @date 2020/4/19 15:50
*/
@GetResource(name = "获取主页左侧菜单列表Antd Vue", path = "/sysMenu/getIndexMenuAntdVue", requiredPermission = false)
public ResponseData getAppMenus(@Validated(SysMenuRequest.getAppMenusAntdVue.class) SysMenuRequest sysMenuRequest) {
return new SuccessResponseData(sysMenuService.getAntDVueIndexMenus(sysMenuRequest.getAppCode()));
}
}

View File

@ -1,74 +1,76 @@
package cn.stylefeng.roses.kernel.menu.modular.factory;
import cn.hutool.core.collection.CollectionUtil;
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.enums.LinkOpenTypeEnum;
import cn.stylefeng.roses.kernel.system.constants.SystemConstants;
import cn.stylefeng.roses.kernel.system.pojo.menu.antd.AntdIndexMenuTreeNode;
import cn.stylefeng.roses.kernel.system.pojo.menu.other.MenuSelectTreeNode;
import java.util.ArrayList;
import java.util.List;
/**
* antd
* antd vue
*
* @author fengshuonan
* @date 2020/11/23 21:58
* @date 2020/12/30 20:11
*/
public class AntdMenusFactory {
/**
* menu
* vue antd admin
*
* @author fengshuonan
* @date 2020/11/23 21:54
*/
public static MenuSelectTreeNode parseMenuBaseTreeNode(SysMenu sysMenu) {
MenuSelectTreeNode menuTreeNode = new MenuSelectTreeNode();
menuTreeNode.setId(sysMenu.getMenuId());
menuTreeNode.setParentId(sysMenu.getMenuParentId());
menuTreeNode.setValue(String.valueOf(sysMenu.getMenuId()));
menuTreeNode.setTitle(sysMenu.getMenuName());
menuTreeNode.setWeight(sysMenu.getMenuSort());
return menuTreeNode;
}
/**
* SysMenuLoginMenuTreeNode
*
* @author fengshuonan
* @date 2020/4/17 17:53
* @date 2020/12/30 20:28
*/
public static List<AntdIndexMenuTreeNode> convertSysMenuToLoginMenu(List<SysMenu> sysMenuList) {
List<AntdIndexMenuTreeNode> antDesignMenuTreeNodeList = CollectionUtil.newArrayList();
sysMenuList.forEach(sysMenu -> {
List<AntdIndexMenuTreeNode> antDesignMenuTreeNodeList = new ArrayList<>(sysMenuList.size());
// 添加根节点
antDesignMenuTreeNodeList.add(createRootMenuNode());
for (SysMenu sysMenu : sysMenuList) {
AntdIndexMenuTreeNode antdIndexMenuTreeNode = new AntdIndexMenuTreeNode();
antdIndexMenuTreeNode.setComponent(sysMenu.getComponent());
// 设置菜单id
antdIndexMenuTreeNode.setId(sysMenu.getMenuId());
antdIndexMenuTreeNode.setName(sysMenu.getMenuCode());
antdIndexMenuTreeNode.setPath(sysMenu.getRouter());
// 设置父级id
antdIndexMenuTreeNode.setPid(sysMenu.getMenuParentId());
AntdIndexMenuTreeNode.Meta mateItem = new AntdIndexMenuTreeNode().new Meta();
// 菜单名称
antdIndexMenuTreeNode.setName(sysMenu.getMenuName());
// 菜单路由地址
antdIndexMenuTreeNode.setPath(sysMenu.getRouter());
AntdIndexMenuTreeNode.Meta mateItem = new AntdIndexMenuTreeNode.Meta();
// 菜单图标
mateItem.setIcon(sysMenu.getIcon());
mateItem.setTitle(sysMenu.getMenuName());
mateItem.setLink(sysMenu.getLinkUrl());
// 是否可见
mateItem.setShow(YesOrNotEnum.Y.getCode().equals(sysMenu.getVisible()));
// 是否是外链
if (LinkOpenTypeEnum.INNER.getCode().equals(sysMenu.getLinkOpenType())) {
// 打开外链
mateItem.setTarget("_blank");
antdIndexMenuTreeNode.setPath(sysMenu.getLinkUrl());
antdIndexMenuTreeNode.setRedirect(sysMenu.getLinkUrl());
}
// 设置是否隐藏true就是隐藏
mateItem.setInvisible(YesOrNotEnum.N.getCode().equals(sysMenu.getVisible()));
antdIndexMenuTreeNode.setMeta(mateItem);
antDesignMenuTreeNodeList.add(antdIndexMenuTreeNode);
});
}
return antDesignMenuTreeNodeList;
}
/**
*
*
* @author fengshuonan
* @date 2020/12/30 20:38
*/
private static AntdIndexMenuTreeNode createRootMenuNode() {
AntdIndexMenuTreeNode antdIndexMenuTreeNode = new AntdIndexMenuTreeNode();
antdIndexMenuTreeNode.setId(SystemConstants.DEFAULT_PARENT_ID);
antdIndexMenuTreeNode.setPid(SystemConstants.VIRTUAL_ROOT_PARENT_ID);
antdIndexMenuTreeNode.setName("根虚拟节点");
antdIndexMenuTreeNode.setPath("/");
return antdIndexMenuTreeNode;
}
}

View File

@ -0,0 +1,30 @@
package cn.stylefeng.roses.kernel.menu.modular.factory.common;
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu;
import cn.stylefeng.roses.kernel.system.pojo.menu.other.MenuSelectTreeNode;
/**
* antd
*
* @author fengshuonan
* @date 2020/11/23 21:58
*/
public class CommonMenusFactory {
/**
* menu
*
* @author fengshuonan
* @date 2020/11/23 21:54
*/
public static MenuSelectTreeNode parseMenuBaseTreeNode(SysMenu sysMenu) {
MenuSelectTreeNode menuTreeNode = new MenuSelectTreeNode();
menuTreeNode.setId(sysMenu.getMenuId());
menuTreeNode.setParentId(sysMenu.getMenuParentId());
menuTreeNode.setValue(String.valueOf(sysMenu.getMenuId()));
menuTreeNode.setTitle(sysMenu.getMenuName());
menuTreeNode.setWeight(sysMenu.getMenuSort());
return menuTreeNode;
}
}

View File

@ -121,7 +121,7 @@ public interface SysMenuService extends IService<SysMenu> {
* @author fengshuonan
* @date 2020/4/17 17:48
*/
List<AntdIndexMenuTreeNode> getAppMenusAntDesign(String appCode);
List<AntdIndexMenuTreeNode> getAntDVueIndexMenus(String appCode);
/**
*

View File

@ -35,6 +35,7 @@ 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.AntdMenusFactory;
import cn.stylefeng.roses.kernel.menu.modular.factory.LayuiMenusFactory;
import cn.stylefeng.roses.kernel.menu.modular.factory.common.CommonMenusFactory;
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;
@ -192,13 +193,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
@Override
public List<AntdIndexMenuTreeNode> getAppMenusAntDesign(String appCode) {
public List<AntdIndexMenuTreeNode> getAntDVueIndexMenus(String appCode) {
// 获取当前用户的所有菜单
List<SysMenu> currentUserMenus = this.getCurrentUserMenus(appCode);
// 转换成登录菜单格式
return AntdMenusFactory.convertSysMenuToLoginMenu(currentUserMenus);
List<AntdIndexMenuTreeNode> antdIndexMenuTreeNodes = AntdMenusFactory.convertSysMenuToLoginMenu(currentUserMenus);
// 转化成树结构
return new DefaultTreeBuildFactory<AntdIndexMenuTreeNode>(SystemConstants.VIRTUAL_ROOT_PARENT_ID.toString()).doTreeBuild(antdIndexMenuTreeNodes);
}
@Override
@ -207,7 +211,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
LambdaQueryWrapper<SysMenu> wrapper = createWrapper(sysMenuRequest);
this.list(wrapper).forEach(sysMenu -> {
MenuSelectTreeNode menuTreeNode = AntdMenusFactory.parseMenuBaseTreeNode(sysMenu);
MenuSelectTreeNode menuTreeNode = CommonMenusFactory.parseMenuBaseTreeNode(sysMenu);
menuTreeNodeList.add(menuTreeNode);
});
@ -230,7 +234,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
this.list(wrapper).forEach(sysMenu -> {
MenuSelectTreeNode menuTreeNode = AntdMenusFactory.parseMenuBaseTreeNode(sysMenu);
MenuSelectTreeNode menuTreeNode = CommonMenusFactory.parseMenuBaseTreeNode(sysMenu);
menuTreeNodeList.add(menuTreeNode);
});

View File

@ -14,6 +14,7 @@ import cn.stylefeng.roses.kernel.resource.modular.pojo.ResourceTreeNode;
import cn.stylefeng.roses.kernel.resource.modular.service.SysResourceService;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.ResourceServiceApi;
import cn.stylefeng.roses.kernel.system.constants.SystemConstants;
import cn.stylefeng.roses.kernel.system.pojo.resource.request.ResourceRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -28,8 +29,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import java.util.*;
import java.util.stream.Collectors;
import static cn.stylefeng.roses.kernel.system.constants.SystemConstants.DEFAULT_PARENT_ID;
/**
*
*
@ -282,7 +281,7 @@ public class SysResourceServiceImpl extends ServiceImpl<SysResourceMapper, SysRe
appNode.setCode(appName);
appNode.setNodeName(appName);
appNode.setResourceFlag(false);
appNode.setParentCode(DEFAULT_PARENT_ID.toString());
appNode.setParentCode(SystemConstants.DEFAULT_PARENT_ID.toString());
// 遍历当前应用下的模块资源
Map<String, List<ResourceTreeNode>> modularResources = appModularResources.get(appName);