From a4047b6048ebfe09e66a765b58ea12b5bd0e2e6e Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 28 十一月 2022 16:18:10 +0800
Subject: [PATCH] 店铺管理优化

---
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java
new file mode 100644
index 0000000..846b1bc
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java
@@ -0,0 +1,142 @@
+package com.ycl.service.user.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.dto.UmsMenuNode;
+import com.ycl.entity.user.UmsMenu;
+import com.ycl.entity.user.vo.UmsMenuVo;
+import com.ycl.mapper.user.AdminMenuRelationMapper;
+import com.ycl.mapper.user.UmsAdminRoleRelationMapper;
+import com.ycl.mapper.user.UmsMenuMapper;
+import com.ycl.service.user.UmsMenuService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍚庡彴鑿滃崟绠$悊Service瀹炵幇绫�
+ */
+@Service
+public class UmsMenuServiceImpl extends ServiceImpl<UmsMenuMapper, UmsMenu> implements UmsMenuService {
+
+    @Resource
+    AdminMenuRelationMapper adminMenuRelationMapper;
+    @Resource
+    UmsMenuMapper umsMenuMapper;
+    @Resource
+    UmsAdminRoleRelationMapper umsAdminRoleRelationMapper;
+
+    @Override
+    public boolean create(UmsMenu umsMenu) {
+        umsMenu.setCreateTime(new Date());
+        updateLevel(umsMenu);
+        return save(umsMenu);
+    }
+
+
+    /**
+     * 淇敼鑿滃崟灞傜骇
+     */
+    private void updateLevel(UmsMenu umsMenu) {
+        if (umsMenu.getParentId() == 0) {
+            //娌℃湁鐖惰彍鍗曟椂涓轰竴绾ц彍鍗�
+            umsMenu.setLevel(0);
+        } else {
+            //鏈夌埗鑿滃崟鏃堕�夋嫨鏍规嵁鐖惰彍鍗昹evel璁剧疆
+            UmsMenu parentMenu = getById(umsMenu.getParentId());
+            if (parentMenu != null) {
+                umsMenu.setLevel(parentMenu.getLevel() + 1);
+            } else {
+                umsMenu.setLevel(0);
+            }
+        }
+    }
+
+    @Override
+    public boolean update(Long id, UmsMenu umsMenu) {
+        umsMenu.setId(id);
+        updateLevel(umsMenu);
+        return updateById(umsMenu);
+    }
+
+    @Override
+    public Page<UmsMenu> list(Long parentId, Integer pageSize, Integer pageNum) {
+        Page<UmsMenu> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<UmsMenu> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UmsMenu::getParentId, parentId)
+                .orderByDesc(UmsMenu::getSort);
+        return page(page, wrapper);
+    }
+
+    @Override
+    public List<UmsMenuNode> treeList() {
+        List<UmsMenu> menuList = list();
+        List<UmsMenuNode> result = menuList.stream()
+                .filter(menu -> menu.getParentId().equals(0L))
+                .map(menu -> covertMenuNode(menu, menuList)).collect(Collectors.toList());
+        return result;
+    }
+
+    @Override
+    public boolean updateHidden(Long id, Integer hidden) {
+        UmsMenu umsMenu = new UmsMenu();
+        umsMenu.setId(id);
+        umsMenu.setHidden(hidden);
+        return updateById(umsMenu);
+    }
+
+    @Override
+    public List<UmsMenuVo> ListTreeMyself(Long id) {
+        List<UmsMenuVo> fatherUmsMenuVoList = umsMenuMapper.adminMenuRelation(id);
+        List<UmsMenuVo> umsMenuVoList = fatherUmsMenuVoList.stream()
+                .filter(item -> item.getParentId() == 0L)
+                .peek(item -> item.setMenuVoArrayList(getChildren(item, fatherUmsMenuVoList)))
+                .collect(Collectors.toList());
+        return umsMenuVoList;
+    }
+
+    public List<UmsMenuVo> getChildren(UmsMenuVo root, List<UmsMenuVo> allMenus) {
+        return allMenus.stream()
+                .filter(menu -> Objects.equals(menu.getParentId(), root.getId()))
+                .peek(menu -> menu.setMenuVoArrayList(getChildren(menu, allMenus)))
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public String getPermission(Long userId) {
+        List<String> permission = umsAdminRoleRelationMapper.selectPermissionById(userId);
+        if (permission.size()<2){
+            return permission.get(0);
+        }else {
+            if (permission.contains("鎿嶄綔涓旀煡鐪�")){
+                return "operation and view";
+            }
+            else if (permission.contains("鍙搷浣�")&&!permission.contains("浠呮煡鐪�")){
+                return "operation";
+            }
+            else if (permission.contains("浠呮煡鐪�")&&!permission.contains("鍙搷浣�")){
+                return "view";
+            }else return "operation and view";
+        }
+    }
+
+    /**
+     * 灏哢msMenu杞寲涓篣msMenuNode骞惰缃甤hildren灞炴��
+     */
+    @Override
+    public UmsMenuNode covertMenuNode(UmsMenu menu, List<UmsMenu> menuList) {
+        UmsMenuNode node = new UmsMenuNode();
+        BeanUtils.copyProperties(menu, node);
+        List<UmsMenuNode> children = menuList.stream()
+                .filter(subMenu -> subMenu.getParentId().equals(menu.getId()))
+                .map(subMenu -> covertMenuNode(subMenu, menuList)).collect(Collectors.toList());
+        node.setChildren(children);
+        return node;
+    }
+}

--
Gitblit v1.8.0