From acea9131318ee6823d008b386e52fee573882b2e Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 18 十二月 2023 15:14:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
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