UserRoleServiceImpl.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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.common.util.PageUtils;
  6. import com.imed.costaccount.mapper.UserRoleMapper;
  7. import com.imed.costaccount.model.UserRole;
  8. import com.imed.costaccount.model.dto.RoleUserDTO;
  9. import com.imed.costaccount.model.vo.CommonSelectVO;
  10. import com.imed.costaccount.model.vo.CommonVO;
  11. import com.imed.costaccount.model.vo.UserVO;
  12. import com.imed.costaccount.service.UserRoleService;
  13. import com.imed.costaccount.service.UserService;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Propagation;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.util.ArrayList;
  18. import java.util.Collections;
  19. import java.util.List;
  20. import java.util.stream.Collectors;
  21. @Service("userRoleService")
  22. public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {
  23. private final UserService userService;
  24. public UserRoleServiceImpl(UserService userService) {
  25. this.userService = userService;
  26. }
  27. /**
  28. * 通过roleId获取对应的关联人员
  29. *
  30. * @param roleId 角色id
  31. * @param hospId 医院id
  32. * @return {"id":1,"username":"tom"}
  33. */
  34. @Override
  35. public List<CommonVO> getUsersByRoleId(Long roleId, Long hospId) {
  36. return baseMapper.getUsersByRoleId(roleId, hospId);
  37. }
  38. /**
  39. * 绑定角色和人员关系时选择列表(可回显)
  40. *
  41. * @param roleId 角色id
  42. * @param hospId 医院id
  43. * @return {"id":1,"username":"tom","isSelect": true}
  44. */
  45. @Override
  46. public List<CommonVO> roleUserList(Long roleId, Long hospId) {
  47. // 得到这个角色下所有人员
  48. return baseMapper.getUsersByRoleId(roleId, hospId);
  49. }
  50. /**
  51. * 编辑角色和人员关系
  52. *
  53. * @param roleUserDTO {@link RoleUserDTO}
  54. * @param hospId 医院id
  55. */
  56. @Override
  57. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Throwable.class)
  58. public void saveRoleUser(RoleUserDTO roleUserDTO, Long hospId) {
  59. Long roleId = roleUserDTO.getRoleId();
  60. // this.removeById(roleId);
  61. List<Long> userIds = roleUserDTO.getUserIds();
  62. this.remove(
  63. new LambdaQueryWrapper<UserRole>().in(UserRole::getUserId, userIds).eq(UserRole::getRoleId, roleId)
  64. );
  65. if (CollUtil.isNotEmpty(userIds)) {
  66. List<UserRole> userRoles = userIds.stream().map(i -> {
  67. UserRole userRole = new UserRole();
  68. userRole.setRoleId(roleId).setUserId(i).setHospId(hospId);
  69. return userRole;
  70. }).collect(Collectors.toList());
  71. this.saveBatch(userRoles);
  72. }
  73. }
  74. }