MenuService.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. package com.huaxu.service;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.huaxu.dao.MenuMapper;
  4. import com.huaxu.dao.TenantMenuMapper;
  5. import com.huaxu.entity.MenuEntity;
  6. import com.huaxu.entity.TenantMenuEntity;
  7. import com.huaxu.model.LoginUser;
  8. import com.huaxu.util.UserUtil;
  9. import org.springframework.beans.BeanUtils;
  10. import org.springframework.stereotype.Service;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  14. import javax.annotation.Resource;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.util.*;
  17. import static com.google.common.collect.Lists.newArrayList;
  18. /**
  19. *
  20. * 菜单Service接口
  21. * @author: WYY
  22. * @date 2020-10-26 16:15
  23. */
  24. @Service
  25. public class MenuService extends ServiceImpl<MenuMapper,MenuEntity> {
  26. @Resource
  27. private MenuMapper menuMapper;
  28. @Resource
  29. private TenantMenuMapper tenantMenuMapper;
  30. /**
  31. * 自定义分页查询,含关联实体对像
  32. */
  33. public IPage<MenuEntity> findPage(IPage<MenuEntity> page, MenuEntity menuEntity) {
  34. Page<MenuEntity> ipage = menuMapper.findPage(page, menuEntity);
  35. return ipage;
  36. }
  37. /**
  38. * 查列表
  39. */
  40. public List<MenuEntity> findList(MenuEntity menuEntity) {
  41. LoginUser currentUser = UserUtil.getCurrentUser();
  42. Integer userId = currentUser.getId();
  43. //-999租户管理员 1超级管理员 2普通用户
  44. String userType = currentUser.getType();
  45. menuEntity.setTenantId(currentUser.getTenantId());
  46. List<MenuEntity> menuEntities = new ArrayList<>();
  47. switch (userType) {
  48. case "1"://超级管理员查询所有系统菜单
  49. menuEntities = menuMapper.findList(menuEntity);
  50. break;
  51. case "2"://普通用户按角色查询租户菜单
  52. menuEntities = menuMapper.findUserList(menuEntity);
  53. break;
  54. case "-999"://租户管理员查询租户菜单
  55. menuEntities = menuMapper.findTenantList(menuEntity);
  56. break;
  57. }
  58. List<MenuEntity> menuTree = getMenuTree(menuEntities, Long.valueOf(0), 1);
  59. return menuTree;
  60. }
  61. public static List<MenuEntity> getMenuTree(List<MenuEntity> list, Long id, Integer leve) {
  62. List<MenuEntity> temList = newArrayList();
  63. if (list != null) {
  64. for (MenuEntity menuEntity : list) {
  65. if (id.equals(menuEntity.getParentMenuId())) {
  66. List<MenuEntity> chidren = getMenuTree(list, menuEntity.getId(), ++leve);
  67. MenuEntity temMeanu = new MenuEntity();
  68. BeanUtils.copyProperties(menuEntity, temMeanu);
  69. temMeanu.setChildren(chidren);
  70. temList.add(temMeanu);
  71. leve--;
  72. }
  73. }
  74. }
  75. if (temList.size() > 0) {
  76. return temList;
  77. } else {
  78. return null;
  79. }
  80. }
  81. /**
  82. * 按父级节点查列表
  83. */
  84. public List<MenuEntity> findMenuByParentIds(List<Long> ids) {
  85. LoginUser currentUser = UserUtil.getCurrentUser();
  86. Integer userId = currentUser.getId();
  87. //-999租户管理员 1超级管理员 2普通用户
  88. String userType = currentUser.getType();
  89. List<MenuEntity> menuEntities = new ArrayList<>();
  90. switch (userType) {
  91. case "1"://超级管理员查询所有系统菜单
  92. menuEntities = menuMapper.findMenuByParentIds(ids);
  93. break;
  94. case "2"://普通用户按角色查询租户菜单
  95. menuEntities = menuMapper.findTenantMenuByParentIds(currentUser.getTenantId(), ids);
  96. break;
  97. case "-999"://租户管理员查询租户菜单
  98. menuEntities = menuMapper.findTenantMenuByParentIds(currentUser.getTenantId(), ids);
  99. break;
  100. }
  101. return menuEntities;
  102. }
  103. /**
  104. * 批量删除
  105. */
  106. @Transactional(rollbackFor = Exception.class)
  107. public boolean delMenuByIds(Long[] ids) {
  108. LoginUser currentUser = UserUtil.getCurrentUser();
  109. Integer userId = currentUser.getId();
  110. //-999租户管理员 1超级管理员 2普通用户
  111. String userType = currentUser.getType();
  112. boolean isOk = false;
  113. for(Long id : ids) {
  114. switch (userType) {
  115. case "1"://超级管理员直接删除系统菜单
  116. isOk = this.removeById(id);
  117. break;
  118. case "2"://普通用户按角色查询租户菜单
  119. isOk = menuMapper.updateState(id);
  120. break;
  121. case "-999"://租户管理员查询租户菜单
  122. isOk = menuMapper.updateState(id);
  123. break;
  124. }
  125. }
  126. return isOk;
  127. }
  128. /**
  129. * 单个删除
  130. */
  131. public boolean delMenuById(Long id) {
  132. LoginUser currentUser = UserUtil.getCurrentUser();
  133. Integer userId = currentUser.getId();
  134. //-999租户管理员 1超级管理员 2普通用户
  135. String userType = currentUser.getType();
  136. boolean isOk = false;
  137. switch (userType) {
  138. case "1"://超级管理员直接删除系统菜单
  139. isOk = this.removeById(id);
  140. break;
  141. case "2"://普通用户按角色查询租户菜单
  142. isOk = menuMapper.updateState(id);
  143. break;
  144. case "-999"://租户管理员查询租户菜单
  145. isOk = menuMapper.updateState(id);
  146. break;
  147. }
  148. return isOk;
  149. }
  150. /**
  151. * 保存
  152. */
  153. public boolean addMenu(MenuEntity menu) {
  154. if (this.save(menu)) {
  155. return true;
  156. }
  157. return false;
  158. }
  159. /**
  160. * 修改根居ID
  161. */
  162. public boolean updateMenuById(MenuEntity menu) {
  163. LoginUser currentUser = UserUtil.getCurrentUser();
  164. Integer userId = currentUser.getId();
  165. //-999租户管理员 1超级管理员 2普通用户
  166. String userType = currentUser.getType();
  167. TenantMenuEntity tenantMenuEntity = new TenantMenuEntity();
  168. if(userType.equals("2")||userType.equals("-999")) {
  169. MenuEntity menuEntity = menuMapper.findTenantByMenuId(currentUser.getTenantId(), menu.getId());
  170. tenantMenuEntity.setId(menuEntity.getId());
  171. tenantMenuEntity.setDateUpdate(new Date());
  172. tenantMenuEntity.setUpdateBy(currentUser.getUsername());
  173. tenantMenuEntity.setLinkPath(menu.getLinkPath());
  174. tenantMenuEntity.setMenuImage(menu.getMenuImage());
  175. tenantMenuEntity.setMenuName(menu.getName());
  176. tenantMenuEntity.setMenuSeq(menu.getSeq());
  177. }
  178. boolean isOk = false;
  179. switch (userType) {
  180. case "1"://超级管理员查询所有系统菜单
  181. isOk = this.updateById(menu);
  182. break;
  183. case "2"://普通用户按角色查询租户菜单
  184. isOk = tenantMenuMapper.updateById(tenantMenuEntity) > 0 ? true : false;
  185. break;
  186. case "-999"://租户管理员查询租户菜单
  187. isOk = tenantMenuMapper.updateById(tenantMenuEntity) > 0 ? true : false;
  188. break;
  189. }
  190. return isOk;
  191. }
  192. /**
  193. * 根居ID获取对象
  194. */
  195. public MenuEntity findMenuById(Long id) {
  196. LoginUser currentUser = UserUtil.getCurrentUser();
  197. Integer userId = currentUser.getId();
  198. //-999租户管理员 1超级管理员 2普通用户
  199. String userType = currentUser.getType();
  200. MenuEntity menuEntity = new MenuEntity();
  201. switch (userType) {
  202. case "1"://超级管理员查询所有系统菜单
  203. menuEntity = menuMapper.findMenuById(id);;
  204. break;
  205. case "2"://普通用户按角色查询租户菜单
  206. menuEntity = menuMapper.findUserMenuById(currentUser.getTenantId(),id);
  207. break;
  208. case "-999"://租户管理员查询租户菜单
  209. menuEntity = menuMapper.findUserMenuById(currentUser.getTenantId(),id);
  210. break;
  211. }
  212. return menuEntity;
  213. }
  214. public List<MenuEntity> findUserFirstMenu() {
  215. LoginUser currentUser = UserUtil.getCurrentUser();
  216. Integer userId = currentUser.getId();
  217. //-999租户管理员 1超级管理员 2普通用户
  218. String userType = currentUser.getType();
  219. List<MenuEntity> menuEntities= new ArrayList<>();
  220. switch (userType) {
  221. case "1"://超级管理员查询所有系统菜单
  222. menuEntities = menuMapper.findAllFirstMenu();
  223. break;
  224. case "2"://普通用户按角色查询租户菜单
  225. menuEntities = menuMapper.findUserFirstMenu(currentUser.getTenantId(),userId);
  226. break;
  227. case "-999"://租户管理员查询租户菜单
  228. menuEntities = menuMapper.findTenantFirstMenu(currentUser.getTenantId());
  229. break;
  230. }
  231. return menuEntities;
  232. }
  233. public List<MenuEntity> findUserMenu(String appId) {
  234. LoginUser currentUser = UserUtil.getCurrentUser();
  235. Integer userId = currentUser.getId();
  236. //-999租户管理员 1超级管理员 2普通用户
  237. String userType = currentUser.getType();
  238. List<MenuEntity> menuEntities= new ArrayList<>();
  239. switch (userType) {
  240. case "1"://超级管理员查询所有系统菜单
  241. menuEntities = menuMapper.findSystemUserMenu(appId);
  242. break;
  243. case "2"://普通用户按角色查询租户菜单
  244. menuEntities = menuMapper.findUserMenu(currentUser.getTenantId(),userId, appId);
  245. break;
  246. case "-999"://租户管理员查询租户菜单
  247. menuEntities = menuMapper.findTenantUserMenu(currentUser.getTenantId(),appId);
  248. break;
  249. }
  250. List<MenuEntity> menuTree = getMenuTree(menuEntities, Long.valueOf(0), 1);
  251. return menuTree;
  252. }
  253. }