UserRoleServiceImpl.java 2.6 KB

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