SysMenuServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.fdkankan.manage.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.fdkankan.common.request.RequestBase;
  6. import com.fdkankan.common.response.PageInfo;
  7. import com.fdkankan.manage.entity.Meta;
  8. import com.fdkankan.manage.entity.SysMenu;
  9. import com.fdkankan.manage.entity.SysRoleMenu;
  10. import com.fdkankan.manage.entity.SysUser;
  11. import com.fdkankan.manage.mapper.ISysMenuMapper;
  12. import com.fdkankan.manage.service.ISysMenuService;
  13. import com.fdkankan.manage.service.ISysRoleMenuService;
  14. import com.fdkankan.manage.service.ISysUserService;
  15. import com.fdkankan.manage.vo.response.SysMenuVo;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import java.util.ArrayList;
  20. import java.util.Arrays;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. /**
  25. * <p>
  26. * 服务实现类
  27. * </p>
  28. *
  29. * @author
  30. * @since 2022-06-09
  31. */
  32. @Service
  33. public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> implements ISysMenuService {
  34. @Autowired
  35. ISysRoleMenuService roleMenuService;
  36. @Autowired
  37. ISysUserService userService;
  38. @Override
  39. public List<SysMenu> getListByUserId(Object loginId) {
  40. return getBaseMapper().getListByUserId(loginId);
  41. }
  42. @Override
  43. public PageInfo pageList(RequestBase param) {
  44. LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
  45. wrapper.isNull(SysMenu::getParentId);
  46. wrapper.orderByAsc(SysMenu::getSort);
  47. Page<SysMenu> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()), wrapper);
  48. List<SysMenuVo> voList = getByParentId(null,page.getRecords(),false,null,null);
  49. // List<SysMenuVo> allVos = setTreeMenuVo(false,null,null);
  50. // List<Long> ids = page.getRecords().parallelStream().map(SysMenu::getId).collect(Collectors.toList());
  51. // List<SysMenuVo> voList = allVos.parallelStream().filter(vo -> ids.contains(vo.getId())).collect(Collectors.toList());
  52. Page<SysMenuVo> resultPage = new Page<>(page.getCurrent(),page.getSize());
  53. resultPage.setRecords(voList);
  54. resultPage.setTotal(page.getTotal());
  55. return PageInfo.PageInfo(resultPage);
  56. }
  57. @Override
  58. public List<SysMenuVo> allShowList() {
  59. return getByParentId(null,null,true,null,null);
  60. }
  61. @Override
  62. public List<SysMenuVo> getByUserId(Long userId) {
  63. SysUser user = userService.getById(userId);
  64. List<SysMenu> menuList = this.getListByUserId(userId);
  65. List<Long> menuIds = menuList.parallelStream().map(SysMenu::getId).collect(Collectors.toList());
  66. menuList.forEach(sysMenu -> setMenuIds(menuIds,sysMenu));
  67. return getByRoleId(menuIds, user.getRoleId());
  68. }
  69. private void setMenuIds( List<Long> menuIds ,SysMenu sysMenu){
  70. if(sysMenu.getParentId()!= null && !menuIds.contains(sysMenu.getParentId())) {
  71. menuIds.add(sysMenu.getParentId());
  72. SysMenu menu = this.getById(sysMenu.getParentId());
  73. this.setMenuIds(menuIds,menu);
  74. }
  75. }
  76. @Override
  77. public List<SysMenuVo> getByRoleId(List<Long> menuIds ,Long roleId) {
  78. if(menuIds == null){
  79. List<SysRoleMenu> roleMenus = roleMenuService.getByRoleId(roleId);
  80. if(roleMenus == null || roleMenus.size() <=0){
  81. return new ArrayList<>();
  82. }
  83. menuIds = roleMenus.parallelStream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
  84. }
  85. return getByParentId(null,null,true,menuIds,2);
  86. }
  87. //递归设置menuTree
  88. private List<SysMenuVo> getByParentId(Long parentId, List<SysMenu> list, boolean show ,List<Long> menuIds,Integer notType){
  89. if(list == null){
  90. LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
  91. if(show){
  92. wrapper.eq(SysMenu::getIsShow,1);
  93. }
  94. if(parentId == null){
  95. wrapper.isNull(SysMenu::getParentId);
  96. }else {
  97. wrapper.eq(SysMenu::getParentId,parentId);
  98. }
  99. if(menuIds != null){
  100. wrapper.in(SysMenu::getId,menuIds);
  101. }
  102. if(notType!=null){
  103. wrapper.notIn(SysMenu::getType, Arrays.asList(notType));
  104. }
  105. list = this.list(wrapper);
  106. }
  107. List<SysMenuVo> sysMenuVos = new ArrayList<>();
  108. if(list.size() <=0){
  109. return sysMenuVos;
  110. }
  111. for (SysMenu record : list) {
  112. SysMenuVo vo = new SysMenuVo();
  113. BeanUtils.copyProperties(record,vo);
  114. Meta meta = new Meta();
  115. meta.setIcon(record.getIcon());
  116. meta.setTitle(record.getName());
  117. meta.setHideMenu(record.getHideMenu() == 1);
  118. meta.setFrameSrc(null);
  119. vo.setMeta(meta);
  120. sysMenuVos.add(vo);
  121. List<SysMenuVo> children = getByParentId(record.getId(),null,show,menuIds,notType);
  122. vo.setChildren(children);
  123. }
  124. return sysMenuVos;
  125. }
  126. @Override
  127. public List<SysMenu> getButtonByUserId(Long userId) {
  128. SysUser user = userService.getById(userId);
  129. List<SysRoleMenu> roleMenus = roleMenuService.getByRoleId(user.getRoleId());
  130. List<Long> menuId = roleMenus.parallelStream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
  131. LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
  132. wrapper.in(SysMenu::getId,menuId);
  133. wrapper.eq(SysMenu::getType,2);
  134. return this.list(wrapper);
  135. }
  136. }