|  |  | 
 |  |  | import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst; | 
 |  |  | import com.doumee.biz.zbom.model.zhongtai.ZTUserGetTokenRequest; | 
 |  |  | import com.doumee.biz.zbom.model.zhongtai.ZTUserInfoUpdateRequest; | 
 |  |  | import com.doumee.biz.zbom.model.zhongtai.response.ZTBaseResponse; | 
 |  |  | import com.doumee.biz.zbom.model.zhongtai.response.ZTUserGetTokenResponse; | 
 |  |  | import com.doumee.config.Jwt.JwtPayLoad; | 
 |  |  | import com.doumee.config.Jwt.JwtTokenUtil; | 
 |  |  | 
 |  |  | import com.doumee.core.utils.DateUtil; | 
 |  |  | import com.doumee.core.utils.Utils; | 
 |  |  | import com.doumee.core.wx.WxMiniConfig; | 
 |  |  | import com.doumee.dao.business.CustomerUserMapper; | 
 |  |  | import com.doumee.dao.business.MemberMapper; | 
 |  |  | import com.doumee.dao.business.UsersMapper; | 
 |  |  | import com.doumee.dao.business.model.CustomerUser; | 
 |  |  | import com.doumee.dao.business.model.InterfaceLog; | 
 |  |  | import com.doumee.dao.business.model.Member; | 
 |  |  | import com.doumee.dao.business.model.Users; | 
 |  |  | import com.doumee.dao.system.model.SystemDictData; | 
 |  |  | import com.doumee.dao.web.reqeust.EditMemberRequest; | 
 |  |  | import com.doumee.dao.web.reqeust.WxPhoneRequest; | 
 |  |  | import com.doumee.dao.web.response.AccountResponse; | 
 |  |  | import com.doumee.dao.web.response.ZTBaseInfoResponse; | 
 |  |  | import com.doumee.service.business.CustomerService; | 
 |  |  | import com.doumee.service.business.MemberService; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | 
 |  |  | import okhttp3.Response; | 
 |  |  | import org.apache.catalina.User; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.shiro.util.ThreadContext; | 
 |  |  | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private UsersMapper usersMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CustomerUserMapper customerUserMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员"); | 
 |  |  |             } | 
 |  |  |             Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId)); | 
 |  |  |             String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); | 
 |  |  |             if (member == null) { | 
 |  |  |                 member = new Member(); | 
 |  |  |                 member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4)); | 
 |  |  |                 member.setCreateDate(new Date()); | 
 |  |  |                 member.setIsdeleted(Constants.ZERO); | 
 |  |  |                 member.setOpenid(openId); | 
 |  |  |                 member.setType(Constants.ZERO); | 
 |  |  |                 member.setAuthStatus(Constants.ZERO); | 
 |  |  |         //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto); | 
 |  |  |         //        if(Objects.isNull(ztUserGetTokenResponse)){ | 
 |  |  |         //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); | 
 |  |  |         //        }else{ | 
 |  |  |         //            member.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  |         //        } | 
 |  |  |                 memberMapper.insert(member); | 
 |  |  |                 member =  this.getMemberInfo(member.getId()); | 
 |  |  |             }else{ | 
 |  |  |         //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto); | 
 |  |  |         //        if(Objects.isNull(ztUserGetTokenResponse)){ | 
 |  |  |         //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); | 
 |  |  |         //        }else{ | 
 |  |  |         //            member.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  |         //        } | 
 |  |  |                 member = this.getMemberInfo(member.getId()); | 
 |  |  |             } | 
 |  |  |             //创建token | 
 |  |  |             JwtPayLoad payLoad = new JwtPayLoad(member.getId(),Constants.ZERO); | 
 |  |  | 
 |  |  |         throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"更新手机号失败"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updMemberDetail(EditMemberRequest editMemberRequest){ | 
 |  |  |         Member member = memberMapper.selectById(editMemberRequest.getMemberId()); | 
 |  |  |     public Member updMemberDetail(EditMemberRequest editMemberRequest){ | 
 |  |  |         Member member = memberMapper.selectById(editMemberRequest.getId()); | 
 |  |  |         if(Objects.isNull(member)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |         } | 
 |  |  |         if(Objects.isNull(editMemberRequest)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |         } | 
 |  |  |         Member memberDto = new Member(); | 
 |  |  |         BeanUtils.copyProperties(editMemberRequest,memberDto); | 
 |  |  |         memberDto.setOpenid(member.getOpenid()); | 
 |  |  | //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto); | 
 |  |  | //        if(Objects.isNull(ztUserGetTokenResponse)){ | 
 |  |  | //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); | 
 |  |  | //        }else{ | 
 |  |  | //            member.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  | //        } | 
 |  |  |         memberMapper.updateById(memberDto); | 
 |  |  |         return this.getMemberInfo(member.getId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Member updMemberPhone(EditMemberRequest editMemberRequest){ | 
 |  |  |         if(Objects.isNull(editMemberRequest)||StringUtils.isBlank(editMemberRequest.getPhone())){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |         } | 
 |  |  |         Member member = memberMapper.selectById(editMemberRequest.getId()); | 
 |  |  |         if(Objects.isNull(member)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |         } | 
 |  |  |         Member memberDto = new Member(); | 
 |  |  |         BeanUtils.copyProperties(editMemberRequest,memberDto); | 
 |  |  |         memberDto.setOpenid(member.getOpenid()); | 
 |  |  | //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto); | 
 |  |  | //        if(Objects.isNull(ztUserGetTokenResponse)){ | 
 |  |  | //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); | 
 |  |  | //        }else{ | 
 |  |  | //            member.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  | //        } | 
 |  |  |         memberMapper.updateById(memberDto); | 
 |  |  |         return this.getMemberInfo(member.getId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public ZTUserGetTokenResponse syncZhongTaiUser(Member member){ | 
 |  |  |         ZTUserInfoUpdateRequest ztUserInfoUpdateRequest = new  ZTUserInfoUpdateRequest(); | 
 |  |  |         ztUserInfoUpdateRequest.setOpenId(member.getOpenid()); | 
 |  |  |         String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); | 
 |  |  |         ztUserInfoUpdateRequest.setAppId(appId); | 
 |  |  |         ztUserInfoUpdateRequest.setPlatform(Constants.PLATFORM); | 
 |  |  |         ztUserInfoUpdateRequest.setPhone(editMemberRequest.getPhone()); | 
 |  |  |         ztUserInfoUpdateRequest.setName(editMemberRequest.getName()); | 
 |  |  |         ztUserInfoUpdateRequest.setAddress(editMemberRequest.getProvinceName()+editMemberRequest.getCityName()+editMemberRequest.getAreaName()); | 
 |  |  |         ztUserInfoUpdateRequest.setFullAddress(editMemberRequest.getAddress()); | 
 |  |  |         ztUserInfoUpdateRequest.setPhone(member.getPhone()); | 
 |  |  |         ztUserInfoUpdateRequest.setName(member.getNickname()); | 
 |  |  |         ztUserInfoUpdateRequest.setAddress(member.getProvinceName()+member.getCityName()+member.getAreaName()); | 
 |  |  |         ztUserInfoUpdateRequest.setFullAddress(member.getAddress()); | 
 |  |  |         String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + | 
 |  |  |                 systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode(); | 
 |  |  |         if(StringUtils.isNotBlank(editMemberRequest.getImgurl())){ | 
 |  |  |             ztUserInfoUpdateRequest.setAvatarUrl(prefix + editMemberRequest.getImgurl()); | 
 |  |  |         if(StringUtils.isNotBlank(member.getImgurl())){ | 
 |  |  |             ztUserInfoUpdateRequest.setAvatarUrl(prefix + member.getImgurl()); | 
 |  |  |         } | 
 |  |  |         ztUserInfoUpdateRequest.setUptown(editMemberRequest.getDistrict()); | 
 |  |  |         ztUserInfoUpdateRequest.setHouseArea(editMemberRequest.getHousearea().toString()); | 
 |  |  |         ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(editMemberRequest.getHousetype())); | 
 |  |  |         ZTUserGetTokenResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); | 
 |  |  |         if(Objects.isNull(userUpdateInfo)){ | 
 |  |  |         ztUserInfoUpdateRequest.setUptown(member.getDistrict()); | 
 |  |  |         if(Objects.nonNull(member.getHousearea())){ | 
 |  |  |             ztUserInfoUpdateRequest.setHouseArea(member.getHousearea().toString()); | 
 |  |  |         } | 
 |  |  |         ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(member.getHousetype())); | 
 |  |  |         ZTBaseResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); | 
 |  |  |         if(Objects.isNull(userUpdateInfo)||userUpdateInfo.getCode()!=200){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台信息更新失败,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         memberMapper.update(new UpdateWrapper<Member>() | 
 |  |  |                 .lambda() | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getImgurl()),Member::getImgurl,editMemberRequest.getImgurl()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getName()),Member::getName,editMemberRequest.getName()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getPhone()),Member::getPhone,editMemberRequest.getPhone()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getProvinceName()),Member::getProvinceName,editMemberRequest.getProvinceName()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getProvinceCode()),Member::getProvinceCode,editMemberRequest.getProvinceCode()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getCityCode()),Member::getCityCode,editMemberRequest.getCityCode()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getCityName()),Member::getCityName,editMemberRequest.getCityName()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getAreaCode()),Member::getAreaCode,editMemberRequest.getAreaCode()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getAreaName()),Member::getAreaName,editMemberRequest.getAreaName()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getAddress()),Member::getAddress,editMemberRequest.getAddress()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getDistrict()),Member::getDistrict,editMemberRequest.getDistrict()) | 
 |  |  |                 .set(Objects.nonNull(editMemberRequest.getHousearea()),Member::getHousearea,editMemberRequest.getHousearea()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editMemberRequest.getHousetype()),Member::getHousetype,editMemberRequest.getHousetype()) | 
 |  |  |                 .set(Objects.nonNull(editMemberRequest.getLatitude()),Member::getLatitude,editMemberRequest.getLatitude()) | 
 |  |  |                 .set(Objects.nonNull(editMemberRequest.getLongitude()),Member::getLongitude,editMemberRequest.getLongitude()) | 
 |  |  |                 .set(Member::getToken,userUpdateInfo.getToken()) | 
 |  |  |                 .eq(Member::getId,editMemberRequest.getMemberId())); | 
 |  |  |         ZTUserGetTokenResponse ztUserGetTokenResponse = (ZTUserGetTokenResponse) userUpdateInfo.getData(); | 
 |  |  |         return ztUserGetTokenResponse; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Member getMemberInfo(Long memberId){ | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public static String getZTToken(ZbomZhongTaiService zbomZhongTaiService, MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, String id, String userType){ | 
 |  |  |     public static ZTBaseInfoResponse getZTToken(ZbomZhongTaiService zbomZhongTaiService, | 
 |  |  |                                                 MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, Long id, String userType){ | 
 |  |  |         ZTBaseInfoResponse ztBaseInfoResponse = new ZTBaseInfoResponse(); | 
 |  |  |         if(userType.equals(Constants.CUSTOMER)){ | 
 |  |  |             Member member = memberMapper.selectById(id); | 
 |  |  |             if(Objects.isNull(member)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |             } | 
 |  |  |             ztBaseInfoResponse.setUserType(Constants.CUSTOMER); | 
 |  |  |             ztBaseInfoResponse.setOpenId(member.getOpenid()); | 
 |  |  |             //如果无有效期/已过期 重新获取 | 
 |  |  |             if(Objects.isNull(member.getTokenDate()) || member.getTokenDate().getTime()<=System.currentTimeMillis() ){ | 
 |  |  |                 ZTUserGetTokenRequest param = new ZTUserGetTokenRequest(); | 
 |  |  | 
 |  |  |                     //TODO 暂无过期日期 | 
 |  |  |                     memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getToken,ztUserGetTokenResponse.getToken()) | 
 |  |  |                             .eq(Member::getId,member.getId())); | 
 |  |  |                     return ztUserGetTokenResponse.getToken(); | 
 |  |  |                     ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  |                     return ztBaseInfoResponse; | 
 |  |  |                 }else{ | 
 |  |  |                     throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return member.getToken(); | 
 |  |  |             ztBaseInfoResponse.setToken(member.getToken()); | 
 |  |  |             return ztBaseInfoResponse; | 
 |  |  |         }else if(userType.equals(Constants.BUSINESS)){ | 
 |  |  |             Users users = usersMapper.selectById(id); | 
 |  |  |             if(Objects.isNull(users)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |             } | 
 |  |  |             ztBaseInfoResponse.setUserType(Constants.BUSINESS); | 
 |  |  |             ztBaseInfoResponse.setOpenId(users.getOpenid()); | 
 |  |  |             if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){ | 
 |  |  |                 ZTUserGetTokenRequest param = new ZTUserGetTokenRequest(); | 
 |  |  |                 //查询APPID | 
 |  |  | 
 |  |  |                     //TODO 暂无过期日期 | 
 |  |  |                     usersMapper.update(new UpdateWrapper<Users>().lambda().set(Users::getToken,ztUserGetTokenResponse.getToken()) | 
 |  |  |                             .eq(Users::getId,users.getId())); | 
 |  |  |                     return ztUserGetTokenResponse.getToken(); | 
 |  |  |                     ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); | 
 |  |  |                     return ztBaseInfoResponse; | 
 |  |  |                 }else{ | 
 |  |  |                     throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return users.getToken(); | 
 |  |  |             ztBaseInfoResponse.setToken(users.getToken()); | 
 |  |  |             return ztBaseInfoResponse; | 
 |  |  |         }else{ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"参数错误"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已注销"); | 
 |  |  |         } | 
 |  |  |         //校验用户token信息 | 
 |  |  |         MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId().toString(),Constants.CUSTOMER); | 
 |  |  |         MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId(),Constants.CUSTOMER); | 
 |  |  |         //调起中台注销接口 | 
 |  |  |         ZTBaseRequst ztBaseRequst = new ZTBaseRequst(); | 
 |  |  |         ztBaseRequst.setUserType(Constants.CUSTOMER); | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updWxMiniToken(){ | 
 |  |  |         DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); | 
 |  |  |         ThreadContext.bind(manager); | 
 |  |  |         String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); | 
 |  |  |         String appSecret = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_SECRET_CUSTOMER).getCode(); | 
 |  |  |         //生成微信token | 
 |  |  |         String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret; | 
 |  |  |         String response = Constants.doGet(url,null); | 
 |  |  |         JSONObject json = JSONObject.parseObject(response); | 
 |  |  |         SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_TOKEN_CUSTOMER); | 
 |  |  |         systemDictData.setCode(json.getString("access_token")); | 
 |  |  |         systemDictData.setUpdateTime(new Date()); | 
 |  |  |         systemDictDataBiz.updateByIdNew(systemDictData); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |