1
0

UserAuthService.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.simuwang.base.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.simuwang.base.mapper.SysUserMapper;
  5. import com.simuwang.base.pojo.dos.SysMenuDO;
  6. import com.simuwang.base.pojo.dos.SysRoleDO;
  7. import com.simuwang.base.pojo.dos.SysUserDO;
  8. import org.springframework.stereotype.Service;
  9. import java.util.List;
  10. import java.util.Objects;
  11. @Service
  12. public class UserAuthService {
  13. private final SysUserMapper userMapper;
  14. public UserAuthService(SysUserMapper userMapper) {
  15. this.userMapper = userMapper;
  16. }
  17. /**
  18. * 根据用户账号获取用户信息
  19. *
  20. * @param username 用户账号
  21. * @return /
  22. */
  23. public SysUserDO getUserInfoByUsername(String username) {
  24. LambdaQueryWrapper<SysUserDO> wrapper = Wrappers.lambdaQuery(SysUserDO.class)
  25. .eq(SysUserDO::getUserName, username);
  26. return this.userMapper.selectOne(wrapper);
  27. }
  28. /**
  29. * 根据用户id获取角色权限列表
  30. *
  31. * @param userId 用户id
  32. * @return /
  33. */
  34. public List<SysRoleDO> listUserRoleByUserId(Integer userId) {
  35. boolean admin = this.isAdmin(userId);
  36. if (admin) {
  37. return this.userMapper.selectAllRole();
  38. }
  39. return this.userMapper.selectRoleByUserId(userId);
  40. }
  41. /**
  42. * 根据用户id获取菜单列表
  43. *
  44. * @param userId 用户id
  45. * @return /
  46. */
  47. public List<SysMenuDO> listUserMenuByUserId(Integer userId) {
  48. boolean admin = this.isAdmin(userId);
  49. if (admin) {
  50. return this.userMapper.selectAllMenu();
  51. }
  52. return this.userMapper.selectMenuByUserId(userId);
  53. }
  54. /**
  55. * 判断用户是否超级管理员
  56. * 1、如果用户id为0或者1则为超级管理员
  57. * 2、或者用户有system和admin角色
  58. *
  59. * @param userId 用户id
  60. * @return /
  61. */
  62. private boolean isAdmin(Integer userId) {
  63. if (Objects.equals(0, userId) || Objects.equals(1, userId)) {
  64. return true;
  65. }
  66. List<SysRoleDO> roles = this.userMapper.selectRoleByUserId(userId);
  67. SysRoleDO adminRole = roles.stream()
  68. .filter(e -> "system".equalsIgnoreCase(e.getRoleKey()) || "admin".equalsIgnoreCase(e.getRoleKey()))
  69. .findFirst().orElse(null);
  70. return adminRole != null;
  71. }
  72. }