aa
jiangping
2024-08-02 8ce648f125a026ef9d7272ddcc46ceb0e59d809b
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -291,23 +291,31 @@
                member.setOpenid(openId);
                member.setType(Constants.ZERO);
                //如果绑定了导购 则直接使用已绑定导购信息 跳过手机号绑定的状态
                if(Objects.nonNull(users)){
                    member.setAuthStatus(Constants.TWO);
                }else{
                    member.setAuthStatus(Constants.ZERO);
                }
//                if(Objects.nonNull(users)){
//                    member.setAuthStatus(Constants.TWO);
//                }else{
//                    member.setAuthStatus(Constants.ZERO);
//                }
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
                    MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,null,users,member);
                }
                memberMapper.insert(member);
                MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,users,member);
            }else{
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
                    Member update = new Member();
                    update.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
                    update.setToken(member.getToken());
                    update.setId(member.getId());
                    update.setAuthStatus(member.getAuthStatus());
                    MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,null,users,member);
                    memberMapper.updateById(update);//缓存中台token信息
                }
                MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,users,member);
                member = this.getMemberInfo(member.getId());
            }
            String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate);
@@ -340,12 +348,14 @@
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
                }
                memberMapper.insert(member);
            }else{
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
                    memberMapper.updateById(member);
                }
                member = this.getMemberInfo(member.getId());
@@ -416,7 +426,7 @@
//    }
    public static void saveCustomerUser(ZbomZhongTaiService zbomZhongTaiService, CustomerUserMapper customerUserMapper, Users users, Member member) {
    public static void saveCustomerUser(ZbomZhongTaiService zbomZhongTaiService, CustomerUserMapper customerUserMapper, MemberMapper memberMapper,Users users, Member member) {
        if (Objects.nonNull(users) && Objects.nonNull(member.getId())) {
            CustomerUser customerUser = customerUserMapper.selectOne(new QueryWrapper<CustomerUser>().lambda()
                    .eq(CustomerUser::getIsdeleted, Constants.ZERO)
@@ -437,45 +447,37 @@
                customerUser.setUsername(users.getIamUsername());
                customerUser.setAddr(users.getShopAddress());
            }
            ZTBaseResponse ztBaseResponse = null;
            if ( !Constants.equalsInteger(customerUser.getZtStatus(),Constants.ONE)) {
                ztBaseResponse  = syncZtCustomerUserSendRequest(zbomZhongTaiService,memberMapper,member, users,customerUser);
            }
            //未绑定过
            if (Objects.isNull(customerUser.getId())) {
                ZTBaseResponse ztBaseResponse = MemberServiceImpl.syncZtCustomerUser(zbomZhongTaiService,member, users);
                if (Objects.nonNull(ztBaseResponse)) {
                    if (ztBaseResponse.getSuccess()) {
                        customerUser.setZtStatus(1);
                        customerUser.setZtDate(new Date());
                    } else {
                        customerUser.setZtStatus(2);
                        customerUser.setZtDate(new Date());
                        customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse));
                    }
                } else {
                    customerUser.setZtStatus(2);
                    customerUser.setZtDate(new Date());
                    customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse));
                }
                customerUserMapper.insert(customerUser);
            } else {
                if (!Constants.equalsInteger(customerUser.getZtStatus(),Constants.ONE)) {
                    ZTBaseResponse ztBaseResponse = MemberServiceImpl.syncZtCustomerUser(zbomZhongTaiService,member, users);
                    if (Objects.nonNull(ztBaseResponse)) {
                        if (ztBaseResponse.getSuccess()) {
                            customerUser.setZtStatus(1);
                            customerUser.setZtDate(new Date());
                        } else {
                            customerUser.setZtStatus(2);
                            customerUser.setZtDate(new Date());
                            customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse));
                        }
                    } else {
                        customerUser.setZtStatus(2);
                        customerUser.setZtDate(new Date());
                        customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse));
                    }
            } else if(ztBaseResponse !=null) {
                    customerUserMapper.updateById(customerUser);
                }
            }
        }
    private static ZTBaseResponse syncZtCustomerUserSendRequest(ZbomZhongTaiService zbomZhongTaiService,MemberMapper memberMapper, Member member, Users users,CustomerUser customerUser) {
        ZTBaseResponse ztBaseResponse = MemberServiceImpl.syncZtCustomerUser(zbomZhongTaiService,member, users);
        customerUser.setZtStatus(2);
        customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse));
        if (Objects.nonNull(ztBaseResponse) && ztBaseResponse.getSuccess()) {
            customerUser.setZtStatus(1);//同步成功
            member.setAuthStatus(Constants.TWO);//用户导购绑定状态
            if(memberMapper!=null){
                //如果需要更新用户绑定导购状态
                Member update = new Member();
                update.setAuthStatus(Constants.TWO);
                update.setEditDate(new Date());
                update.setId(member.getId());
                memberMapper.updateById(update);//更新用户同步状态
            }
        }
        return ztBaseResponse;
    }
@@ -530,12 +532,13 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        BeanUtils.copyProperties(editMemberRequest,member);
        memberMapper.updateById(member);
        //同步中台用户信息
        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
        if(!Objects.isNull(ztUserGetTokenResponse)){
            member.setToken(ztUserGetTokenResponse.getToken());
            member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
        }
        memberMapper.updateById(member);
        return this.getMemberInfo(member.getId());
    }
@@ -556,12 +559,13 @@
        Member memberDto = new Member();
        BeanUtils.copyProperties(editMemberRequest,memberDto);
        memberDto.setOpenid(member.getOpenid());
//        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
//        if(Objects.isNull(ztUserGetTokenResponse)){
        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
        if(Objects.isNull(ztUserGetTokenResponse)){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
//        }else{
//            member.setToken(ztUserGetTokenResponse.getToken());
//        }
        }else{
            member.setToken(ztUserGetTokenResponse.getToken());
            member.setToken(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()));
        }
        memberMapper.updateById(memberDto);
        return this.getMemberInfo(member.getId());
    }
@@ -633,7 +637,7 @@
        String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode();
        member.setPrefix(prefix);
        if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>()
       /* if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>()
                .lambda().eq(CustomerUser::getIsdeleted,Constants.ZERO).eq(CustomerUser::getZtStatus,Constants.ONE).eq(CustomerUser::getMemberId,member.getId()))>0){
            member.setAuthStatus(Constants.TWO);
        }else{
@@ -642,7 +646,7 @@
            }else{
                member.setAuthStatus(Constants.ONE);
            }
        }
        }*/
       return member;
    }
@@ -660,19 +664,27 @@
            ztBaseInfoResponse.setUserType(ZTConstants.CUSTOMER);
            ztBaseInfoResponse.setOpenId(member.getOpenid());
            //如果无有效期/已过期 重新获取
            if(Objects.isNull(member.getTokenDate()) || member.getTokenDate().getTime()<=System.currentTimeMillis() ){
            if(Objects.isNull(member.getZtUserId()) ||Objects.isNull(member.getTokenDate()) || member.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(member.getOpenid());
                ZTUserGetTokenResponse ztUserGetTokenResponse = syncZhongTaiUserNew(member,systemDictDataBiz,zbomZhongTaiService);
//                ZTUserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param);
                ZTUserGetTokenResponse ztUserGetTokenResponse =null;
                if(StringUtils.isNotBlank(member.getZtUserId())){
                    //如果是已同步的用户
                    ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param);
                }
                if(ztUserGetTokenResponse == null){
                    //如果获取失败,尝试重新同步重新获取
                    ztUserGetTokenResponse = syncZhongTaiUserNew(member,systemDictDataBiz,zbomZhongTaiService);
                }
                if(Objects.nonNull(ztUserGetTokenResponse)){
//                    Date date =new Date(System.currentTimeMillis()+(Constants.formatLongNum(ztUserGetTokenResponse.getExpire())<=0?2*60*60*1000:ztUserGetTokenResponse.getExpire()*1000));
                    member.setToken(ztUserGetTokenResponse.getToken());
                    memberMapper.update(new UpdateWrapper<Member>().lambda()
                            .set(Member::getToken,ztUserGetTokenResponse.getToken())
                            .set(Member::getZtUserId,StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken()))
//                            .set(Member::getTokenDate,date)//默认有效期为两小时
                            .eq(Member::getId,member.getId()));
                    ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken());