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