liukangdong
2024-07-23 4fc49f3f06e9bb6275045d32245469816b451a4c
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.hutool.core.date.DateUnit;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -34,6 +35,7 @@
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.EditUsersRequest;
import com.doumee.dao.web.reqeust.ContentShareImgDto;
import com.doumee.dao.web.reqeust.WxPhoneRequest;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.service.business.UsersService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -362,9 +364,10 @@
//        }
//        smsEmailMapper.updateById(model);
        //创建token
        JwtPayLoad payLoad = new JwtPayLoad(users.getId(),Constants.ONE);
        String token = JwtTokenUtil.generateToken(payLoad);
        redisTemplate.opsForValue().set(ZTConstants.BUSINESS+"_"+users.getId(),token);
//        JwtPayLoad payLoad = new JwtPayLoad(users.getId(),Constants.ONE);
//        String token = JwtTokenUtil.generateToken(payLoad);
//        redisTemplate.opsForValue().set(ZTConstants.BUSINESS+"_"+users.getId(),token);
        String token = JwtTokenUtil.generateTokenForZb(users.getId(),ZTConstants.BUSINESS,JSONObject.toJSON(users).toString(),redisTemplate);
        AccountResponse accountResponse = new AccountResponse();
        accountResponse.setToken(token);
        accountResponse.setUsers(users);
@@ -384,6 +387,7 @@
            accountResponse.setSessionKey(session.getSessionKey());
            Users users = usersMapper.selectOne(new QueryWrapper<Users>().lambda().eq(Users::getOpenid,openId).last("limit 1"));
            if(Objects.isNull(users)){
                accountResponse.setSessionKey(session.getSessionKey());
                return accountResponse;
            }
            if(!Constants.equalsInteger(users.getIsdeleted(),Constants.ZERO)){
@@ -395,11 +399,10 @@
            users.setOpenid(openId);
            usersMapper.updateById(users);
            //创建token
            JwtPayLoad payLoad = new JwtPayLoad(users.getId(),Constants.ONE);
            String token = JwtTokenUtil.generateToken(payLoad);
            redisTemplate.opsForValue().set(ZTConstants.BUSINESS+"_"+users.getId(),token);
            String token = JwtTokenUtil.generateTokenForZb(users.getId(),ZTConstants.BUSINESS,users.getId()+"",redisTemplate);
            accountResponse.setToken(token);
            getUsersDetail(users);
            accountResponse.setSessionKey(session.getSessionKey());
            accountResponse.setUsers(users);
            return accountResponse;
        } catch (WxErrorException e) {
@@ -407,6 +410,34 @@
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员");
    }
    @Override
    public AccountResponse getWxMiniPhoneLogin(WxPhoneRequest wxPhoneRequest){
        try {
            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxPersonnelService.getUserService().getPhoneNoInfo(
                    wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
            //获取手机号
            String phone= userPhoneInfo.getPurePhoneNumber();
            if(Objects.isNull(phone)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未获取到手机号");
            }
            Users users = usersMapper.selectOne(new QueryWrapper<Users>().lambda()
                    .eq(Users::getPhone,phone).last("limit 1"));
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setPhone(phone);
            if(Objects.isNull(users)){
                return accountResponse;
            }
            accountResponse.setUsers(users);
            String token = JwtTokenUtil.generateTokenForZb(users.getId(),ZTConstants.BUSINESS,users.getId()+"",redisTemplate);
            accountResponse.setToken(token);
            return accountResponse;
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"更新手机号失败");
    }
    @Override
@@ -836,13 +867,13 @@
    @Override
    public ZTBaseRequst logOff(Long userId){
    public ZTBaseRequst logOff(Long userId,String token){
        Users users = usersMapper.selectById(userId);
        if(Objects.isNull(users)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(StringUtils.isBlank(users.getOpenid())){
            redisTemplate.delete(ZTConstants.BUSINESS+"_"+ users.getId());
            redisTemplate.delete(token);
            return null;
        }
        //校验用户token信息