123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- 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<Object> 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<CareSysUser> 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<String,Object> 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<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,memberInfoVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
- memberInfoVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
- //老人列表
- List<OlderVO> olderVOList = new ArrayList<>();
- QueryWrapper<CareDevice> queryWrapper0 = new QueryWrapper<>();
- queryWrapper0.lambda().eq(CareDevice::getChambId,memberInfoVO.getId());
- List<CareDevice> listDev = this.careDeviceService.list(queryWrapper0);
- if(CollUtil.isNotEmpty(listDev)){
- listDev.forEach(item -> {
- QueryWrapper<CareHouseOlderRel> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,item.getHouseId());
- List<CareHouseOlderRel> 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;
- }
- }
|