OauthServiceImpl.java 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.nosum.deliver.auth.service.impl;
  2. import cn.hutool.crypto.SecureUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.nosum.common.base.domain.Result;
  5. import com.nosum.common.base.domain.vo.UserSessionVO;
  6. import com.nosum.common.constant.Constants;
  7. import com.nosum.common.enums.ErrorEnum;
  8. import com.nosum.common.util.ExceptionUtil;
  9. import com.nosum.common.util.JwtUtil;
  10. import com.nosum.common.util.SessionUtil;
  11. import com.nosum.deliver.auth.dao.AuthTokenDao;
  12. import com.nosum.deliver.auth.dao.AuthUserDao;
  13. import com.nosum.deliver.auth.domain.po.AuthToken;
  14. import com.nosum.deliver.auth.domain.po.AuthUser;
  15. import com.nosum.deliver.auth.domain.vo.AuthUserVO;
  16. import com.nosum.deliver.auth.service.OauthService;
  17. import com.nosum.system.enums.RoleEnum;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.time.LocalDateTime;
  23. import java.time.ZoneOffset;
  24. import java.util.Collections;
  25. import java.util.Date;
  26. @Service
  27. @Slf4j
  28. public class OauthServiceImpl implements OauthService {
  29. @Autowired
  30. private AuthUserDao authUserDao;
  31. @Autowired
  32. private AuthTokenDao authTokenDao;
  33. @Override
  34. public Result login(AuthUserVO authUserVO) {
  35. log.debug("login {}", authUserVO);
  36. if (authUserVO == null || StringUtils.isBlank(authUserVO.getEmail()) || StringUtils.isBlank(authUserVO.getPassword())) {
  37. ExceptionUtil.rollback(ErrorEnum.PARAM_ERROR);
  38. }
  39. // 查询管理员
  40. AuthUser authUser = authUserDao.selectOne(new LambdaQueryWrapper<AuthUser>()
  41. .eq(AuthUser::getRoleId, RoleEnum.ADMIN.getRoleId())
  42. .eq(AuthUser::getEmail, authUserVO.getEmail()));
  43. ExceptionUtil.isRollback(authUser == null, ErrorEnum.ACCOUNT_NOT_EXIST);
  44. // 将密码加密后进行验证
  45. String psw = SecureUtil.md5(authUserVO.getPassword());
  46. ExceptionUtil.isRollback(!authUser.getPassword().equals(psw), ErrorEnum.PASSWORD_ERROR);
  47. // 生成token
  48. authUserVO.setRoles(Collections.singletonList(RoleEnum.getEnumTypeMap().get(authUser.getRoleId()).getRoleName()));
  49. authUserVO.setCreateTime(authUser.getCreateTime());
  50. String token = JwtUtil.getToken(new AuthUserVO().setPassword(authUser.getPassword()).setName(authUser.getName()).setId(authUser.getId()));
  51. authUserVO.setToken(token);
  52. authTokenDao.insert(new AuthToken().setUserId(authUser.getId()).setToken(token).setExpireTime(new Date(Constants.EXPIRE_TIME + System.currentTimeMillis()).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime()));
  53. return Result.createWithModel(authUserVO);
  54. }
  55. @Override
  56. public Result updatePassword(AuthUserVO authUserVO) {
  57. if (StringUtils.isBlank(authUserVO.getPassword()) || StringUtils.isBlank(authUserVO.getPasswordOld())) {
  58. ExceptionUtil.isRollback(true, ErrorEnum.PARAM_ERROR);
  59. }
  60. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  61. AuthUser authUser = authUserDao.selectById(userSessionInfo.getId());
  62. if (!SecureUtil.md5(authUserVO.getPasswordOld()).equals(authUser.getPassword())) {
  63. ExceptionUtil.isRollback(true, ErrorEnum.UPDATE_PASSWORD_ERROR);
  64. }
  65. authUserDao.updateById(new AuthUser().setId(userSessionInfo.getId()).setPassword(SecureUtil.md5(authUserVO.getPassword())));
  66. return Result.createWithSuccessMessage();
  67. }
  68. @Override
  69. public Result registerAdmin(AuthUserVO authUserVO) {
  70. AuthUser authUser = authUserDao.selectOne(new LambdaQueryWrapper<AuthUser>().eq(AuthUser::getRoleId, RoleEnum.ADMIN.getRoleId()));
  71. if (authUser == null) {
  72. authUser = new AuthUser();
  73. authUser.setName(authUserVO.getEmail())
  74. .setEmail(authUserVO.getEmail())
  75. .setRoleId(RoleEnum.ADMIN.getRoleId())
  76. .setPassword(SecureUtil.md5(authUserVO.getPassword()))
  77. .setCreateTime(LocalDateTime.now())
  78. .setAccessKey(authUserVO.getAccessKey())
  79. .setSecretKey(authUserVO.getSecretKey());
  80. authUserDao.insert(authUser);
  81. } else {
  82. ExceptionUtil.isRollback(true, ErrorEnum.ACCOUNT_EXIST);
  83. }
  84. return Result.createWithSuccessMessage();
  85. }
  86. }