k94314517
2024-07-25 a75b18a4157ab486e0b51c438ac165ab3a08e3e0
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2,6 +2,7 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -266,7 +267,7 @@
    @Override
    public AccountResponse wxLogin(String code,String iamId){
    public AccountResponse wxLogin(String code,String userId){
        try {
//            获取微信敏感数据
            WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code);
@@ -277,11 +278,8 @@
//            String openId = code;
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).isNotNull("phone"));
            Users users = new Users();
            if(StringUtils.isBlank(iamId)){
                users = usersMapper.selectOne(new QueryWrapper<Users>().lambda()
                        .eq(Users::getIamId,iamId)
                        .last("limit 1")
                );
            if(StringUtils.isNotBlank(userId)){
                users = usersMapper.selectById(userId);
            }
            if (member == null) {
                member = new Member();
@@ -297,26 +295,21 @@
                    member.setAuthStatus(Constants.ZERO);
                }
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(Objects.isNull(ztUserGetTokenResponse)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
                }else{
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                }
                memberMapper.insert(member);
                this.saveCustomerUser(users,member.getId());
                MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId());
            }else{
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    memberMapper.updateById(member);
                }
                this.saveCustomerUser(users,member.getId());
                MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId());
                member = this.getMemberInfo(member.getId());
            }
            //创建token
            JwtPayLoad payLoad = new JwtPayLoad(member.getId(),Constants.ZERO);
            String token = JwtTokenUtil.generateToken(payLoad);
            redisTemplate.opsForValue().set(ZTConstants.CUSTOMER+"_"+member.getId(),token);
            String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(token);
            accountResponse.setSessionKey(session.getSessionKey());
@@ -328,25 +321,24 @@
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员");
    }
    public void saveCustomerUser(Users users,Long memberId){
        if(!(Objects.nonNull(users)&&Objects.nonNull(memberId))){
            return;
        }
        if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda()
                        .eq(CustomerUser::getIsdeleted,Constants.ZERO)
                .eq(CustomerUser::getUserId,users.getId())
                .eq(CustomerUser::getMemberId,memberId)) <= Constants.ZERO ){
            CustomerUser customerUser = new CustomerUser();
            customerUser.setUserId(users.getId());
            customerUser.setCreateDate(new Date());
            customerUser.setMemberId(memberId);
            customerUser.setPhone(users.getPhone());
            customerUser.setIamUserId(users.getIamId());
            customerUser.setName(users.getName());
            customerUser.setUsername(users.getIamUsername());
            customerUser.setAddr(users.getShopAddress());
            customerUserMapper.insert(customerUser);
            //TODO 等待调起中台接口
    public static void saveCustomerUser(CustomerUserMapper customerUserMapper,Users users,Long memberId){
        if(Objects.nonNull(users)&&Objects.nonNull(memberId)) {
            if (customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda()
                    .eq(CustomerUser::getIsdeleted, Constants.ZERO)
                    .eq(CustomerUser::getUserId, users.getId())
                    .eq(CustomerUser::getMemberId, memberId)) <= Constants.ZERO) {
                CustomerUser customerUser = new CustomerUser();
                customerUser.setUserId(users.getId());
                customerUser.setCreateDate(new Date());
                customerUser.setMemberId(memberId);
                customerUser.setPhone(users.getPhone());
                customerUser.setIamUserId(users.getIamId());
                customerUser.setName(users.getName());
                customerUser.setUsername(users.getIamUsername());
                customerUser.setAddr(users.getShopAddress());
                customerUserMapper.insert(customerUser);
                //TODO 等待调起中台接口
            }
        }
    }
@@ -494,8 +486,6 @@
//                            .set(Member::getTokenDate,date)//默认有效期为两小时
                            .eq(Member::getId,member.getId()));
                    ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken());
                }else{
//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员");
                }
            }
            ztBaseInfoResponse.setToken(member.getToken());
@@ -508,11 +498,6 @@
            ztBaseInfoResponse.setUserType(ZTConstants.BUSINESS);
            ztBaseInfoResponse.setOpenId(users.getOpenid());
            if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){
                ZTUserGetTokenRequest param = new ZTUserGetTokenRequest();
                //查询APPID
                String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode();
                param.setAppId(appId);
                param.setOpenId(users.getOpenid());
                ZTSysuserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getSysuserToken(users.getPhone());
                if(Objects.nonNull(ztUserGetTokenResponse)){
                    users.setToken(ztUserGetTokenResponse.getToken());
@@ -522,28 +507,19 @@
                            .eq(Users::getId,users.getId()));
                    ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken());
                    return ztBaseInfoResponse;
                }else{
//                   throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员");
                }
            }
            ztBaseInfoResponse.setToken(users.getToken());
//            return ztBaseInfoResponse;
        }else{
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"参数错误");
        }
        return  ztBaseInfoResponse;
    }
    @Override
    public ZTBaseRequst logOff(Long memberId){
    public ZTBaseRequst logOff(Long memberId,String token){
        Member member = memberMapper.selectById(memberId);
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(StringUtils.isBlank(member.getPhone())){
            redisTemplate.delete(ZTConstants.CUSTOMER+"_"+ member.getId());
           return null;
        }
        //校验用户token信息
        MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId(),ZTConstants.CUSTOMER);
@@ -556,9 +532,9 @@
                .set(Member::getOpenid,null)
                .set(Member::getPhone,null)
                .set(Member::getEditDate,new Date())
                .eq(Member::getId,member.getId())
                .eq(Member::getOpenid,member.getOpenid())
        );
        redisTemplate.delete(ZTConstants.CUSTOMER+"_"+ member.getId());
        redisTemplate.delete(token);
        return ztBaseRequst;
    }