|
|
@@ -65,17 +65,12 @@ public class MenuApiController {
|
|
|
|
|
|
@ApiOperation("查询菜单Tree")
|
|
|
@PostMapping("listTree")
|
|
|
- public Result listTree(@RequestBody MenuParamDTO dto) {
|
|
|
+ public Result listTree(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
try {
|
|
|
LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
queryWrapper.eq(MenuEntity::getIsDelete,0);
|
|
|
queryWrapper.eq(MenuEntity::getEnabled,1);
|
|
|
- if (Objects.isNull(dto)) {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,0);
|
|
|
- } else {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,dto.getServiceModeType());
|
|
|
- applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
- }
|
|
|
+ applyMenuScopeFilter(queryWrapper, dto);
|
|
|
queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
if(CollectionUtils.isEmpty(menus)) {
|
|
|
@@ -92,18 +87,13 @@ public class MenuApiController {
|
|
|
|
|
|
@ApiOperation("查询菜单所有菜单")
|
|
|
@PostMapping("listAllTree")
|
|
|
- public Result listAllTree(@RequestBody MenuParamDTO dto) {
|
|
|
+ public Result listAllTree(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
try {
|
|
|
LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
queryWrapper.eq(MenuEntity::getIsDelete,0);
|
|
|
queryWrapper.eq(MenuEntity::getEnabled,1);
|
|
|
queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
- if (Objects.isNull(dto)) {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,0);
|
|
|
- } else {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,dto.getServiceModeType());
|
|
|
- applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
- }
|
|
|
+ applyMenuScopeFilter(queryWrapper, dto);
|
|
|
List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
List<RouterVo> routerVos = menuToRouter(menus);
|
|
|
return Result.ok(routerVos);
|
|
|
@@ -146,95 +136,46 @@ public class MenuApiController {
|
|
|
}
|
|
|
|
|
|
|
|
|
- @ApiOperation("查询菜单Tree")
|
|
|
- @PostMapping("listResTree")
|
|
|
+ /**
|
|
|
+ * 资源树(权限配置等):返回 {@link TreeVo},type=20 表示菜单节点。
|
|
|
+ * PC / H5 原各有一套接口,逻辑相同,已合并;旧路径 list_web_h5_res_tree 仍可用。
|
|
|
+ */
|
|
|
+ @ApiOperation("查询菜单资源树(PC/H5 共用)")
|
|
|
+ @PostMapping(value = {"listResTree", "list_web_h5_res_tree"})
|
|
|
public Result listResTree(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
try {
|
|
|
- LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
- queryWrapper.eq(MenuEntity::getIsDelete,0);
|
|
|
- queryWrapper.eq(MenuEntity::getEnabled,1);
|
|
|
- queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
- if (Objects.isNull(dto)) {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,0);
|
|
|
- } else {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType, dto.getServiceModeType());
|
|
|
- applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
- }
|
|
|
-
|
|
|
- List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
- if(CollectionUtils.isEmpty(menus)) {
|
|
|
- return Result.ok(Collections.EMPTY_LIST);
|
|
|
- }
|
|
|
- List<TreeVo> resls = new ArrayList<>();
|
|
|
- Map<Long, List<TreeVo>> resMap = new HashMap<>();
|
|
|
- List<TreeVo> menuResls = new ArrayList<>();
|
|
|
- if(!CollectionUtils.isEmpty(menus)) {
|
|
|
- for(MenuEntity res : menus) {
|
|
|
- TreeVo treeVo= new TreeVo();
|
|
|
- treeVo.setId(res.getId());
|
|
|
- treeVo.setMenuId(res.getId());
|
|
|
- treeVo.setParentId(res.getPid());
|
|
|
- treeVo.setTitle(res.getMenuName());
|
|
|
- treeVo.setType(20);
|
|
|
- treeVo.setArg(res);
|
|
|
- treeVo.setExpand(false);
|
|
|
- treeVo.setDisabled(false);
|
|
|
- treeVo.setDisableCheckbox(false);
|
|
|
- menuResls.add(treeVo);
|
|
|
- }
|
|
|
- }
|
|
|
- List<TreeVo> res = createResTrees(Long.valueOf(0),menuResls);
|
|
|
- return Result.ok(res);
|
|
|
- }catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
+ return Result.ok(buildResTree(dto));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("listResTree error", e);
|
|
|
+ return Result.error("获取菜单信息错误:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- @ApiOperation("查询菜单Tree(H5和移动端共用)")
|
|
|
- @PostMapping("list_web_h5_res_tree")
|
|
|
- public Result listWebH5ResTree(@RequestBody MenuParamDTO dto) {
|
|
|
- try {
|
|
|
- LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
- queryWrapper.eq(MenuEntity::getIsDelete,0);
|
|
|
- queryWrapper.eq(MenuEntity::getEnabled,1);
|
|
|
- queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
- if (Objects.isNull(dto)) {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,0);
|
|
|
- } else {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,dto.getServiceModeType());
|
|
|
- applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
- }
|
|
|
- List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
- if(CollectionUtils.isEmpty(menus)) {
|
|
|
- return Result.ok(Collections.EMPTY_LIST);
|
|
|
- }
|
|
|
- List<TreeVo> resls = new ArrayList<>();
|
|
|
- Map<Long, List<TreeVo>> resMap = new HashMap<>();
|
|
|
-
|
|
|
- List<TreeVo> menuResls = new ArrayList<>();
|
|
|
- if(!CollectionUtils.isEmpty(menus)) {
|
|
|
- for(MenuEntity res : menus) {
|
|
|
- TreeVo treeVo= new TreeVo();
|
|
|
- treeVo.setId(res.getId());
|
|
|
- treeVo.setMenuId(res.getId());
|
|
|
- treeVo.setParentId(res.getPid());
|
|
|
- treeVo.setTitle(res.getMenuName());
|
|
|
- treeVo.setType(20);
|
|
|
- treeVo.setArg(res);
|
|
|
- treeVo.setExpand(false);
|
|
|
- treeVo.setDisabled(false);
|
|
|
- treeVo.setDisableCheckbox(false);
|
|
|
- menuResls.add(treeVo);
|
|
|
- }
|
|
|
- }
|
|
|
- List<TreeVo> res = createResTrees(Long.valueOf(0),menuResls);
|
|
|
- return Result.ok(res);
|
|
|
- }catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
+ private List<TreeVo> buildResTree(MenuParamDTO dto) {
|
|
|
+ LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(MenuEntity::getIsDelete, 0);
|
|
|
+ queryWrapper.eq(MenuEntity::getEnabled, 1);
|
|
|
+ queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
+ applyMenuScopeFilter(queryWrapper, dto);
|
|
|
+ List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(menus)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ List<TreeVo> menuResls = new ArrayList<>();
|
|
|
+ for (MenuEntity res : menus) {
|
|
|
+ TreeVo treeVo = new TreeVo();
|
|
|
+ treeVo.setId(res.getId());
|
|
|
+ treeVo.setMenuId(res.getId());
|
|
|
+ treeVo.setParentId(res.getPid());
|
|
|
+ treeVo.setTitle(res.getMenuName());
|
|
|
+ treeVo.setType(20);
|
|
|
+ treeVo.setArg(res);
|
|
|
+ treeVo.setExpand(false);
|
|
|
+ treeVo.setDisabled(false);
|
|
|
+ treeVo.setDisableCheckbox(false);
|
|
|
+ menuResls.add(treeVo);
|
|
|
}
|
|
|
+ return createResTrees(0L, menuResls);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -243,11 +184,13 @@ public class MenuApiController {
|
|
|
public Result pagelist(@RequestBody MenuParam dto) {
|
|
|
try {
|
|
|
IPage<MenuEntity> page = new Page<>(dto.getPageIndex(),dto.getPageSize());
|
|
|
- LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
- if
|
|
|
- (Objects.nonNull(dto)) {
|
|
|
- queryWrapper.eq(MenuEntity::getServiceModeType,dto.getServiceModeType());
|
|
|
- applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
+ LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(MenuEntity::getIsDelete, 0);
|
|
|
+ if (Objects.nonNull(dto)) {
|
|
|
+ if (dto.getServiceModeType() != null) {
|
|
|
+ queryWrapper.eq(MenuEntity::getServiceModeType, dto.getServiceModeType());
|
|
|
+ }
|
|
|
+ applyAppIdFilter(queryWrapper, parseAppId(dto.getAppId()));
|
|
|
}
|
|
|
IPage<MenuEntity> menus = menuService.page(page,queryWrapper);
|
|
|
return Result.ok(menus);
|
|
|
@@ -516,15 +459,30 @@ public class MenuApiController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 从 DTO 字符串解析应用维度;非空且合法时在查询上追加 app_id 条件(要求库表 menu.app_id 与数据一致)。
|
|
|
+ * 菜单列表通用范围:终端类型 + 应用 ID(appId 有值时按 menu.app_id 过滤)。
|
|
|
*/
|
|
|
- private void applyAppIdFilter(LambdaQueryWrapper<MenuEntity> queryWrapper, String appIdRaw) {
|
|
|
- Long appId = parseAppId(appIdRaw);
|
|
|
+ private void applyMenuScopeFilter(LambdaQueryWrapper<MenuEntity> queryWrapper, MenuParamDTO dto) {
|
|
|
+ if (dto == null || dto.getServiceModeType() == null) {
|
|
|
+ queryWrapper.eq(MenuEntity::getServiceModeType, 0);
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(MenuEntity::getServiceModeType, dto.getServiceModeType());
|
|
|
+ }
|
|
|
+ applyAppIdFilter(queryWrapper, dto != null ? dto.getAppId() : null);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按应用过滤:appId 非空时追加 menu.app_id = appId。
|
|
|
+ */
|
|
|
+ private void applyAppIdFilter(LambdaQueryWrapper<MenuEntity> queryWrapper, Long appId) {
|
|
|
if (appId != null) {
|
|
|
queryWrapper.eq(MenuEntity::getAppId, appId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void applyAppIdFilter(LambdaQueryWrapper<MenuEntity> queryWrapper, String appIdRaw) {
|
|
|
+ applyAppIdFilter(queryWrapper, parseAppId(appIdRaw));
|
|
|
+ }
|
|
|
+
|
|
|
private Long parseAppId(String appIdRaw) {
|
|
|
if (StrUtil.isBlank(appIdRaw)) {
|
|
|
return null;
|