【menu】整理layui的菜单获取

pull/3/head
fengshuonan 2020-12-27 19:57:52 +08:00
parent 2863c47ad5
commit 58f829f44f
10 changed files with 237 additions and 6 deletions

View File

@ -48,4 +48,9 @@ public interface SystemConstants {
*/
Boolean DEFAULT_CAPTCHA_OPEN = false;
/**
*
*/
String DEFAULT_SYSTEM_NAME = "Guns快速开发平台";
}

View File

@ -41,4 +41,14 @@ public class SystemConfigExpander {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_CAPTCHA_OPEN", Boolean.class, SystemConstants.DEFAULT_CAPTCHA_OPEN);
}
/**
*
*
* @author fengshuonan
* @date 2020/12/27 17:22
*/
public static String getSystemName() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_SYSTEM_NAME", String.class, SystemConstants.DEFAULT_SYSTEM_NAME);
}
}

View File

@ -0,0 +1,26 @@
package cn.stylefeng.roses.kernel.system.pojo.menu.layui;
import lombok.Data;
import java.util.List;
/**
* Layui
*
* @author fengshuonan
* @date 2020/12/27 18:39
*/
@Data
public class LayuiAppIndexMenus {
/**
*
*/
private String appCode;
/**
*
*/
private List<LayuiIndexMenuTreeNode> layuiIndexMenuTreeNodes;
}

View File

@ -0,0 +1,67 @@
package cn.stylefeng.roses.kernel.system.pojo.menu.layui;
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode;
import lombok.Data;
import java.util.List;
/**
* Layui
*
* @author fengshuonan
* @date 2020/12/27 18:36
*/
@Data
public class LayuiIndexMenuTreeNode implements AbstractTreeNode {
/**
*
*/
private String appCode;
/**
* id
*/
private Long menuId;
/**
*
*/
private Long menuParentId;
/**
*
*/
private String menuName;
/**
* url
*/
private String router;
/**
*
*/
private String icon;
/**
*
*/
private List<LayuiIndexMenuTreeNode> children;
@Override
public String getNodeId() {
return this.menuId.toString();
}
@Override
public String getNodeParentId() {
return this.menuParentId.toString();
}
@Override
public void setChildrenNodes(List childrenNodes) {
this.children = childrenNodes;
}
}

View File

@ -10,12 +10,12 @@ import cn.stylefeng.roses.kernel.system.pojo.menu.other.MenuSelectTreeNode;
import java.util.List;
/**
* pojo
* antd
*
* @author fengshuonan
* @date 2020/11/23 21:58
*/
public class MenuFactory {
public class AntdMenusFactory {
/**
* menu

View File

@ -0,0 +1,70 @@
package cn.stylefeng.roses.kernel.menu.modular.factory;
import cn.hutool.core.bean.BeanUtil;
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu;
import cn.stylefeng.roses.kernel.rule.factory.DefaultTreeBuildFactory;
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiIndexMenuTreeNode;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* layui
*
* @author fengshuonan
* @date 2020/12/27 18:53
*/
public class LayuiMenusFactory {
/**
* layui
*
* @author fengshuonan
* @date 2020/12/27 19:07
*/
public static List<LayuiAppIndexMenus> createLayuiAppIndexMenus(List<SysMenu> sysMenuList) {
ArrayList<LayuiAppIndexMenus> resultList = new ArrayList<>();
// 找出用户有多少个应用的菜单
Set<String> appCodes = new HashSet<>();
for (SysMenu currentUserMenu : sysMenuList) {
String appCode = currentUserMenu.getAppCode();
appCodes.add(appCode);
}
// 找出每个应用下的所有菜单
for (String appCode : appCodes) {
// 找出这个应用下的菜单
List<SysMenu> appMenus = sysMenuList.stream()
.filter(i -> i.getAppCode().equals(appCode))
.collect(Collectors.toList());
// 菜单实体 转化为 layui节点
ArrayList<LayuiIndexMenuTreeNode> layuiIndexMenuTreeNodes = new ArrayList<>();
for (SysMenu appMenu : appMenus) {
LayuiIndexMenuTreeNode layuiIndexMenuTreeNode = new LayuiIndexMenuTreeNode();
BeanUtil.copyProperties(appMenu, layuiIndexMenuTreeNode);
layuiIndexMenuTreeNodes.add(layuiIndexMenuTreeNode);
}
// 将这些菜单组合成树
List<LayuiIndexMenuTreeNode> layuiIndexMenuTreeNodeList = new DefaultTreeBuildFactory<LayuiIndexMenuTreeNode>().doTreeBuild(layuiIndexMenuTreeNodes);
// 将appCode和对应的树包装为实体
LayuiAppIndexMenus layuiAppIndexMenus = new LayuiAppIndexMenus();
layuiAppIndexMenus.setAppCode(appCode);
layuiAppIndexMenus.setLayuiIndexMenuTreeNodes(layuiIndexMenuTreeNodeList);
resultList.add(layuiAppIndexMenus);
}
return resultList;
}
}

View File

@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.menu.modular.service;
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenu;
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 com.baomidou.mybatisplus.extension.service.IService;
@ -104,6 +105,14 @@ public interface SysMenuService extends IService<SysMenu> {
*/
List<SysMenu> getCurrentUserMenus(String appCode);
/**
* Layui
*
* @author fengshuonan
* @date 2020/12/27 18:48
*/
List<LayuiAppIndexMenus> getLayuiIndexMenus();
/**
* AntDesign
*

View File

@ -33,7 +33,8 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo;
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.factory.AntdMenusFactory;
import cn.stylefeng.roses.kernel.menu.modular.factory.LayuiMenusFactory;
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;
@ -49,6 +50,7 @@ import cn.stylefeng.roses.kernel.system.exception.enums.SysMenuExceptionEnum;
import cn.stylefeng.roses.kernel.system.exception.enums.SysUserExceptionEnum;
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -179,6 +181,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return this.list(queryWrapper);
}
@Override
public List<LayuiAppIndexMenus> getLayuiIndexMenus() {
// 获取当前用户所有菜单
List<SysMenu> currentUserMenus = this.getCurrentUserMenus();
// 组装每个应用的菜单树
return LayuiMenusFactory.createLayuiAppIndexMenus(currentUserMenus);
}
@Override
public List<AntdIndexMenuTreeNode> getAppMenusAntDesign(String appCode) {
@ -186,7 +198,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
List<SysMenu> currentUserMenus = this.getCurrentUserMenus(appCode);
// 转换成登录菜单格式
return MenuFactory.convertSysMenuToLoginMenu(currentUserMenus);
return AntdMenusFactory.convertSysMenuToLoginMenu(currentUserMenus);
}
@Override
@ -195,7 +207,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
LambdaQueryWrapper<SysMenu> wrapper = createWrapper(sysMenuRequest);
this.list(wrapper).forEach(sysMenu -> {
MenuSelectTreeNode menuTreeNode = MenuFactory.parseMenuBaseTreeNode(sysMenu);
MenuSelectTreeNode menuTreeNode = AntdMenusFactory.parseMenuBaseTreeNode(sysMenu);
menuTreeNodeList.add(menuTreeNode);
});
@ -218,7 +230,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
this.list(wrapper).forEach(sysMenu -> {
MenuSelectTreeNode menuTreeNode = MenuFactory.parseMenuBaseTreeNode(sysMenu);
MenuSelectTreeNode menuTreeNode = AntdMenusFactory.parseMenuBaseTreeNode(sysMenu);
menuTreeNodeList.add(menuTreeNode);
});

View File

@ -158,4 +158,13 @@ public interface SysUserService extends IService<SysUser>, UserServiceApi {
*/
SysUser getUserByAccount(String account);
/**
* url
*
* @param fileId id
* @author fengshuonan
* @date 2020/12/27 19:13
*/
String getUserAvatarUrl(Long fileId);
}

View File

@ -7,6 +7,10 @@ import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.file.FileInfoApi;
import cn.stylefeng.roses.kernel.file.FileOperatorApi;
import cn.stylefeng.roses.kernel.file.expander.FileConfigExpander;
import cn.stylefeng.roses.kernel.file.pojo.response.SysFileInfoResponse;
import cn.stylefeng.roses.kernel.office.api.OfficeExcelApi;
import cn.stylefeng.roses.kernel.office.api.pojo.report.ExcelExportParam;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
@ -82,6 +86,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Resource
private ResourceServiceApi resourceServiceApi;
@Resource
private FileInfoApi fileInfoApi;
@Resource
private FileOperatorApi fileOperatorApi;
@Override
@Transactional(rollbackFor = Exception.class)
public void add(SysUserRequest sysUserRequest) {
@ -350,6 +360,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return list.get(0);
}
@Override
public String getUserAvatarUrl(Long fileId) {
// 获取头像文件详细信息
SysFileInfoResponse fileInfoWithoutContent = fileInfoApi.getFileInfoWithoutContent(fileId);
// 获取头像的访问地址
return fileOperatorApi.getFileAuthUrl(
fileInfoWithoutContent.getFileBucket(),
fileInfoWithoutContent.getFileObjectName(),
FileConfigExpander.getDefaultFileTimeoutSeconds() * 1000);
}
@Override
public UserLoginInfoDTO getUserLoginInfo(String account) {