【7.2.2】【app】更新菜单返回的应用排序

pull/29/head
fengshuonan 2022-04-06 23:18:51 +08:00
parent a9e09f6b12
commit 262a186b03
4 changed files with 36 additions and 21 deletions

View File

@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.system.api;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.system.api.pojo.app.SysAppResult; import cn.stylefeng.roses.kernel.system.api.pojo.app.SysAppResult;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
@ -74,4 +75,12 @@ public interface AppServiceApi {
*/ */
SysAppResult getAppInfoByAppCode(String appCode); SysAppResult getAppInfoByAppCode(String appCode);
/**
* app
*
* @author fengshuonan
* @date 2022/4/6 22:34
*/
List<String> getAppNameSorted();
} }

View File

@ -53,6 +53,7 @@ import javax.annotation.Resource;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/** /**
* service * service
@ -269,6 +270,14 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
} }
} }
@Override
public List<String> getAppNameSorted() {
LambdaQueryWrapper<SysApp> wrapper = this.createWrapper(new SysAppRequest());
wrapper.select(SysApp::getAppName);
List<SysApp> list = this.list(wrapper);
return list.stream().map(SysApp::getAppName).collect(Collectors.toList());
}
/** /**
* *
* *

View File

@ -58,39 +58,36 @@ public class AntdMenusFactory {
* antdv * antdv
* *
* @param appSortedMenus * @param appSortedMenus
* @param appNames
* @author fengshuonan * @author fengshuonan
* @date 2021/1/7 18:17 * @date 2021/1/7 18:17
*/ */
public static List<AntdSysMenuDTO> createTotalMenus(Map<String, List<SysMenu>> appSortedMenus, String activeAppCode) { public static List<AntdSysMenuDTO> createTotalMenus(Map<String, List<SysMenu>> appSortedMenus, List<String> appNames) {
// 创建应用级别的菜单集合 // 创建应用级别的菜单集合
ArrayList<AntdSysMenuDTO> appSortedAntdMenus = new ArrayList<>(); ArrayList<AntdSysMenuDTO> appSortedAntdMenus = new ArrayList<>();
// 如果用户菜单中包含了激活的应用,先放激活的应用的 // 创建其他应用的菜单
if (appSortedMenus.containsKey(activeAppCode)) { for (Map.Entry<String, List<SysMenu>> entry : appSortedMenus.entrySet()) {
// 创建顶层应用菜单 // 创建顶层应用菜单
AntdSysMenuDTO firstSortApp = createRootAppMenu(activeAppCode); AntdSysMenuDTO rootAppMenu = createRootAppMenu(entry.getKey());
List<SysMenu> treeStructMenu = new DefaultTreeBuildFactory<SysMenu>(TreeConstants.DEFAULT_PARENT_ID.toString()).doTreeBuild(appSortedMenus.get(activeAppCode)); List<SysMenu> treeStructMenu = new DefaultTreeBuildFactory<SysMenu>(TreeConstants.DEFAULT_PARENT_ID.toString()).doTreeBuild(entry.getValue());
List<AntdSysMenuDTO> antdSysMenuDTOS = doModelTransfer(treeStructMenu); List<AntdSysMenuDTO> antdSysMenuDTOS = doModelTransfer(treeStructMenu);
// 更新顶层应用级别的菜单 // 更新顶层应用级别的菜单
firstSortApp.setChildren(antdSysMenuDTOS); rootAppMenu.setChildren(antdSysMenuDTOS);
appSortedAntdMenus.add(firstSortApp); appSortedAntdMenus.add(rootAppMenu);
} }
// 创建其他应用的菜单 // 更新排序
for (Map.Entry<String, List<SysMenu>> entry : appSortedMenus.entrySet()) { if (ObjectUtil.isEmpty(appNames)) {
if (!entry.getKey().equals(activeAppCode)) { return appSortedAntdMenus;
// 创建顶层应用菜单
AntdSysMenuDTO rootAppMenu = createRootAppMenu(entry.getKey());
List<SysMenu> treeStructMenu = new DefaultTreeBuildFactory<SysMenu>(TreeConstants.DEFAULT_PARENT_ID.toString()).doTreeBuild(entry.getValue());
List<AntdSysMenuDTO> antdSysMenuDTOS = doModelTransfer(treeStructMenu);
// 更新顶层应用级别的菜单
rootAppMenu.setChildren(antdSysMenuDTOS);
appSortedAntdMenus.add(rootAppMenu);
}
} }
appSortedAntdMenus.sort((antdSysMenuDTO, antdSysMenuDTO2) -> {
int one = appNames.indexOf(antdSysMenuDTO.getTitle());
int two = appNames.indexOf(antdSysMenuDTO2.getTitle());
return Integer.compare(one, two);
});
return appSortedAntdMenus; return appSortedAntdMenus;
} }

View File

@ -299,12 +299,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
List<SysMenu> currentUserMenus = this.getCurrentUserMenus(null, false); List<SysMenu> currentUserMenus = this.getCurrentUserMenus(null, false);
// 获取当前激活的应用 // 获取当前激活的应用
String activeAppCode = appServiceApi.getActiveAppCode(); List<String> appNameSorted = appServiceApi.getAppNameSorted();
// 将菜单按应用编码分类,激活的应用放在最前边 // 将菜单按应用编码分类,激活的应用放在最前边
Map<String, List<SysMenu>> sortedUserMenus = AntdMenusFactory.sortUserMenusByAppCode(currentUserMenus); Map<String, List<SysMenu>> sortedUserMenus = AntdMenusFactory.sortUserMenusByAppCode(currentUserMenus);
return AntdMenusFactory.createTotalMenus(sortedUserMenus, activeAppCode); return AntdMenusFactory.createTotalMenus(sortedUserMenus, appNameSorted);
} }
@Override @Override