mirror of https://gitee.com/stylefeng/roses
菜单详情获取父级菜单名称,应用列表接口
parent
450c039a28
commit
84b6469141
|
@ -10,10 +10,14 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail;
|
||||||
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -99,6 +103,16 @@ public class SysAppController {
|
||||||
return new SuccessResponseData<>(sysAppService.findPage(sysAppRequest));
|
return new SuccessResponseData<>(sysAppService.findPage(sysAppRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询-应用列表
|
||||||
|
*
|
||||||
|
* @author liyanjun
|
||||||
|
* @date 2023/07/02 18:28
|
||||||
|
*/
|
||||||
|
@GetResource(name = "分页查询-应用列表", path = "/sysApp/list")
|
||||||
|
public ResponseData<List<SysApp>> list(SysAppRequest sysAppRequest) {
|
||||||
|
return new SuccessResponseData<>(sysAppService.findList(sysAppRequest));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 修改应用状态
|
* 修改应用状态
|
||||||
*
|
*
|
||||||
|
|
|
@ -145,6 +145,13 @@ public class SysMenu extends BaseExpandFieldEntity implements BasePidBuildModel
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private List<SysMenu> children;
|
private List<SysMenu> children;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父级菜单名称
|
||||||
|
*/
|
||||||
|
@TableField("exist = false")
|
||||||
|
@ChineseDescription("父级菜单名称")
|
||||||
|
private String menuParentName;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pidBuildNodeId() {
|
public String pidBuildNodeId() {
|
||||||
if (ObjectUtil.isEmpty(menuId)) {
|
if (ObjectUtil.isEmpty(menuId)) {
|
||||||
|
|
|
@ -39,323 +39,342 @@ import java.util.stream.Collectors;
|
||||||
@Service
|
@Service
|
||||||
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
|
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SysAppService sysAppService;
|
private SysAppService sysAppService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DbOperatorApi dbOperatorApi;
|
private DbOperatorApi dbOperatorApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(SysMenuRequest sysMenuRequest) {
|
public void add(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
// 校验参数合法性
|
// 校验参数合法性
|
||||||
MenuValidateFactory.validateAddMenuParam(sysMenuRequest);
|
MenuValidateFactory.validateAddMenuParam(sysMenuRequest);
|
||||||
|
|
||||||
SysMenu sysMenu = new SysMenu();
|
SysMenu sysMenu = new SysMenu();
|
||||||
BeanUtil.copyProperties(sysMenuRequest, sysMenu);
|
BeanUtil.copyProperties(sysMenuRequest, sysMenu);
|
||||||
|
|
||||||
// 组装pids集合
|
// 组装pids集合
|
||||||
String pids = this.createPids(sysMenuRequest.getMenuParentId());
|
String pids = this.createPids(sysMenuRequest.getMenuParentId());
|
||||||
sysMenu.setMenuPids(pids);
|
sysMenu.setMenuPids(pids);
|
||||||
|
|
||||||
this.save(sysMenu);
|
this.save(sysMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void del(SysMenuRequest sysMenuRequest) {
|
public void del(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
Long menuId = sysMenuRequest.getMenuId();
|
Long menuId = sysMenuRequest.getMenuId();
|
||||||
|
|
||||||
// 获取所有子级的菜单id
|
// 获取所有子级的菜单id
|
||||||
Set<Long> totalMenuIds = this.dbOperatorApi.findSubListByParentId("sys_menu", "menu_pids", "menu_id", menuId);
|
Set<Long> totalMenuIds = this.dbOperatorApi.findSubListByParentId("sys_menu", "menu_pids", "menu_id", menuId);
|
||||||
totalMenuIds.add(menuId);
|
totalMenuIds.add(menuId);
|
||||||
|
|
||||||
// 删除菜单
|
// 删除菜单
|
||||||
this.removeByIds(totalMenuIds);
|
this.removeByIds(totalMenuIds);
|
||||||
|
|
||||||
// 删除菜单下面关联的其他业务关联表
|
// 删除菜单下面关联的其他业务关联表
|
||||||
Map<String, RemoveMenuCallbackApi> removeMenuCallbackApiMap = SpringUtil.getBeansOfType(RemoveMenuCallbackApi.class);
|
Map<String, RemoveMenuCallbackApi> removeMenuCallbackApiMap = SpringUtil
|
||||||
for (RemoveMenuCallbackApi removeMenuCallbackApi : removeMenuCallbackApiMap.values()) {
|
.getBeansOfType(RemoveMenuCallbackApi.class);
|
||||||
removeMenuCallbackApi.removeMenuAction(totalMenuIds);
|
for (RemoveMenuCallbackApi removeMenuCallbackApi : removeMenuCallbackApiMap.values()) {
|
||||||
}
|
removeMenuCallbackApi.removeMenuAction(totalMenuIds);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void edit(SysMenuRequest sysMenuRequest) {
|
public void edit(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
// 无法修改上下级结构(使用拖拽接口比修改接口更方便)
|
// 无法修改上下级结构(使用拖拽接口比修改接口更方便)
|
||||||
sysMenuRequest.setMenuParentId(null);
|
sysMenuRequest.setMenuParentId(null);
|
||||||
|
|
||||||
// 无法修改菜单的所属应用
|
// 无法修改菜单的所属应用
|
||||||
sysMenuRequest.setAppId(null);
|
sysMenuRequest.setAppId(null);
|
||||||
|
|
||||||
// 校验参数合法性
|
// 校验参数合法性
|
||||||
MenuValidateFactory.validateAddMenuParam(sysMenuRequest);
|
MenuValidateFactory.validateAddMenuParam(sysMenuRequest);
|
||||||
|
|
||||||
SysMenu sysMenu = this.querySysMenu(sysMenuRequest);
|
SysMenu sysMenu = this.querySysMenu(sysMenuRequest);
|
||||||
BeanUtil.copyProperties(sysMenuRequest, sysMenu);
|
BeanUtil.copyProperties(sysMenuRequest, sysMenu);
|
||||||
|
|
||||||
this.updateById(sysMenu);
|
this.updateById(sysMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysMenu detail(SysMenuRequest sysMenuRequest) {
|
public SysMenu detail(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
sysMenuLambdaQueryWrapper.eq(SysMenu::getMenuId, sysMenuRequest.getMenuId());
|
sysMenuLambdaQueryWrapper.eq(SysMenu::getMenuId, sysMenuRequest.getMenuId());
|
||||||
|
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getAppId, SysMenu::getMenuName, SysMenu::getMenuCode, SysMenu::getMenuSort,
|
sysMenuLambdaQueryWrapper.select(SysMenu::getAppId, SysMenu::getMenuName, SysMenu::getMenuCode,
|
||||||
SysMenu::getMenuType, SysMenu::getAntdvComponent, SysMenu::getAntdvRouter, SysMenu::getAntdvVisible,
|
SysMenu::getMenuSort, SysMenu::getMenuType, SysMenu::getAntdvComponent, SysMenu::getAntdvRouter,
|
||||||
SysMenu::getAntdvActiveUrl, SysMenu::getAntdvLinkUrl, SysMenu::getAntdvIcon);
|
SysMenu::getAntdvVisible, SysMenu::getAntdvActiveUrl, SysMenu::getAntdvLinkUrl, SysMenu::getAntdvIcon,
|
||||||
|
SysMenu::getMenuParentId);
|
||||||
|
|
||||||
return this.getOne(sysMenuLambdaQueryWrapper, false);
|
SysMenu sysMenu = this.getOne(sysMenuLambdaQueryWrapper, false);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (ObjectUtil.isNotEmpty(sysMenu) && ObjectUtil.isNotEmpty(sysMenu.getMenuParentId())) {
|
||||||
public boolean validateMenuBindApp(Set<Long> appIdList) {
|
if (sysMenu.getMenuParentId().equals(TreeConstants.DEFAULT_PARENT_ID)) {
|
||||||
|
sysMenu.setMenuParentName("根节点");
|
||||||
|
} else {
|
||||||
|
SysMenu parentMenu=this.getById(sysMenu.getMenuParentId());
|
||||||
|
sysMenu.setMenuParentName(parentMenu.getMenuName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
return sysMenu;
|
||||||
sysMenuLambdaQueryWrapper.in(SysMenu::getAppId, appIdList);
|
}
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId);
|
|
||||||
long count = this.count(sysMenuLambdaQueryWrapper);
|
|
||||||
|
|
||||||
return count > 0;
|
@Override
|
||||||
}
|
public boolean validateMenuBindApp(Set<Long> appIdList) {
|
||||||
|
|
||||||
@Override
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
public List<SysMenu> getTotalMenus() {
|
sysMenuLambdaQueryWrapper.in(SysMenu::getAppId, appIdList);
|
||||||
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId);
|
||||||
menuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getMenuParentId, SysMenu::getAppId);
|
long count = this.count(sysMenuLambdaQueryWrapper);
|
||||||
menuLambdaQueryWrapper.orderByAsc(SysMenu::getMenuSort);
|
|
||||||
return this.list(menuLambdaQueryWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
return count > 0;
|
||||||
@Transactional(rollbackFor = Exception.class)
|
}
|
||||||
public void updateMenuTree(SysMenuRequest sysMenuRequest) {
|
|
||||||
|
|
||||||
// 获取被更新的应用和菜单树信息
|
@Override
|
||||||
List<SysMenu> updateTree = sysMenuRequest.getUpdateMenuTree();
|
public List<SysMenu> getTotalMenus() {
|
||||||
|
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
menuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getMenuParentId,
|
||||||
|
SysMenu::getAppId);
|
||||||
|
menuLambdaQueryWrapper.orderByAsc(SysMenu::getMenuSort);
|
||||||
|
return this.list(menuLambdaQueryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
// 更新树节点的菜单顺序
|
@Override
|
||||||
MenuTreeFactory.updateSort(updateTree, 1);
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateMenuTree(SysMenuRequest sysMenuRequest) {
|
||||||
// 填充树节点的parentId字段
|
|
||||||
MenuTreeFactory.fillParentId(-1L, updateTree);
|
// 获取被更新的应用和菜单树信息
|
||||||
|
List<SysMenu> updateTree = sysMenuRequest.getUpdateMenuTree();
|
||||||
// 平行展开树形结构,准备从新整理pids
|
|
||||||
ArrayList<SysMenu> totalMenuList = new ArrayList<>();
|
// 更新树节点的菜单顺序
|
||||||
MenuTreeFactory.collectTreeTasks(updateTree, totalMenuList);
|
MenuTreeFactory.updateSort(updateTree, 1);
|
||||||
|
|
||||||
// 从新整理上下级结构,整理id和pid关系
|
// 填充树节点的parentId字段
|
||||||
PidStructureBuildUtil.createPidStructure(totalMenuList);
|
MenuTreeFactory.fillParentId(-1L, updateTree);
|
||||||
|
|
||||||
// 更新菜单的sort字段、pid字段和pids字段这3个字段
|
// 平行展开树形结构,准备从新整理pids
|
||||||
this.updateBatchById(totalMenuList);
|
ArrayList<SysMenu> totalMenuList = new ArrayList<>();
|
||||||
}
|
MenuTreeFactory.collectTreeTasks(updateTree, totalMenuList);
|
||||||
|
|
||||||
@Override
|
// 从新整理上下级结构,整理id和pid关系
|
||||||
public List<SysMenu> getTotalMenuList() {
|
PidStructureBuildUtil.createPidStructure(totalMenuList);
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getAppId);
|
// 更新菜单的sort字段、pid字段和pids字段这3个字段
|
||||||
return this.list(sysMenuLambdaQueryWrapper);
|
this.updateBatchById(totalMenuList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SysMenu> getIndexMenuInfoList(List<Long> menuIdList) {
|
public List<SysMenu> getTotalMenuList() {
|
||||||
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
if (ObjectUtil.isEmpty(menuIdList)) {
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getAppId);
|
||||||
return new ArrayList<>();
|
return this.list(sysMenuLambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
@Override
|
||||||
|
public List<SysMenu> getIndexMenuInfoList(List<Long> menuIdList) {
|
||||||
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
|
||||||
|
if (ObjectUtil.isEmpty(menuIdList)) {
|
||||||
// 查询指定的菜单内容
|
return new ArrayList<>();
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getAppId, SysMenu::getMenuCode,
|
}
|
||||||
SysMenu::getMenuName, SysMenu::getMenuType, SysMenu::getAntdvIcon, SysMenu::getAntdvVisible, SysMenu::getAntdvActiveUrl,
|
|
||||||
SysMenu::getAntdvRouter, SysMenu::getAntdvComponent, SysMenu::getMenuSort);
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
|
||||||
sysMenuLambdaQueryWrapper.orderByAsc(SysMenu::getMenuSort);
|
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
||||||
|
|
||||||
return this.list(sysMenuLambdaQueryWrapper);
|
// 查询指定的菜单内容
|
||||||
}
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getAppId,
|
||||||
|
SysMenu::getMenuCode, SysMenu::getMenuName, SysMenu::getMenuType, SysMenu::getAntdvIcon,
|
||||||
@Override
|
SysMenu::getAntdvVisible, SysMenu::getAntdvActiveUrl, SysMenu::getAntdvRouter,
|
||||||
public List<String> getMenuCodeList(List<Long> menuIdList) {
|
SysMenu::getAntdvComponent, SysMenu::getMenuSort);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(menuIdList)) {
|
sysMenuLambdaQueryWrapper.orderByAsc(SysMenu::getMenuSort);
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
return this.list(sysMenuLambdaQueryWrapper);
|
||||||
|
}
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
@Override
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuCode);
|
public List<String> getMenuCodeList(List<Long> menuIdList) {
|
||||||
List<SysMenu> sysMenuList = this.list(sysMenuLambdaQueryWrapper);
|
|
||||||
|
if (ObjectUtil.isEmpty(menuIdList)) {
|
||||||
return sysMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toList());
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
public List<AppGroupDetail> getAppMenuGroupDetail(SysMenuRequest sysMenuRequest) {
|
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
||||||
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuCode);
|
||||||
// 1. 获取所有应用列表
|
List<SysMenu> sysMenuList = this.list(sysMenuLambdaQueryWrapper);
|
||||||
List<AppGroupDetail> appList = sysAppService.getAppList();
|
|
||||||
if (ObjectUtil.isEmpty(appList)) {
|
return sysMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toList());
|
||||||
return new ArrayList<>();
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
// 所有的应用id
|
public List<AppGroupDetail> getAppMenuGroupDetail(SysMenuRequest sysMenuRequest) {
|
||||||
Set<Long> totalAppIds = appList.stream().map(AppGroupDetail::getAppId).collect(Collectors.toSet());
|
|
||||||
|
// 1. 获取所有应用列表
|
||||||
// 2. 获取应用对应的所有菜单
|
List<AppGroupDetail> appList = sysAppService.getAppList();
|
||||||
LambdaQueryWrapper<SysMenu> wrapper = this.createWrapper(sysMenuRequest);
|
if (ObjectUtil.isEmpty(appList)) {
|
||||||
wrapper.in(SysMenu::getAppId, totalAppIds);
|
return new ArrayList<>();
|
||||||
wrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getMenuPids, SysMenu::getMenuName, SysMenu::getAppId,
|
}
|
||||||
SysMenu::getMenuType);
|
|
||||||
List<SysMenu> sysMenuList = this.list(wrapper);
|
// 所有的应用id
|
||||||
if (ObjectUtil.isEmpty(sysMenuList)) {
|
Set<Long> totalAppIds = appList.stream().map(AppGroupDetail::getAppId).collect(Collectors.toSet());
|
||||||
return appList;
|
|
||||||
}
|
// 2. 获取应用对应的所有菜单
|
||||||
|
LambdaQueryWrapper<SysMenu> wrapper = this.createWrapper(sysMenuRequest);
|
||||||
// 2.1 如果查询条件不为空,则需要补全被查询菜单的父级结构,否则组不成树结构
|
wrapper.in(SysMenu::getAppId, totalAppIds);
|
||||||
if (StrUtil.isNotBlank(sysMenuRequest.getSearchText())) {
|
wrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getMenuPids, SysMenu::getMenuName,
|
||||||
Set<Long> menuParentIds = MenuFactory.getMenuParentIds(sysMenuList);
|
SysMenu::getAppId, SysMenu::getMenuType);
|
||||||
if (ObjectUtil.isNotEmpty(menuParentIds)) {
|
List<SysMenu> sysMenuList = this.list(wrapper);
|
||||||
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
if (ObjectUtil.isEmpty(sysMenuList)) {
|
||||||
queryWrapper.in(SysMenu::getMenuId, menuParentIds);
|
return appList;
|
||||||
queryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getMenuPids, SysMenu::getMenuName,
|
}
|
||||||
SysMenu::getAppId, SysMenu::getMenuType);
|
|
||||||
queryWrapper.orderByAsc(SysMenu::getMenuSort);
|
// 2.1 如果查询条件不为空,则需要补全被查询菜单的父级结构,否则组不成树结构
|
||||||
List<SysMenu> parentMenus = this.list(queryWrapper);
|
if (StrUtil.isNotBlank(sysMenuRequest.getSearchText())) {
|
||||||
sysMenuList.addAll(parentMenus);
|
Set<Long> menuParentIds = MenuFactory.getMenuParentIds(sysMenuList);
|
||||||
}
|
if (ObjectUtil.isNotEmpty(menuParentIds)) {
|
||||||
}
|
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.in(SysMenu::getMenuId, menuParentIds);
|
||||||
// 3. 组装应用信息和菜单信息
|
queryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getMenuPids,
|
||||||
return MenuFactory.createAppGroupDetailResult(appList, sysMenuList);
|
SysMenu::getMenuName, SysMenu::getAppId, SysMenu::getMenuType);
|
||||||
}
|
queryWrapper.orderByAsc(SysMenu::getMenuSort);
|
||||||
|
List<SysMenu> parentMenus = this.list(queryWrapper);
|
||||||
@Override
|
sysMenuList.addAll(parentMenus);
|
||||||
public List<UserAppMenuInfo> getUserAppMenuDetailList(Set<Long> menuIdList) {
|
}
|
||||||
|
}
|
||||||
// 通过id查询菜单的详情信息
|
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
// 3. 组装应用信息和菜单信息
|
||||||
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
return MenuFactory.createAppGroupDetailResult(appList, sysMenuList);
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getAntdvRouter, SysMenu::getAntdvIcon);
|
}
|
||||||
List<SysMenu> sysMenuList = this.list(sysMenuLambdaQueryWrapper);
|
|
||||||
|
@Override
|
||||||
if (ObjectUtil.isEmpty(sysMenuList)) {
|
public List<UserAppMenuInfo> getUserAppMenuDetailList(Set<Long> menuIdList) {
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
// 通过id查询菜单的详情信息
|
||||||
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
// 转化成响应信息
|
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
||||||
List<UserAppMenuInfo> result = new ArrayList<>();
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getAntdvRouter,
|
||||||
for (SysMenu sysMenu : sysMenuList) {
|
SysMenu::getAntdvIcon);
|
||||||
UserAppMenuInfo userAppMenuInfo = new UserAppMenuInfo();
|
List<SysMenu> sysMenuList = this.list(sysMenuLambdaQueryWrapper);
|
||||||
userAppMenuInfo.setMenuId(sysMenu.getMenuId());
|
|
||||||
userAppMenuInfo.setMenuName(sysMenu.getMenuName());
|
if (ObjectUtil.isEmpty(sysMenuList)) {
|
||||||
userAppMenuInfo.setMenuIcon(sysMenu.getAntdvIcon());
|
return new ArrayList<>();
|
||||||
userAppMenuInfo.setMenuRouter(sysMenu.getAntdvRouter());
|
}
|
||||||
result.add(userAppMenuInfo);
|
|
||||||
}
|
// 转化成响应信息
|
||||||
|
List<UserAppMenuInfo> result = new ArrayList<>();
|
||||||
return result;
|
for (SysMenu sysMenu : sysMenuList) {
|
||||||
}
|
UserAppMenuInfo userAppMenuInfo = new UserAppMenuInfo();
|
||||||
|
userAppMenuInfo.setMenuId(sysMenu.getMenuId());
|
||||||
@Override
|
userAppMenuInfo.setMenuName(sysMenu.getMenuName());
|
||||||
public Map<Long, Long> getMenuAppId(List<Long> menuIdList) {
|
userAppMenuInfo.setMenuIcon(sysMenu.getAntdvIcon());
|
||||||
|
userAppMenuInfo.setMenuRouter(sysMenu.getAntdvRouter());
|
||||||
// 定义返回结果
|
result.add(userAppMenuInfo);
|
||||||
HashMap<Long, Long> menuIdAppIdMap = new HashMap<>();
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(menuIdList)) {
|
return result;
|
||||||
return menuIdAppIdMap;
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
// 查询数据库菜单id对应的应用id集合
|
public Map<Long, Long> getMenuAppId(List<Long> menuIdList) {
|
||||||
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
queryWrapper.in(SysMenu::getMenuId, menuIdList);
|
// 定义返回结果
|
||||||
queryWrapper.select(SysMenu::getAppId, SysMenu::getMenuId);
|
HashMap<Long, Long> menuIdAppIdMap = new HashMap<>();
|
||||||
List<SysMenu> queryList = this.list(queryWrapper);
|
|
||||||
|
if (ObjectUtil.isEmpty(menuIdList)) {
|
||||||
if (ObjectUtil.isEmpty(queryList)) {
|
return menuIdAppIdMap;
|
||||||
return menuIdAppIdMap;
|
}
|
||||||
}
|
|
||||||
|
// 查询数据库菜单id对应的应用id集合
|
||||||
// 制作映射关系
|
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
for (SysMenu sysMenu : queryList) {
|
queryWrapper.in(SysMenu::getMenuId, menuIdList);
|
||||||
menuIdAppIdMap.put(sysMenu.getMenuId(), sysMenu.getAppId());
|
queryWrapper.select(SysMenu::getAppId, SysMenu::getMenuId);
|
||||||
}
|
List<SysMenu> queryList = this.list(queryWrapper);
|
||||||
|
|
||||||
return menuIdAppIdMap;
|
if (ObjectUtil.isEmpty(queryList)) {
|
||||||
}
|
return menuIdAppIdMap;
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 获取信息
|
// 制作映射关系
|
||||||
*
|
for (SysMenu sysMenu : queryList) {
|
||||||
* @author fengshuonan
|
menuIdAppIdMap.put(sysMenu.getMenuId(), sysMenu.getAppId());
|
||||||
* @date 2023/06/10 21:28
|
}
|
||||||
*/
|
|
||||||
private SysMenu querySysMenu(SysMenuRequest sysMenuRequest) {
|
return menuIdAppIdMap;
|
||||||
SysMenu sysMenu = this.getById(sysMenuRequest.getMenuId());
|
}
|
||||||
if (ObjectUtil.isEmpty(sysMenu)) {
|
|
||||||
throw new ServiceException(SysMenuExceptionEnum.SYS_MENU_NOT_EXISTED);
|
/**
|
||||||
}
|
* 获取信息
|
||||||
return sysMenu;
|
*
|
||||||
}
|
* @author fengshuonan
|
||||||
|
* @date 2023/06/10 21:28
|
||||||
/**
|
*/
|
||||||
* 创建查询wrapper
|
private SysMenu querySysMenu(SysMenuRequest sysMenuRequest) {
|
||||||
*
|
SysMenu sysMenu = this.getById(sysMenuRequest.getMenuId());
|
||||||
* @author fengshuonan
|
if (ObjectUtil.isEmpty(sysMenu)) {
|
||||||
* @date 2023/06/10 21:28
|
throw new ServiceException(SysMenuExceptionEnum.SYS_MENU_NOT_EXISTED);
|
||||||
*/
|
}
|
||||||
private LambdaQueryWrapper<SysMenu> createWrapper(SysMenuRequest sysMenuRequest) {
|
return sysMenu;
|
||||||
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
}
|
||||||
|
|
||||||
// 根据搜索条件查询菜单,根据菜单名称、编码、路由地址、组件地址
|
/**
|
||||||
String searchText = sysMenuRequest.getSearchText();
|
* 创建查询wrapper
|
||||||
if (StrUtil.isNotBlank(searchText)) {
|
*
|
||||||
queryWrapper.like(SysMenu::getMenuName, searchText);
|
* @author fengshuonan
|
||||||
queryWrapper.or().like(SysMenu::getMenuCode, searchText);
|
* @date 2023/06/10 21:28
|
||||||
queryWrapper.or().like(SysMenu::getAntdvRouter, searchText);
|
*/
|
||||||
queryWrapper.or().like(SysMenu::getAntdvComponent, searchText);
|
private LambdaQueryWrapper<SysMenu> createWrapper(SysMenuRequest sysMenuRequest) {
|
||||||
}
|
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
|
||||||
// 根据顺序排序
|
// 根据搜索条件查询菜单,根据菜单名称、编码、路由地址、组件地址
|
||||||
queryWrapper.orderByAsc(SysMenu::getMenuSort);
|
String searchText = sysMenuRequest.getSearchText();
|
||||||
|
if (StrUtil.isNotBlank(searchText)) {
|
||||||
return queryWrapper;
|
queryWrapper.like(SysMenu::getMenuName, searchText);
|
||||||
}
|
queryWrapper.or().like(SysMenu::getMenuCode, searchText);
|
||||||
|
queryWrapper.or().like(SysMenu::getAntdvRouter, searchText);
|
||||||
/**
|
queryWrapper.or().like(SysMenu::getAntdvComponent, searchText);
|
||||||
* 创建pids的值
|
}
|
||||||
* <p>
|
|
||||||
* 如果pid是顶级节点,pids = 【[-1],】
|
// 根据顺序排序
|
||||||
* <p>
|
queryWrapper.orderByAsc(SysMenu::getMenuSort);
|
||||||
* 如果pid不是顶级节点,pids = 【父菜单的pids,[pid],】
|
|
||||||
*
|
return queryWrapper;
|
||||||
* @author fengshuonan
|
}
|
||||||
* @since 2023/6/15 10:09
|
|
||||||
*/
|
/**
|
||||||
private String createPids(Long pid) {
|
* 创建pids的值
|
||||||
if (pid.equals(TreeConstants.DEFAULT_PARENT_ID)) {
|
* <p>
|
||||||
return SymbolConstant.LEFT_SQUARE_BRACKETS + TreeConstants.DEFAULT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
* 如果pid是顶级节点,pids = 【[-1],】
|
||||||
} else {
|
* <p>
|
||||||
//获取父菜单
|
* 如果pid不是顶级节点,pids = 【父菜单的pids,[pid],】
|
||||||
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
*
|
||||||
sysMenuLambdaQueryWrapper.eq(SysMenu::getMenuId, pid);
|
* @author fengshuonan
|
||||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuPids);
|
* @since 2023/6/15 10:09
|
||||||
SysMenu parentMenu = this.getOne(sysMenuLambdaQueryWrapper, false);
|
*/
|
||||||
if (parentMenu == null) {
|
private String createPids(Long pid) {
|
||||||
return SymbolConstant.LEFT_SQUARE_BRACKETS + TreeConstants.DEFAULT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
if (pid.equals(TreeConstants.DEFAULT_PARENT_ID)) {
|
||||||
} else {
|
return SymbolConstant.LEFT_SQUARE_BRACKETS + TreeConstants.DEFAULT_PARENT_ID
|
||||||
// 组装pids
|
+ SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||||
return parentMenu.getMenuPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + pid + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
} else {
|
||||||
}
|
// 获取父菜单
|
||||||
}
|
LambdaQueryWrapper<SysMenu> sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
}
|
sysMenuLambdaQueryWrapper.eq(SysMenu::getMenuId, pid);
|
||||||
|
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuPids);
|
||||||
|
SysMenu parentMenu = this.getOne(sysMenuLambdaQueryWrapper, false);
|
||||||
|
if (parentMenu == null) {
|
||||||
|
return SymbolConstant.LEFT_SQUARE_BRACKETS + TreeConstants.DEFAULT_PARENT_ID
|
||||||
|
+ SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||||
|
} else {
|
||||||
|
// 组装pids
|
||||||
|
return parentMenu.getMenuPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + pid
|
||||||
|
+ SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue