RoleMenuServiceImpl.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.imed.costaccount.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.imed.costaccount.mapper.RoleMenuMapper;
  6. import com.imed.costaccount.model.RoleMenu;
  7. import com.imed.costaccount.model.dto.RoleMenuDTO;
  8. import com.imed.costaccount.model.vo.CommonSelectVO;
  9. import com.imed.costaccount.model.vo.CommonVO;
  10. import com.imed.costaccount.service.RoleMenuService;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Propagation;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import java.util.stream.Collectors;
  17. @Service("roleMenuService")
  18. public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
  19. /**
  20. * 通过roleId 获取对应的菜单列表
  21. *
  22. * @param roleId
  23. * @param hospId
  24. * @return
  25. */
  26. @Override
  27. public List<CommonVO> getMenuByRoleId(Long roleId, Long hospId) {
  28. return baseMapper.getMenuByRoleId(roleId, hospId);
  29. }
  30. /**
  31. * 绑定角色和菜单关系时选择列表可回显
  32. *
  33. * @param roleId 角色id
  34. * @param hospId
  35. * @return CommonSelectVO
  36. */
  37. @Override
  38. public List<CommonVO> roleMenuList(Long roleId, Long hospId) {
  39. return baseMapper.getMenuByRoleId(roleId, hospId);
  40. // List<Menu> list = menuService.list(
  41. // new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, hospId)
  42. // );
  43. // if (CollUtil.isEmpty(list)) {
  44. // return Collections.emptyList();
  45. // }
  46. // List<CommonSelectVO> all = list.stream().map(i -> {
  47. // CommonSelectVO commonSelectVO = new CommonSelectVO();
  48. // commonSelectVO.setIsSelect(false);
  49. // commonSelectVO.setParentId(i.getParentId());
  50. // commonSelectVO.setId(i.getMenuId());
  51. // commonSelectVO.setName(i.getName());
  52. // return commonSelectVO;
  53. // }).collect(Collectors.toList());
  54. //
  55. // List<RoleMenu> roleMenus = this.list(
  56. // new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId)
  57. // );
  58. // for (CommonSelectVO commonSelectVO : all) {
  59. // for (RoleMenu roleMenu : roleMenus) {
  60. // if (roleMenu.getMenuId().equals(commonSelectVO.getId())) {
  61. // commonSelectVO.setIsSelect(true);
  62. // }
  63. // }
  64. // }
  65. // List<CommonSelectVO> roots = all.stream().filter(i -> i.getParentId() == 0).collect(Collectors.toList());
  66. // List<CommonSelectVO> vos = new ArrayList<>();
  67. // for (CommonSelectVO root : roots) {
  68. // vos.addAll(this.getMenuVO(root, all));
  69. // }
  70. // return vos;
  71. }
  72. private List<CommonSelectVO> getMenuVO(CommonSelectVO root, List<CommonSelectVO> all) {
  73. List<CommonSelectVO> list = new ArrayList<>();
  74. list.add(root);
  75. for (CommonSelectVO j : all) {
  76. if (j.getParentId().equals(root.getId())) {
  77. List<CommonSelectVO> children = root.getChildren();
  78. if (CollUtil.isEmpty(children)) {
  79. children = new ArrayList<>();
  80. }
  81. children.add(j);
  82. root.setChildren(children);
  83. this.getMenuVO(j, all);
  84. }
  85. }
  86. return list;
  87. }
  88. /**
  89. * 编辑角色和菜单关系
  90. *
  91. * @param roleMenuDTO {@link RoleMenuDTO}
  92. * @param hospId 医院id
  93. */
  94. @Override
  95. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  96. public void saveRoleMenu(RoleMenuDTO roleMenuDTO, Long hospId) {
  97. Long roleId = roleMenuDTO.getRoleId();
  98. this.remove(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getHospId, hospId));
  99. List<Long> menuIds = roleMenuDTO.getMenuIds();
  100. if (CollUtil.isNotEmpty(menuIds)) {
  101. List<RoleMenu> roleMenus = menuIds.stream().map(i -> {
  102. RoleMenu roleMenu = new RoleMenu();
  103. roleMenu.setRoleId(roleId).setMenuId(i).setHospId(hospId);
  104. return roleMenu;
  105. }).collect(Collectors.toList());
  106. this.saveBatch(roleMenus);
  107. }
  108. }
  109. }