package com.care.keeper.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.care.common.cache.RedisKeyConstant; import com.care.common.cache.RedisUtil; import com.care.common.entity.*; import com.care.common.service.*; import com.care.common.util.Result; import com.care.keeper.vo.KeeperInfoVO; import com.care.keeper.vo.KeeperInitParams; import com.care.keeper.vo.OlderVO; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j @Service public class AbstractKeeperPassportService { @Resource private RedisUtil redisUtil; @Resource private CareStationService careStationService; @Resource private CareEventOrderChambService careEventOrderChambService; @Resource private CareSysUserService careSysUserService; @Resource private CareDeviceService careDeviceService; @Resource private CareHouseOlderRelService careHouseOlderRelService; @Resource private CareOlderService careOlderService; public Result cache(KeeperInitParams params) { String token = IdUtil.fastUUID(); // cache member CareSysUser sysUser = null; if ("wx".equalsIgnoreCase(params.getLoginType())) { sysUser = careSysUserService.detailByOpenid4Keeper(params.getOpenid()); if (sysUser == null) { sysUser = careSysUserService.detailByPhone4Keeper(params.getPhone()); if (sysUser == null) { return Result.error("账号不存在!"); } } } else if ("pwd".equalsIgnoreCase(params.getLoginType())) { sysUser = careSysUserService.detailByPhone4Keeper(params.getPhone()); if (sysUser == null) { return Result.error("账号密码不匹配"); } if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), sysUser.getPassword())) { return Result.error("账号密码不匹配"); } } if (StringUtils.isBlank(sysUser.getOpenId()) && StringUtils.isNotBlank(params.getOpenid())) { UpdateWrapper careMemberInfoUpdateWrapper = new UpdateWrapper<>(); careMemberInfoUpdateWrapper.lambda().eq(CareSysUser::getId,sysUser.getId()).set(CareSysUser::getOpenId,params.getOpenid()); boolean bindFlag = this.careSysUserService.update(careMemberInfoUpdateWrapper); if (bindFlag) { sysUser.setOpenId(params.getOpenid()); } } KeeperInfoVO keeperInfoVO = new KeeperInfoVO(); BeanUtil.copyProperties(sysUser,keeperInfoVO); redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, keeperInfoVO, RedisKeyConstant.PINANSHOUHU_LOGIN_INFO_TIME); Map data = Maps.newHashMap(); data.put("token", token); data.put("member", keeperInfoVO); return Result.success(data); } public KeeperInfoVO refreshMember(String token) { if (StrUtil.isNotBlank(token) && redisUtil.hHasKey(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token)) { KeeperInfoVO oldMemberInfoVo = (KeeperInfoVO)redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token); CareSysUser member = careSysUserService.getById(oldMemberInfoVo.getId()); if (oldMemberInfoVo != null && member != null) { KeeperInfoVO memberInfoVO = new KeeperInfoVO(); BeanUtil.copyProperties(member,memberInfoVO); if(memberInfoVO.getStationId() != null) { memberInfoVO.setStationName(careStationService.getById(memberInfoVO.getStationId()).getName()); } //服务次数 QueryWrapper queryWrapper2 = new QueryWrapper<>(); queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,memberInfoVO.getId()).ne(CareEventOrderChamb::getStatus,"3"); memberInfoVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2)); //老人列表 List olderVOList = new ArrayList<>(); QueryWrapper queryWrapper0 = new QueryWrapper<>(); queryWrapper0.lambda().eq(CareDevice::getChambId,memberInfoVO.getId()); List listDev = this.careDeviceService.list(queryWrapper0); if(CollUtil.isNotEmpty(listDev)){ listDev.forEach(item -> { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,item.getHouseId()); List listRel = careHouseOlderRelService.list(queryWrapper); if(CollUtil.isNotEmpty(listRel)) { listRel.forEach(i->{ CareOlder careOlder = this.careOlderService.getById(i.getOlderId()); OlderVO olderVO = new OlderVO(); BeanUtil.copyProperties(careOlder,olderVO); olderVOList.add(olderVO); }); } }); } if(CollUtil.isNotEmpty(olderVOList)){ memberInfoVO.setOlderVOList(olderVOList); } redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.PINANSHOUHU_LOGIN_INFO_TIME); return memberInfoVO; } } return null; } }