|
|
@@ -74,11 +74,11 @@ public class MenuApiController {
|
|
|
queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
if(CollectionUtils.isEmpty(menus)) {
|
|
|
- return Result.ok(Collections.EMPTY_LIST);
|
|
|
+ return Result.result(Collections.EMPTY_LIST);
|
|
|
}
|
|
|
List<UserMenuVO> res = createTreeMenus(Long.valueOf(0), UserMenuVO.menuListToTargetMenuTreeVoList(menus));
|
|
|
//res.stream().sorted(Comparator.comparing(UserMenuVO::getSort).reversed());
|
|
|
- return Result.ok(res);
|
|
|
+ return Result.result(res);
|
|
|
}catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
@@ -96,7 +96,7 @@ public class MenuApiController {
|
|
|
applyMenuScopeFilter(queryWrapper, dto);
|
|
|
List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
List<RouterVo> routerVos = menuToRouter(menus);
|
|
|
- return Result.ok(routerVos);
|
|
|
+ return Result.result(routerVos);
|
|
|
}catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
@@ -144,7 +144,7 @@ public class MenuApiController {
|
|
|
@PostMapping(value = {"listResTree", "list_web_h5_res_tree"})
|
|
|
public Result listResTree(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
try {
|
|
|
- return Result.ok(buildResTree(dto));
|
|
|
+ return Result.result(buildResTree(dto));
|
|
|
} catch (Exception e) {
|
|
|
log.error("listResTree error", e);
|
|
|
return Result.error("获取菜单信息错误:" + e.getMessage());
|
|
|
@@ -183,44 +183,73 @@ public class MenuApiController {
|
|
|
@PostMapping("pagelist")
|
|
|
public Result pagelist(@RequestBody MenuParam dto) {
|
|
|
try {
|
|
|
- IPage<MenuEntity> page = new Page<>(dto.getPageIndex(),dto.getPageSize());
|
|
|
+ IPage<MenuEntity> page = new Page<>(dto.getPageIndex(), dto.getPageSize());
|
|
|
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()));
|
|
|
+ if (dto.getServiceModeType() != null) {
|
|
|
+ queryWrapper.eq(MenuEntity::getServiceModeType, dto.getServiceModeType());
|
|
|
}
|
|
|
- IPage<MenuEntity> menus = menuService.page(page,queryWrapper);
|
|
|
- return Result.ok(menus);
|
|
|
- }catch (Exception e) {
|
|
|
+ applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
+ queryWrapper.orderByAsc(MenuEntity::getSort).orderByAsc(MenuEntity::getId);
|
|
|
+ IPage<MenuEntity> menus = menuService.page(page, queryWrapper);
|
|
|
+ return Result.result(menus);
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
+ return Result.error("获取菜单信息错误:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation("菜单详情")
|
|
|
+ @PostMapping("detail")
|
|
|
+ public Result detail(@RequestBody MenuParamDTO dto) {
|
|
|
+ if (dto == null || dto.getId() == null) {
|
|
|
+ return Result.error("参数错误");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(MenuEntity::getId, dto.getId());
|
|
|
+ queryWrapper.eq(MenuEntity::getIsDelete, 0);
|
|
|
+ applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
+ MenuEntity menu = menuService.getOne(queryWrapper);
|
|
|
+ if (menu == null) {
|
|
|
+ return Result.error("菜单不存在或不在当前应用范围内");
|
|
|
+ }
|
|
|
+ return Result.result(menu);
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation("保存菜单")
|
|
|
@PostMapping("save")
|
|
|
public Result save(@RequestBody MenuEntity menu) {
|
|
|
if (Objects.isNull(menu.getPid())) {
|
|
|
menu.setPid(0L);
|
|
|
}
|
|
|
+ resolveMenuAppId(menu);
|
|
|
if (Long.valueOf(0L).equals(menu.getPid()) && menu.getAppId() == null) {
|
|
|
return Result.error("顶级菜单(pid=0)必须指定 appId");
|
|
|
}
|
|
|
convertMenuCode(menu);
|
|
|
- return Result.ok(menuService.saveOrUpdate(menu));
|
|
|
+ return Result.result(menuService.saveOrUpdate(menu));
|
|
|
}
|
|
|
|
|
|
@ApiOperation("删除菜单")
|
|
|
@PostMapping("delete")
|
|
|
- public Result remove(@NotNull @NotEmpty Long[] ids) {
|
|
|
- List<MenuEntity> menus = menuService.list(new LambdaQueryWrapper<MenuEntity>().in(MenuEntity::getPid,ids));
|
|
|
+ public Result remove(@NotNull @NotEmpty Long[] ids, Long appId) {
|
|
|
+ List<MenuEntity> toDelete = menuService.list(new LambdaQueryWrapper<MenuEntity>()
|
|
|
+ .in(MenuEntity::getId, Arrays.asList(ids))
|
|
|
+ .eq(MenuEntity::getIsDelete, 0));
|
|
|
+ if (CollectionUtils.isEmpty(toDelete)) {
|
|
|
+ return Result.error("菜单不存在或已删除");
|
|
|
+ }
|
|
|
+ if (appId != null) {
|
|
|
+ boolean outOfApp = toDelete.stream().anyMatch(m -> !appId.equals(m.getAppId()));
|
|
|
+ if (outOfApp) {
|
|
|
+ return Result.error("存在不属于当前应用的菜单,无法删除");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<MenuEntity> menus = menuService.list(new LambdaQueryWrapper<MenuEntity>().in(MenuEntity::getPid, ids));
|
|
|
if (!CollectionUtils.isEmpty(menus)) {
|
|
|
- List idls = Arrays.asList(ids);
|
|
|
+ List<Long> idls = Arrays.asList(ids);
|
|
|
for (MenuEntity menu : menus) {
|
|
|
- if (!idls.contains(menu.getId())){
|
|
|
+ if (!idls.contains(menu.getId())) {
|
|
|
return Result.error("请先删除子节点");
|
|
|
}
|
|
|
}
|
|
|
@@ -253,7 +282,7 @@ public class MenuApiController {
|
|
|
|
|
|
if (StrUtil.isBlank(info.getMenuCode())) {
|
|
|
String routeCode = getInitials(info.getMenuName());
|
|
|
- MenuEntity menu = menuService.getRootLastNodeInfo(info.getPid());
|
|
|
+ MenuEntity menu = menuService.getRootLastNodeInfo(info.getPid(), info.getAppId());
|
|
|
String lastCode;
|
|
|
if (menu == null) {
|
|
|
info.setPid(Long.valueOf(0));
|
|
|
@@ -267,8 +296,12 @@ public class MenuApiController {
|
|
|
|
|
|
@ApiOperation("处理历史数据code")
|
|
|
@PostMapping("batch_generate_code")
|
|
|
- public Result initializeCode() {
|
|
|
- List<MenuEntity> menuList = menuService.list(new LambdaQueryWrapper<MenuEntity>().in(MenuEntity::getMenuType,Arrays.asList(1,2)));
|
|
|
+ public Result initializeCode(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
+ LambdaQueryWrapper<MenuEntity> wrapper = new LambdaQueryWrapper<MenuEntity>()
|
|
|
+ .in(MenuEntity::getMenuType, Arrays.asList(1, 2))
|
|
|
+ .eq(MenuEntity::getIsDelete, 0);
|
|
|
+ applyAppIdFilter(wrapper, dto != null ? dto.getAppId() : null);
|
|
|
+ List<MenuEntity> menuList = menuService.list(wrapper);
|
|
|
Map<Long,MenuEntity> mapMenu = menuList.stream().collect(Collectors.toMap(MenuEntity::getId, a ->a));
|
|
|
for (MenuEntity info : menuList) {
|
|
|
String routeCode = getInitials(info.getMenuName());
|
|
|
@@ -283,8 +316,12 @@ public class MenuApiController {
|
|
|
|
|
|
@ApiOperation("处理历史数据code")
|
|
|
@PostMapping("update_menu_icon")
|
|
|
- public Result updateMenuIcon() {
|
|
|
- List<MenuEntity> menuList = menuService.list(new LambdaQueryWrapper<MenuEntity>().eq(MenuEntity::getMenuType,2));
|
|
|
+ public Result updateMenuIcon(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
+ LambdaQueryWrapper<MenuEntity> wrapper = new LambdaQueryWrapper<MenuEntity>()
|
|
|
+ .eq(MenuEntity::getMenuType, 2)
|
|
|
+ .eq(MenuEntity::getIsDelete, 0);
|
|
|
+ applyAppIdFilter(wrapper, dto != null ? dto.getAppId() : null);
|
|
|
+ List<MenuEntity> menuList = menuService.list(wrapper);
|
|
|
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
|
|
|
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
|
|
|
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
|
|
@@ -398,7 +435,7 @@ public class MenuApiController {
|
|
|
// List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
// if (!CollectionUtils.isEmpty(menus)) {
|
|
|
// String menuJson = JSON.toJSONString(menus);
|
|
|
-// return Result.ok(JSONArray.parseArray(menuJson, UserH5MenuVO.class));
|
|
|
+// return Result.result(JSONArray.parseArray(menuJson, UserH5MenuVO.class));
|
|
|
// }
|
|
|
return Result.ok();
|
|
|
}
|
|
|
@@ -428,18 +465,23 @@ public class MenuApiController {
|
|
|
|
|
|
@ApiOperation("查询菜单所有菜单")
|
|
|
@PostMapping("allMenulist")
|
|
|
- public Result allMenulist(String menuName, Integer[] types, String appId) {
|
|
|
- if(types == null) {
|
|
|
+ public Result allMenulist(@RequestBody(required = false) MenuParamDTO dto) {
|
|
|
+ if (dto == null) {
|
|
|
+ dto = new MenuParamDTO();
|
|
|
+ }
|
|
|
+ Integer[] types = dto.getMenuTypes();
|
|
|
+ if (types == null || types.length == 0) {
|
|
|
types = new Integer[]{1, 2};
|
|
|
}
|
|
|
try {
|
|
|
- LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper();
|
|
|
- queryWrapper.eq(MenuEntity::getIsDelete,0);
|
|
|
- queryWrapper.eq(MenuEntity::getEnabled,1);
|
|
|
+ LambdaQueryWrapper<MenuEntity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(MenuEntity::getIsDelete, 0);
|
|
|
+ queryWrapper.eq(MenuEntity::getEnabled, 1);
|
|
|
queryWrapper.in(MenuEntity::getMenuType, Arrays.asList(types));
|
|
|
- applyAppIdFilter(queryWrapper, appId);
|
|
|
- queryWrapper.likeLeft(StringUtils.isNotEmpty(menuName), MenuEntity::getMenuName, menuName);
|
|
|
- queryWrapper.likeRight(StringUtils.isNotEmpty(menuName), MenuEntity::getMenuName, menuName);
|
|
|
+ applyAppIdFilter(queryWrapper, dto.getAppId());
|
|
|
+ if (StringUtils.isNotEmpty(dto.getMenuName())) {
|
|
|
+ queryWrapper.like(MenuEntity::getMenuName, dto.getMenuName());
|
|
|
+ }
|
|
|
queryWrapper.orderByAsc(MenuEntity::getSort);
|
|
|
List<MenuEntity> menus = menuService.list(queryWrapper);
|
|
|
if (!CollectionUtils.isEmpty(menus)) {
|
|
|
@@ -451,7 +493,7 @@ public class MenuApiController {
|
|
|
});
|
|
|
}
|
|
|
// List<RouterVo> routerVos = menuToRouter(menus);
|
|
|
- return Result.ok(menus);
|
|
|
+ return Result.result(menus);
|
|
|
}catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return Result.error("获取菜单信息错误:"+e.getMessage());
|
|
|
@@ -479,20 +521,16 @@ public class MenuApiController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void applyAppIdFilter(LambdaQueryWrapper<MenuEntity> queryWrapper, String appIdRaw) {
|
|
|
- applyAppIdFilter(queryWrapper, parseAppId(appIdRaw));
|
|
|
- }
|
|
|
-
|
|
|
- private Long parseAppId(String appIdRaw) {
|
|
|
- if (StrUtil.isBlank(appIdRaw)) {
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 子菜单未传 appId 时继承父级应用。
|
|
|
+ */
|
|
|
+ private void resolveMenuAppId(MenuEntity menu) {
|
|
|
+ if (menu.getAppId() != null || menu.getPid() == null || menu.getPid() <= 0) {
|
|
|
+ return;
|
|
|
}
|
|
|
- try {
|
|
|
- return Long.parseLong(appIdRaw.trim());
|
|
|
- } catch (NumberFormatException e) {
|
|
|
- log.warn("非法 appId,已忽略: {}", appIdRaw);
|
|
|
- return null;
|
|
|
+ MenuEntity parent = menuService.getById(menu.getPid());
|
|
|
+ if (parent != null && parent.getAppId() != null) {
|
|
|
+ menu.setAppId(parent.getAppId());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|