children) {
+ this.id = id;
+ this.label = label;
+ this.children = children;
+ }
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java b/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java
index d1b1a6f..c9aba18 100644
--- a/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java
+++ b/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java
@@ -1,8 +1,10 @@
package com.mini.mybigscreen.biz.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mini.mybigscreen.Model.Menu;
import com.mini.mybigscreen.Model.Result;
+import com.mini.mybigscreen.Model.TreeMenu;
import com.mini.mybigscreen.biz.domain.HomeMenu;
import com.mini.mybigscreen.biz.service.HomeMenuService;
import jakarta.annotation.Resource;
@@ -10,8 +12,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
/**
*
@@ -31,7 +33,88 @@ public class HomeMenuController {
@GetMapping("list")
- public Result> getList() {
+ public Result> getList(String menuName, String path, String ustatus, String menuId) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.like(StrUtil.isNotBlank(menuName), "menu_name", menuName)
+ .like(StrUtil.isNotBlank(path), "path", path)
+ .eq(StrUtil.isNotBlank(ustatus), "ustatus", ustatus)
+ .orderByAsc("sort").orderByDesc("create_time");
+ List allHomeMenus = menuService.list(query);
+ if (StrUtil.isNotBlank(menuId)) {
+ Map menuMap = allHomeMenus.stream()
+ .collect(Collectors.toMap(HomeMenu::getMenuId, menu -> menu));
+ Set targetIds = new HashSet<>();
+ HomeMenu targetMenu = menuMap.get(menuId);
+ if (targetMenu != null) {
+ targetIds.add(menuId);
+ boolean hasNew = true;
+ while (hasNew) {
+ hasNew = false;
+ for (HomeMenu menu : allHomeMenus) {
+ if (!targetIds.contains(menu.getMenuId()) && targetIds.contains(menu.getParentId())) {
+ targetIds.add(menu.getMenuId());
+ hasNew = true;
+ }
+ }
+ }
+ }
+ allHomeMenus = allHomeMenus.stream()
+ .filter(menu -> targetIds.contains(menu.getMenuId()))
+ .collect(Collectors.toList());
+ }
+ Map> parentIdToChildrenMap = new HashMap<>();
+ for (HomeMenu menu : allHomeMenus) {
+ parentIdToChildrenMap.computeIfAbsent(menu.getParentId(), k -> new ArrayList<>())
+ .add(menu);
+ }
+ List