From 14900ee3d583e2d96da5c67770d4f30f8fac5969 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期一, 09 十二月 2024 14:11:59 +0800
Subject: [PATCH] 1.小程序菜单

---
 src/main/java/com/mzl/flower/service/system/AppMenuService.java |   99 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 83 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/system/AppMenuService.java b/src/main/java/com/mzl/flower/service/system/AppMenuService.java
index 670978a..da65865 100644
--- a/src/main/java/com/mzl/flower/service/system/AppMenuService.java
+++ b/src/main/java/com/mzl/flower/service/system/AppMenuService.java
@@ -9,6 +9,7 @@
 import com.mzl.flower.dto.response.system.AppMenuDTO;
 import com.mzl.flower.dto.response.system.AppMenuTreeDTO;
 import com.mzl.flower.entity.system.AppMenu;
+import com.mzl.flower.enums.TrueOrFalseEnum;
 import com.mzl.flower.mapper.system.AppMenuMapper;
 import com.mzl.flower.service.BaseService;
 import com.mzl.flower.utils.TreeBuilderUtil;
@@ -23,6 +24,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -37,12 +39,12 @@
     public void addMenu(CreateAppMenuDTO dto) {
         AppMenu menu = new AppMenu();
         // 查找菜单名称是否已经存在
-        if (menuMapper.selectCount(new QueryWrapper<AppMenu>()
-                .lambda().eq(AppMenu::getMenuName, dto.getMenuName())
-                .eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)
-        ) > 0) {
-            throw new ValidationException("菜单名称已经存在");
-        }
+//        if (menuMapper.selectCount(new QueryWrapper<AppMenu>()
+//                .lambda().eq(AppMenu::getMenuName, dto.getMenuName())
+//                .eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)
+//        ) > 0) {
+//            throw new ValidationException("菜单名称已经存在");
+//        }
         // 查找权限标识是否已经存在
         if (menuMapper.selectCount(new QueryWrapper<AppMenu>().lambda().eq(AppMenu::getPermissionUq, dto.getPermissionUq()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)) > 0) {
             throw new ValidationException("权限标识已经存在");
@@ -84,9 +86,9 @@
         if(null==menu){
             throw new ValidationException("菜单不存在");
         }
-        if (menuMapper.selectCount(new QueryWrapper<AppMenu>().lambda().eq(AppMenu::getMenuName, dto.getMenuName()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE).ne(AppMenu::getId, menu.getId())) > 0) {
-            throw new ValidationException("菜单名称已经存在");
-        }
+//        if (menuMapper.selectCount(new QueryWrapper<AppMenu>().lambda().eq(AppMenu::getMenuName, dto.getMenuName()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE).ne(AppMenu::getId, menu.getId())) > 0) {
+//            throw new ValidationException("菜单名称已经存在");
+//        }
         // 查找权限标识是否已经存在
         if (menuMapper.selectCount(new QueryWrapper<AppMenu>().lambda().eq(AppMenu::getPermissionUq, dto.getPermissionUq()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE).ne(AppMenu::getId, menu.getId())) > 0) {
             throw new ValidationException("权限标识已经存在");
@@ -149,13 +151,7 @@
     // 获取供应商菜单信息
     public List<AppMenu> getPermissionMenu() {
 
-        LambdaQueryWrapper<AppMenu> queryWrapper = new QueryWrapper<AppMenu>()
-                .lambda()
-                .eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)
-                .eq(AppMenu::getSubaccountAccessFlag,Constants.CUSTOM01.ONE.getDesc())
-//                .eq(AppMenu::getPermissionUq, Constants.APP_MENU_TYPE.SUPPLIER.getDesc())
-                ;
-        List<AppMenu> list = menuMapper.selectList(queryWrapper);
+        List<AppMenu> list = getAppMenus();
 
         if (!CollectionUtils.isEmpty(list)) {
 
@@ -168,6 +164,77 @@
         return null;
     }
 
+    private List<AppMenu> getAppMenus() {
+        LambdaQueryWrapper<AppMenu> queryWrapper = new QueryWrapper<AppMenu>()
+                .lambda()
+                .eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)
+                .eq(AppMenu::getSubaccountAccessFlag,Constants.CUSTOM01.ONE.getDesc())
+//                .eq(AppMenu::getPermissionUq, Constants.APP_MENU_TYPE.SUPPLIER.getDesc())
+                ;
+        List<AppMenu> list = menuMapper.selectList(queryWrapper);
+        return list;
+    }
+
+
+    public List<AppMenu> getSupplierPermissionMenu() {
+        // 获取所有订单信息
+        List<AppMenu> list = getAppMenus();
+        // 遍历list,找到appMenu的permissionUq的值为supplier的菜单
+        // 找到 permissionUq 为 supplier 的菜单
+        List<AppMenu> supplierMenus = list.stream()
+                .filter(menu -> Constants.DEFAULT_SUB_ACCOUNT_SUPPLIER.equals(menu.getPermissionUq()))
+                .collect(Collectors.toList());
+        if(!CollectionUtils.isEmpty(supplierMenus)){
+            AppMenu appMenu = supplierMenus.get(0);
+
+            // 递归查找所有子菜单
+            List<AppMenu> allChildMenus = findAllChildren(appMenu.getId(), list);
+
+            return allChildMenus;
+        }
+
+        return new ArrayList<>();
+    }
+
+    public List<AppMenu> getPartnerPermissionMenu() {
+        // 获取所有订单信息
+        List<AppMenu> list = getAppMenus();
+        // 遍历list,找到appMenu的permissionUq的值为supplier的菜单
+        // 找到 permissionUq 为 supplier 的菜单
+        List<AppMenu> supplierMenus = list.stream()
+                .filter(menu -> Constants.DEFAULT_SUB_ACCOUNT_PARTNER.equals(menu.getPermissionUq()))
+                .collect(Collectors.toList());
+        if(!CollectionUtils.isEmpty(supplierMenus)){
+            AppMenu appMenu = supplierMenus.get(0);
+
+            // 递归查找所有子菜单
+            List<AppMenu> allChildMenus = findAllChildren(appMenu.getId(), list);
+
+            return allChildMenus;
+        }
+
+        return new ArrayList<>();
+    }
+
+    /**
+     * 递归查找所有子菜单
+     *
+     * @param parentId 父菜单 ID
+     * @param allMenus 所有菜单列表
+     * @return 所有子菜单
+     */
+    public static List<AppMenu> findAllChildren(String parentId, List<AppMenu> allMenus) {
+        List<AppMenu> children = allMenus.stream()
+                .filter(menu -> parentId.equals(menu.getParentId()))
+                .collect(Collectors.toList());
+
+        List<AppMenu> allChildren = new ArrayList<>(children);
+        for (AppMenu child : children) {
+            allChildren.addAll(findAllChildren(child.getId(), allMenus));
+        }
+
+        return allChildren;
+    }
 
 
 }

--
Gitblit v1.9.3