SysUserRoleServiceImpl.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * 爱组搭 http://aizuda.com 低代码组件化开发平台
  3. * ------------------------------------------
  4. * 受知识产权保护,请勿删除版权申明
  5. */
  6. package com.aizuda.boot.system.service.impl;
  7. import com.aizuda.core.api.ApiAssert;
  8. import com.aizuda.service.service.BaseServiceImpl;
  9. import com.aizuda.boot.system.entity.SysUserRole;
  10. import com.aizuda.boot.system.entity.param.AssignRolesParam;
  11. import com.aizuda.boot.system.mapper.SysUserRoleMapper;
  12. import com.aizuda.boot.system.service.ISysUserRoleService;
  13. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  14. import org.apache.commons.collections.CollectionUtils;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.stream.Collectors;
  20. /**
  21. * 系统用户角色 服务实现类
  22. *
  23. * @author 青苗
  24. * @since 2021-11-03
  25. */
  26. @Service
  27. public class SysUserRoleServiceImpl extends BaseServiceImpl<SysUserRoleMapper, SysUserRole> implements ISysUserRoleService {
  28. @Transactional(rollbackFor = Exception.class)
  29. @Override
  30. public boolean assignRoles(AssignRolesParam assignRolesParam) {
  31. // 删除历史
  32. List<Long> userIds = assignRolesParam.getUserIds();
  33. this.removeByUserIds(userIds);
  34. if (CollectionUtils.isEmpty(assignRolesParam.getRoleIds())) {
  35. // 无需分配角色
  36. return true;
  37. }
  38. // 批量新增
  39. List<SysUserRole> sysUserRoleList = new ArrayList<>();
  40. userIds.forEach(userId -> sysUserRoleList.addAll(assignRolesParam.getRoleIds().stream()
  41. .map(roleId -> {
  42. SysUserRole sysUserRole = new SysUserRole();
  43. sysUserRole.setUserId(userId);
  44. sysUserRole.setRoleId(roleId);
  45. return sysUserRole;
  46. }).collect(Collectors.toList())));
  47. return super.saveBatch(sysUserRoleList);
  48. }
  49. private boolean removeByUserIds(List<Long> userIds) {
  50. return super.remove(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
  51. }
  52. @Override
  53. public boolean updateById(SysUserRole sysUserRole) {
  54. ApiAssert.isEmpty(sysUserRole.getId(), "主键不存在无法更新");
  55. return super.updateById(sysUserRole);
  56. }
  57. @Override
  58. public List<Long> listRoleIdsByUserId(Long userId) {
  59. List<SysUserRole> sysUserRoleList = super.list(Wrappers.<SysUserRole>lambdaQuery()
  60. .select(SysUserRole::getRoleId).eq(SysUserRole::getUserId, userId));
  61. return CollectionUtils.isEmpty(sysUserRoleList) ? null : sysUserRoleList.stream().map(t -> t.getRoleId())
  62. .collect(Collectors.toList());
  63. }
  64. @Override
  65. public boolean existRelByRoleId(Long roleId) {
  66. return lambdaQuery().eq(SysUserRole::getRoleId, roleId).count() > 0;
  67. }
  68. }