08-Menu目录配置
2021-12-06 本文已影响0人
糖纸疯了
1、写作背景
总想走捷径的人,往往因找不到捷径而固步自封,一步不前!
![](https://img.haomeiwen.com/i1096351/8b3ae89ec450d52d.png)
2、参考网址
3、学习目的
- 场景说明
- 自定义目录排序操作
4、核心操作
1)场景说明
场景说明:根据用户的进行自定义目录的配置,用户可以在自己的配置中,选择性的关闭和打开对应的目录,并可以配置目录排列顺序
- 要点一:用户更新之后,要进行批量更新操作
- 要点二:如果原目录被关闭,则用户自定义目录失效
- 要点三:如果原目录的排序规则和用户自定义的不同,则以用户自定义为准!
2)自定义目录排序操作
核心思路:在系统Menu的基础上替换用户自定义的Menu即可!
/**
* 查询用户自定义菜单列表
*/
public List<MenuCustOrder> getUserCustomerMenuList(){
// 查询系统展示的目录列表
List<MenuCustOrder> allMenuList = menuCustOrderDao.selectAllSystemMenuList("Y");
List<MenuCustOrder> userCustomerList = menuCustOrderDao.selectAllCustomerMenuList("xiaoming");
// 用【用户自定义数据】替换【系统配置数据】
if (CollectionUtils.isNotEmpty(userCustomerList)){
Map<Integer, MenuCustOrder> usrCustomerMap = userCustomerList.stream().collect(Collectors.toMap(MenuCustOrder::getMenuId, Function.identity()));
Set<Integer> usrCustomerMapIdSet = usrCustomerMap.keySet();
Integer menuId;
MenuCustOrder menuCustOrder;
for (int i = 0; i < allMenuList.size(); i++) {
menuCustOrder = allMenuList.get(i);
menuId = menuCustOrder.getMenuId();
if (CollectionUtils.containsAny(usrCustomerMapIdSet,menuId)){
menuCustOrder.setMenuOrder(usrCustomerMap.get(menuId).getMenuOrder());
menuCustOrder.setMenuShow(usrCustomerMap.get(menuId).getMenuShow());
}
}
}
// TODO 将List转化为树状结构进行返回即可
return allMenuList;
}
5、课后习题
1)Menu自定义排序
- 最好是字段保持一致(方便进行数据处理)
- 用户的字段去替换原系统的数据
- 进行对象树转化返回