UserServiceImpl.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.fdkankan.jp.xspace.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.fdkankan.common.util.Base64Converter;
  7. import com.fdkankan.common.util.JwtUtil;
  8. import com.fdkankan.common.util.SecurityUtil;
  9. import com.fdkankan.jp.xspace.common.ResultCode;
  10. import com.fdkankan.jp.xspace.common.redis.RedisConstant;
  11. import com.fdkankan.jp.xspace.constant.XspaceErrorCode;
  12. import com.fdkankan.jp.xspace.dto.LoginDTO;
  13. import com.fdkankan.jp.xspace.entity.*;
  14. import com.fdkankan.jp.xspace.common.exception.BusinessException;
  15. import com.fdkankan.jp.xspace.mapper.ISysUserMapper;
  16. import com.fdkankan.jp.xspace.mapper.IUserMapper;
  17. import com.fdkankan.jp.xspace.service.*;
  18. import com.fdkankan.jp.xspace.vo.LoginVO;
  19. import com.fdkankan.jp.xspace.vo.UserVO;
  20. import com.fdkankan.redis.util.RedisUtil;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import javax.annotation.Resource;
  26. import java.util.List;
  27. import java.util.Objects;
  28. import java.util.Set;
  29. import java.util.stream.Collectors;
  30. /**
  31. * <p>
  32. * 用户信息表 服务实现类
  33. * </p>
  34. *
  35. * @author
  36. * @since 2022-12-23
  37. */
  38. @Service
  39. public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
  40. @Resource
  41. private RedisUtil redisUtil;
  42. @Autowired
  43. private IUserRoleService userRoleService;
  44. @Autowired
  45. private IXspaceUserService xspaceUserService;
  46. @Autowired
  47. private IUserPlatformService userPlatformService;
  48. @Autowired
  49. private ISysUserService sysUserService;
  50. @Override
  51. public User getByUserName(String managerPhone) {
  52. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  53. wrapper.eq(User::getUserName,managerPhone);
  54. return this.getOne(wrapper);
  55. }
  56. @Override
  57. public LoginVO login(LoginDTO param) {
  58. if (StringUtils.isEmpty(param.getPassword()) || StringUtils.isEmpty(param.getPhoneNum())){
  59. throw new BusinessException(ResultCode.PARAM_ERROR);
  60. }
  61. String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getPassword())));
  62. // User user = this.getByUserName(param.getPhoneNum());
  63. SysUser user = sysUserService.getByUserName(param.getPhoneNum());
  64. if(user == null){
  65. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  66. }
  67. if(!user.getPassword().equals(passwordMd5)){
  68. throw new BusinessException(ResultCode.PASSWORD_ERROR);
  69. }
  70. // List<UserPlatform> xspases = userPlatformService.list(new LambdaQueryWrapper<UserPlatform>().eq(UserPlatform::getUserId, user.getId()).eq(UserPlatform::getPlatformKey, "xspase"));
  71. // if(CollUtil.isEmpty(xspases)){
  72. // throw new BusinessException(XspaceErrorCode.CODE_90001.code(), XspaceErrorCode.CODE_90001.message());
  73. // }
  74. String token = this.redisLogin(user.getUserName(), JSONObject.toJSONString(user),"user");
  75. UserVO userVo = getUserVo(user);
  76. LoginVO vo = new LoginVO();
  77. vo.setToken(token);
  78. vo.setUser(userVo);
  79. XspaceUser xspaceUser = xspaceUserService.getByUserId(userVo.getId());
  80. if(Objects.isNull(xspaceUser)){
  81. xspaceUser = new XspaceUser();
  82. xspaceUser.setUserId(userVo.getId());
  83. xspaceUserService.save(xspaceUser);
  84. }
  85. return vo;
  86. }
  87. @Override
  88. public void logout(String token) {
  89. redisUtil.del(String.format(RedisConstant.KEY_XSPACE_TOKEN,token));
  90. }
  91. public String redisLogin(String userName,String value,String loginType){
  92. String token = JwtUtil.createJWT(-1,userName,loginType);
  93. String redisKey = String.format(RedisConstant.KEY_XSPACE_TOKEN,token);
  94. redisUtil.set(redisKey, value,2 * 60 * 60);
  95. return token;
  96. }
  97. private UserVO getUserVo(SysUser user){
  98. UserVO userVo = new UserVO();
  99. BeanUtils.copyProperties(user,userVo);
  100. List<UserRole> userRoles = userRoleService.getByUserId(userVo.getId());
  101. Set<Long> roleIds = userRoles.stream().map(UserRole::getRoleId).collect(Collectors.toSet());
  102. userVo.setRoleIds(roleIds);
  103. return userVo;
  104. }
  105. @Override
  106. public UserVO getUserInfo(String username) {
  107. SysUser sysUser = sysUserService.getByUserName(username);
  108. return getUserVo(sysUser);
  109. }
  110. }