AbstractKeeperPassportService.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.care.keeper.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  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.query.QueryWrapper;
  8. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  9. import com.care.common.cache.RedisKeyConstant;
  10. import com.care.common.cache.RedisUtil;
  11. import com.care.common.entity.*;
  12. import com.care.common.service.*;
  13. import com.care.common.util.Result;
  14. import com.care.keeper.vo.KeeperInfoVO;
  15. import com.care.keeper.vo.KeeperInitParams;
  16. import com.care.keeper.vo.OlderVO;
  17. import com.google.common.collect.Maps;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.stereotype.Service;
  21. import javax.annotation.Resource;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;
  25. @Slf4j
  26. @Service
  27. public class AbstractKeeperPassportService {
  28. @Resource
  29. private RedisUtil redisUtil;
  30. @Resource
  31. private CareStationService careStationService;
  32. @Resource
  33. private CareEventOrderChambService careEventOrderChambService;
  34. @Resource
  35. private CareSysUserService careSysUserService;
  36. @Resource
  37. private CareDeviceService careDeviceService;
  38. @Resource
  39. private CareHouseOlderRelService careHouseOlderRelService;
  40. @Resource
  41. private CareOlderService careOlderService;
  42. public Result<Object> cache(KeeperInitParams params) {
  43. String token = IdUtil.fastUUID();
  44. // cache member
  45. CareSysUser sysUser = null;
  46. if ("wx".equalsIgnoreCase(params.getLoginType())) {
  47. sysUser = careSysUserService.detailByOpenid4Keeper(params.getOpenid());
  48. if (sysUser == null) {
  49. sysUser = careSysUserService.detailByPhone4Keeper(params.getPhone());
  50. if (sysUser == null) {
  51. return Result.error("账号不存在!");
  52. }
  53. }
  54. } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
  55. sysUser = careSysUserService.detailByPhone4Keeper(params.getPhone());
  56. if (sysUser == null) {
  57. return Result.error("账号密码不匹配");
  58. }
  59. if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), sysUser.getPassword())) {
  60. return Result.error("账号密码不匹配");
  61. }
  62. }
  63. if (StringUtils.isBlank(sysUser.getOpenId()) && StringUtils.isNotBlank(params.getOpenid())) {
  64. UpdateWrapper<CareSysUser> careMemberInfoUpdateWrapper = new UpdateWrapper<>();
  65. careMemberInfoUpdateWrapper.lambda().eq(CareSysUser::getId,sysUser.getId()).set(CareSysUser::getOpenId,params.getOpenid());
  66. boolean bindFlag = this.careSysUserService.update(careMemberInfoUpdateWrapper);
  67. if (bindFlag) {
  68. sysUser.setOpenId(params.getOpenid());
  69. }
  70. }
  71. KeeperInfoVO keeperInfoVO = new KeeperInfoVO();
  72. BeanUtil.copyProperties(sysUser,keeperInfoVO);
  73. redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, keeperInfoVO, RedisKeyConstant.PINANSHOUHU_LOGIN_INFO_TIME);
  74. Map<String,Object> data = Maps.newHashMap();
  75. data.put("token", token);
  76. data.put("member", keeperInfoVO);
  77. return Result.success(data);
  78. }
  79. public KeeperInfoVO refreshMember(String token) {
  80. if (StrUtil.isNotBlank(token) && redisUtil.hHasKey(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token)) {
  81. KeeperInfoVO oldMemberInfoVo = (KeeperInfoVO)redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token);
  82. CareSysUser member = careSysUserService.getById(oldMemberInfoVo.getId());
  83. if (oldMemberInfoVo != null && member != null) {
  84. KeeperInfoVO memberInfoVO = new KeeperInfoVO();
  85. BeanUtil.copyProperties(member,memberInfoVO);
  86. if(memberInfoVO.getStationId() != null) {
  87. memberInfoVO.setStationName(careStationService.getById(memberInfoVO.getStationId()).getName());
  88. }
  89. //服务次数
  90. QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
  91. queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,memberInfoVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
  92. memberInfoVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
  93. //老人列表
  94. List<OlderVO> olderVOList = new ArrayList<>();
  95. QueryWrapper<CareDevice> queryWrapper0 = new QueryWrapper<>();
  96. queryWrapper0.lambda().eq(CareDevice::getChambId,memberInfoVO.getId());
  97. List<CareDevice> listDev = this.careDeviceService.list(queryWrapper0);
  98. if(CollUtil.isNotEmpty(listDev)){
  99. listDev.forEach(item -> {
  100. QueryWrapper<CareHouseOlderRel> queryWrapper = new QueryWrapper<>();
  101. queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,item.getHouseId());
  102. List<CareHouseOlderRel> listRel = careHouseOlderRelService.list(queryWrapper);
  103. if(CollUtil.isNotEmpty(listRel)) {
  104. listRel.forEach(i->{
  105. CareOlder careOlder = this.careOlderService.getById(i.getOlderId());
  106. OlderVO olderVO = new OlderVO();
  107. BeanUtil.copyProperties(careOlder,olderVO);
  108. olderVOList.add(olderVO);
  109. });
  110. }
  111. });
  112. }
  113. if(CollUtil.isNotEmpty(olderVOList)){
  114. memberInfoVO.setOlderVOList(olderVOList);
  115. }
  116. redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.PINANSHOUHU_LOGIN_INFO_TIME);
  117. return memberInfoVO;
  118. }
  119. }
  120. return null;
  121. }
  122. }