MenuServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.huimv.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.huimv.admin.common.utils.Result;
  5. import com.huimv.admin.common.utils.ResultCode;
  6. import com.huimv.admin.entity.AccountGroup;
  7. import com.huimv.admin.entity.GroupMenu;
  8. import com.huimv.admin.entity.Menu;
  9. import com.huimv.admin.mapper.AccountGroupMapper;
  10. import com.huimv.admin.mapper.GroupMenuMapper;
  11. import com.huimv.admin.mapper.MenuMapper;
  12. import com.huimv.admin.service.IMenuService;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * <p>
  21. * 服务实现类
  22. * </p>
  23. *
  24. * @author astupidcoder
  25. * @since 2021-09-09
  26. */
  27. @Service
  28. public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {
  29. @Autowired
  30. private MenuMapper menuMapper;
  31. @Autowired
  32. private AccountGroupMapper accountGroupMapper;
  33. @Autowired
  34. private GroupMenuMapper groupMenuMapper;
  35. @Override
  36. public Result addMenu(Menu menu, Integer userId) {
  37. try {
  38. if (menu == null){
  39. return new Result(10002,"参数错误",false);
  40. }
  41. menuMapper.insert(menu);
  42. Integer id = menu.getId();
  43. List<AccountGroup> accounts = accountGroupMapper.selectList(new QueryWrapper<AccountGroup>().eq("account_id", userId));
  44. for (AccountGroup account : accounts) {
  45. GroupMenu groupMenu = new GroupMenu();
  46. groupMenu.setGroupId(account.getGroupId());
  47. groupMenu.setMenuId(id);
  48. groupMenuMapper.insert(groupMenu);
  49. }
  50. return new Result(10000,"添加成功",true);
  51. }catch (Exception e){
  52. return new Result(10001,"添加失败",false);
  53. }
  54. }
  55. @Override
  56. public Result editMenu(Menu menu) {
  57. try {
  58. if (menu.getId() == null){
  59. return new Result(10002,"请选择要修改的菜单",false);
  60. }
  61. menuMapper.updateById(menu);
  62. return new Result(10000,"修改成功",true);
  63. }catch (Exception e){
  64. return new Result(10001,"修改失败",false);
  65. }
  66. }
  67. @Override
  68. public Result removeMenu(Integer menuId) {
  69. try {
  70. QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper<>();
  71. menuQueryWrapper.eq("parent_id",menuId);
  72. List<Menu> lists = menuMapper.selectList(menuQueryWrapper);
  73. if (lists != null && lists.size()>0){
  74. for (Menu menu : lists) {
  75. removeMenu(menu.getId());
  76. menuMapper.deleteById(menu);
  77. }
  78. }
  79. menuMapper.deleteById(menuId);
  80. }catch (Exception e){
  81. return new Result(10001,"删除失败",false);
  82. }
  83. return new Result(10000,"删除成功",true);
  84. }
  85. //查询菜单,只查一次数据库
  86. @Override
  87. public Result optimizeList() {
  88. QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper<>();
  89. menuQueryWrapper.orderByAsc("sort");
  90. List<Menu> all = menuMapper.selectList(menuQueryWrapper);
  91. List list = optimizeListUtil(0,all);
  92. return new Result(ResultCode.SUCCESS,list);
  93. }
  94. @Override
  95. public Result list1() {
  96. QueryWrapper<Menu> menuQueryWrapper = new QueryWrapper<>();
  97. menuQueryWrapper.orderByAsc("sort");
  98. menuQueryWrapper.eq("weight",0);
  99. List<Menu> all = menuMapper.selectList(menuQueryWrapper);
  100. List list = optimizeListUtil(0,all);
  101. return new Result(ResultCode.SUCCESS,list);
  102. }
  103. @Override
  104. public List<Map> optimizeListUtil(int parentId, List<Menu> menuEntityList){
  105. List<Map> list = new ArrayList<>();
  106. for (Menu menuEntity : menuEntityList) {
  107. if (menuEntity.getParentId() == parentId){
  108. Map map = new HashMap();
  109. map.put("id", menuEntity.getId());
  110. map.put("title", menuEntity.getTitle());
  111. map.put("parentId", menuEntity.getParentId());
  112. map.put("url", menuEntity.getUrl());
  113. map.put("sort", menuEntity.getSort());
  114. map.put("value", menuEntity.getId());
  115. map.put("pid", menuEntity.getParentId());
  116. map.put("permission", menuEntity.getPermission());
  117. map.put("weight", menuEntity.getWeight());
  118. map.put("ifShow", menuEntity.getIfShow());
  119. if (menuEntityIsChildren(menuEntity,menuEntityList) ){
  120. map.put("children",optimizeListUtil(menuEntity.getId(),menuEntityList));
  121. }else {
  122. map.put("children",new ArrayList<>());
  123. }
  124. list.add(map);
  125. }
  126. }
  127. return list;
  128. }
  129. //判断是否有children
  130. private boolean menuEntityIsChildren(Menu menuEntity, List<Menu> menuEntityList) {
  131. for (Menu Menu : menuEntityList) {
  132. if (menuEntity.getId().equals(Menu.getParentId()) ){
  133. return true;
  134. }
  135. }
  136. return false;
  137. }
  138. }