From 3f9ebf19e687c33287b0eaec64d4564a212f57db Mon Sep 17 00:00:00 2001
From: mg <maokecheng@163.com>
Date: 星期三, 12 十月 2022 16:59:57 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/sccg_server
---
ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 120 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..1ce1c77
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java
@@ -0,0 +1,120 @@
+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.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;
+
+ @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());
+ }
+
+ /**
+ * 灏哢msMenu杞寲涓篣msMenuNode骞惰缃甤hildren灞炴��
+ */
+ private 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