UserServiceImpl.java 4.1 KB

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