AbstractPassportService.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package com.care.client.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.date.DateUtil;
  4. import cn.hutool.core.util.IdUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import cn.hutool.crypto.SecureUtil;
  7. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  8. import com.care.client.vo.MemberInfoVO;
  9. import com.care.client.vo.MemberInitParams;
  10. import com.care.common.cache.RedisKeyConstant;
  11. import com.care.common.cache.RedisUtil;
  12. import com.care.common.entity.CareMemberInfo;
  13. import com.care.common.enums.ValidStatusEnum;
  14. import com.care.common.service.CareMemberInfoService;
  15. import com.care.common.util.Result;
  16. import com.google.common.collect.Maps;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.stereotype.Service;
  20. import javax.annotation.Resource;
  21. import java.util.Map;
  22. @Slf4j
  23. @Service
  24. public class AbstractPassportService {
  25. @Resource
  26. private RedisUtil redisUtil;
  27. @Resource
  28. private CareMemberInfoService careMemberInfoService;
  29. public Result<Object> cache(MemberInitParams params) {
  30. String token = IdUtil.fastUUID();
  31. // cache member
  32. CareMemberInfo member = null;
  33. if ("wx".equalsIgnoreCase(params.getLoginType())) {
  34. member = careMemberInfoService.detailByOpenid(params.getOpenid());
  35. if (member == null) {
  36. member = careMemberInfoService.detailByPhone(params.getPhone());
  37. if (member == null) {
  38. return Result.error("账号不存在!");
  39. }
  40. }
  41. if (ValidStatusEnum.INVALID.getValue().equals(member.getStatus())){
  42. return Result.error("用户已经停用");
  43. }
  44. } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
  45. member = careMemberInfoService.detailByPhone(params.getPhone());
  46. if (member == null) {
  47. return Result.error("账号不存在");
  48. }
  49. if (ValidStatusEnum.INVALID.getValue().equals(member.getStatus())){
  50. return Result.error("用户已经停用");
  51. }
  52. if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), member.getPassword())) {
  53. return Result.error("账号密码不匹配");
  54. }
  55. }
  56. if (StringUtils.isBlank(member.getOpenId()) && StringUtils.isNotBlank(params.getOpenid())) {
  57. UpdateWrapper<CareMemberInfo> careMemberInfoUpdateWrapper = new UpdateWrapper<>();
  58. careMemberInfoUpdateWrapper.lambda().eq(CareMemberInfo::getId,member.getId()).set(CareMemberInfo::getOpenId,params.getOpenid());
  59. boolean bindFlag = this.careMemberInfoService.update(careMemberInfoUpdateWrapper);
  60. if (bindFlag) {
  61. member.setOpenId(params.getOpenid());
  62. }
  63. }
  64. MemberInfoVO memberInfoVO = new MemberInfoVO();
  65. BeanUtil.copyProperties(member,memberInfoVO);
  66. if (member.getBirthday()!=null){
  67. memberInfoVO.setAge(DateUtil.ageOfNow(member.getBirthday()));
  68. }
  69. redisUtil.hset(RedisKeyConstant.PINANBAO_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.PINANBAO_LOGIN_INFO_TIME);
  70. Map<String,Object> data = Maps.newHashMap();
  71. data.put("token", token);
  72. data.put("member", memberInfoVO);
  73. return Result.success(data);
  74. }
  75. public MemberInfoVO refreshMember(String token) {
  76. if (StrUtil.isNotBlank(token) && redisUtil.hHasKey(RedisKeyConstant.PINANBAO_LOGIN_INFO, token)) {
  77. MemberInfoVO oldMemberInfoVo = (MemberInfoVO)redisUtil.hget(RedisKeyConstant.PINANBAO_LOGIN_INFO, token);
  78. CareMemberInfo member = careMemberInfoService.getById(oldMemberInfoVo.getId());
  79. if (oldMemberInfoVo != null && member != null) {
  80. MemberInfoVO memberInfoVO = new MemberInfoVO();
  81. BeanUtil.copyProperties(member,memberInfoVO);
  82. redisUtil.hset(RedisKeyConstant.PINANBAO_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.PINANBAO_LOGIN_INFO_TIME);
  83. return memberInfoVO;
  84. }
  85. }
  86. return null;
  87. }
  88. }