From 5c9c836f4a72487d386b6e05fcd4b4a96eec4e72 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期五, 06 十二月 2024 21:12:39 +0800
Subject: [PATCH] 小程序菜单

---
 src/main/java/com/mzl/flower/service/system/AppMenuService.java |  173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 173 insertions(+), 0 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
new file mode 100644
index 0000000..670978a
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/system/AppMenuService.java
@@ -0,0 +1,173 @@
+package com.mzl.flower.service.system;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.constant.Constants;
+import com.mzl.flower.dto.request.system.CreateAppMenuDTO;
+import com.mzl.flower.dto.request.system.UpdateAppMenuDTO;
+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.mapper.system.AppMenuMapper;
+import com.mzl.flower.service.BaseService;
+import com.mzl.flower.utils.TreeBuilderUtil;
+import com.mzl.flower.utils.UUIDGenerator;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Transactional
+public class AppMenuService extends BaseService {
+    @Autowired
+    private AppMenuMapper menuMapper;
+
+    public AppMenu getMenu(String id) {
+        return menuMapper.selectById(id);
+    }
+
+    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::getPermissionUq, dto.getPermissionUq()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE)) > 0) {
+            throw new ValidationException("权限标识已经存在");
+        }
+
+        BeanUtils.copyProperties(dto, menu);
+        menu.setId(UUIDGenerator.getUUID());
+        menu.setIsVisible(Constants.Y);
+        menu.setStatus(Constants.STATUS_ACTIVE);
+        menu.setSubaccountAccessFlag(Constants.CUSTOM01.ONE.getDesc());
+
+        menuMapper.insert(menu);
+    }
+
+    public List<AppMenuTreeDTO> searchOperationMenu() {
+        List<AppMenuTreeDTO> treeList = menuMapper.selectListOrderBySeq();
+        for (AppMenuTreeDTO appMenuTreeDTO : treeList) {
+            appMenuTreeDTO.setLabel(appMenuTreeDTO.getMenuName());
+            appMenuTreeDTO.setPath(appMenuTreeDTO.getMenuHref());
+            appMenuTreeDTO.setName(appMenuTreeDTO.getMenuName());
+        }
+        treeList = (List<AppMenuTreeDTO>) TreeBuilderUtil.buildListToTree(treeList);
+        return treeList;
+    }
+
+    public AppMenuDTO getMenuDetail(String id) {
+        AppMenu menu = getMenu(id);
+
+        //返回对象
+        AppMenuDTO menuDTO = new AppMenuDTO();
+        if (menu != null) {
+            BeanUtils.copyProperties(menu, menuDTO);
+        }
+        return menuDTO;
+    }
+
+    public void updateMenu(UpdateAppMenuDTO dto) {
+        AppMenu menu = getMenu(dto.getId());
+        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::getPermissionUq, dto.getPermissionUq()).eq(AppMenu::getStatus, Constants.STATUS_ACTIVE).ne(AppMenu::getId, menu.getId())) > 0) {
+            throw new ValidationException("权限标识已经存在");
+        }
+        Integer subaccountAccessFlag = menu.getSubaccountAccessFlag();
+        BeanUtils.copyProperties(dto, menu);
+        menu.setSubaccountAccessFlag(subaccountAccessFlag);
+        menuMapper.updateById(menu);
+    }
+
+    public void deleteMenu(String id) {
+        AppMenu menu = getMenu(id);
+        menu.setStatus(Constants.STATUS_DELETED);
+        menuMapper.updateById(menu);
+
+        List<AppMenu> menus = menuMapper.selectList(new QueryWrapper<AppMenu>().eq("PARENT_ID", id));
+        if (menus != null && menus.size() > 0) {
+            for (AppMenu children : menus) {
+                deleteMenu(children.getId());
+            }
+        }
+    }
+
+    public void updateMenuShow(String id) {
+        // 更新当前菜单及所有子菜单都变为隐藏
+        List<String> menuIds = new ArrayList<>();
+        findAllChildMenuIds(id, menuIds);
+        menuMapper.updateMenuSubaccountAccessFlag(menuIds, Constants.CUSTOM01.ONE.getDesc());
+    }
+
+    public void updateMenuHidden(String id) {
+        // 递归查找所有子菜单
+        List<String> menuIds = new ArrayList<>();
+        findAllChildMenuIds(id, menuIds);
+        menuMapper.updateMenuSubaccountAccessFlag(menuIds,  Constants.CUSTOM01.ZERO.getDesc());
+    }
+
+
+    /**
+     * 递归查找当前菜单及所有子菜单的 ID
+     *
+     * @param menuId     当前菜单 ID
+     * @param menuIds    存储菜单 ID 的列表
+     */
+    private void findAllChildMenuIds(String menuId, List<String> menuIds) {
+        // 首先将当前菜单 ID 加入菜单列表
+        menuIds.add(menuId);
+
+        // 查询当前菜单的所有子菜单
+        List<String> childMenuIds = menuMapper.findChildMenuIds(menuId);
+
+        // 如果有子菜单,递归查找
+        if (childMenuIds != null && !childMenuIds.isEmpty()) {
+            for (String childMenuId : childMenuIds) {
+                findAllChildMenuIds(childMenuId, menuIds);  // 递归查找子菜单
+            }
+        }
+    }
+
+    // 获取供应商菜单信息
+    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);
+
+        if (!CollectionUtils.isEmpty(list)) {
+
+            List<AppMenu> allMenuList = menuMapper.selectList(
+                    new QueryWrapper<AppMenu>().lambda().eq(AppMenu::getStatus, Constants.STATUS_ACTIVE));
+
+            return allMenuList;
+        }
+
+        return null;
+    }
+
+
+
+}

--
Gitblit v1.9.3