AuthUserServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.nosum.deliver.auth.service.impl;
  2. import com.nosum.common.base.domain.Result;
  3. import com.nosum.common.base.domain.vo.UserSessionVO;
  4. import com.nosum.common.enums.ErrorEnum;
  5. import com.nosum.common.util.ExceptionUtil;
  6. import com.nosum.common.util.SessionUtil;
  7. import com.nosum.deliver.auth.domain.po.AuthToken;
  8. import com.nosum.deliver.auth.domain.po.AuthUser;
  9. import com.nosum.deliver.auth.domain.vo.AuthUserVO;
  10. import com.nosum.deliver.auth.service.AuthUserService;
  11. import com.nosum.system.enums.RoleEnum;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.data.mongodb.core.MongoTemplate;
  14. import org.springframework.data.mongodb.core.query.Criteria;
  15. import org.springframework.data.mongodb.core.query.Query;
  16. import org.springframework.data.mongodb.core.query.Update;
  17. import org.springframework.stereotype.Service;
  18. import java.util.Collections;
  19. import java.util.Objects;
  20. /**
  21. * 用户认证服务实现类.
  22. *
  23. * @author Young
  24. */
  25. @Service
  26. public class AuthUserServiceImpl implements AuthUserService {
  27. @Autowired
  28. private MongoTemplate mongoTemplate;
  29. @Override
  30. public Result getUserInfo(AuthUserVO authUserVO) {
  31. // 从请求中获取用户信息
  32. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  33. if (Objects.isNull(userSessionInfo) || Objects.isNull(userSessionInfo.getId())) {
  34. return Result.createWithError();
  35. }
  36. AuthUser authUser = mongoTemplate.findById(userSessionInfo.getId(), AuthUser.class);
  37. if (Objects.isNull(authUser)) {
  38. return Result.createWithError();
  39. }
  40. // 返回用户信息
  41. return Result.createWithModel(new AuthUserVO()
  42. .setStatus(authUser.getStatus())
  43. .setName(authUser.getName())
  44. .setAvatar(authUser.getAvatar())
  45. .setEmail(authUser.getEmail())
  46. .setIntroduction(authUser.getIntroduction())
  47. .setRoles(Collections.singletonList(RoleEnum.getEnumTypeMap().get(authUser.getRoleId()).getRoleName()))
  48. );
  49. }
  50. @Override
  51. public Result getMasterUserInfo() {
  52. // 构建查询条件
  53. Criteria criteria = Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId());
  54. // 如果当前有管理员登录,则查询当前的管理员信息
  55. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  56. if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
  57. criteria.and("id").is(userSessionInfo.getId());
  58. }
  59. // 查询管理员信息并且返回
  60. AuthUser authUser = mongoTemplate.findOne(Query.query(criteria), AuthUser.class);
  61. AuthUserVO authUserVO = new AuthUserVO();
  62. if (Objects.nonNull(authUser)) {
  63. authUserVO.setName(authUser.getName())
  64. .setIntroduction(authUser.getIntroduction())
  65. .setEmail(authUser.getEmail())
  66. .setAvatar(authUser.getAvatar());
  67. }
  68. return Result.createWithModel(authUserVO);
  69. }
  70. @Override
  71. public Result logout() {
  72. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  73. if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
  74. mongoTemplate.remove(Query.query(Criteria.where("userId").is(userSessionInfo.getId())), AuthToken.class);
  75. }
  76. return Result.createWithSuccessMessage();
  77. }
  78. @Override
  79. public Result updateAdmin(AuthUserVO authUserVO) {
  80. UserSessionVO userSessionInfo = null;
  81. if (Objects.isNull(authUserVO) || Objects.isNull(userSessionInfo = SessionUtil.getUserSessionInfo())) {
  82. ExceptionUtil.rollback(ErrorEnum.PARAM_ERROR);
  83. }
  84. Update update = new Update();
  85. update.set("name", authUserVO.getName());
  86. update.set("email", authUserVO.getEmail());
  87. update.set("avatar", authUserVO.getAvatar());
  88. update.set("introduction", authUserVO.getIntroduction());
  89. mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(userSessionInfo.getId())), update, AuthUser.class);
  90. return Result.createWithSuccessMessage();
  91. }
  92. @Override
  93. public String getAvatar() {
  94. // 构建查询条件
  95. Criteria criteria = Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId());
  96. // 如果当前有管理员登录,则查询当前的管理员信息
  97. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  98. if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
  99. criteria.and("id").is(userSessionInfo.getId());
  100. }
  101. return Objects.requireNonNull(mongoTemplate.findOne(Query.query(criteria), AuthUser.class)).getAvatar();
  102. }
  103. }