From 2c614ef306783965e74881a6dee901acb6e0049e Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Wed, 26 Jul 2023 18:16:30 +0800 Subject: [PATCH] 组合支付 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 379 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 347 insertions(+), 32 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 2125d43..ed9d389 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.*; import cc.mrbird.febs.mall.conversion.MallMemberConversion; import cc.mrbird.febs.mall.conversion.MallShopApplyConversion; @@ -15,7 +16,11 @@ import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.ICommonService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.pay.model.BrandWCPayRequestData; +import cc.mrbird.febs.pay.service.IXcxPayService; +import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; @@ -24,6 +29,7 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -31,10 +37,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; import java.math.BigDecimal; import java.util.*; @@ -58,6 +66,11 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallShopApplyMapper mallShopApplyMapper; private final MallRegisterAppealMapper mallRegisterAppealMapper; + private final MallTeamLeaderMapper mallTeamLeaderMapper; + private final SpringContextHolder springContextHolder; + private final MallAgentRecordMapper mallAgentRecordMapper; + private final IMallMoneyFlowService mallMoneyFlowService; + private final AgentProducer agentProducer; @Value("${spring.profiles.active}") @@ -188,7 +201,9 @@ public String generateAsaToken(String token) { RSA rsa = new RSA(null, AppContants.PUBLIC_KEY); - return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey); +// return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey); + //去掉时间戳 + return rsa.encryptBase64(token, KeyType.PublicKey); } @Override @@ -213,7 +228,8 @@ @Override public FebsResponse logout() { Long id = LoginUserUtil.getLoginUser().getId(); - redisUtils.del(AppContants.APP_LOGIN_PREFIX + id); + redisUtils.del(AppContants.XCX_LOGIN_PREFIX + id); + redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + id); return new FebsResponse().success().message("退出登录"); } @@ -223,10 +239,11 @@ MallMember mallMember = this.baseMapper.selectById(id); MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember); - - MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); - if (referMember != null) { - mallMemberVo.setReferrerName(referMember.getName()); + if(mallMember.getReferrerId() != null && ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ + MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); + if (referMember != null) { + mallMemberVo.setReferrerName(referMember.getName()); + } } if (StrUtil.isNotBlank(mallMember.getTradePassword())) { @@ -238,15 +255,38 @@ mallMemberVo.setHasPayment(1); } - DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel()); - if (dic != null) { - mallMemberVo.setLevelName(dic.getDescription()); - } MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); mallMemberVo.setBalance(wallet.getBalance()); mallMemberVo.setScore(wallet.getScore()); mallMemberVo.setPrizeScore(wallet.getPrizeScore()); mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); + + //代理状态 + MallAgentRecord mallAgentRecordIng = mallAgentRecordMapper.selectByMemberIdAndState(id, MallAgentRecord.APPLY_ING); + MallAgentRecord mallAgentRecordAgree = mallAgentRecordMapper.selectByMemberIdAndState(id, MallAgentRecord.APPLY_AGREE); + MallAgentRecord mallAgentRecordDisagree = mallAgentRecordMapper.selectByMemberIdAndState(id, MallAgentRecord.APPLY_DISAGREE); + if(ObjectUtil.isNotEmpty(mallAgentRecordIng)){ + mallMemberVo.setIsAgent(1); + }else if(ObjectUtil.isNotEmpty(mallAgentRecordAgree)){ + mallMemberVo.setIsAgent(2); + if(StrUtil.isNotEmpty(mallAgentRecordAgree.getAgentLevel())){ + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("AGENT_LEVEL_APPLY", mallAgentRecordAgree.getAgentLevel()); + mallMemberVo.setAgentLevelName(dataDictionaryCustom.getDescription()); + } + if(AgentLevelEnum.LEVEL_ONE.name().equals(mallAgentRecordAgree.getAgentLevel())){ + mallMemberVo.setAgentLevel(1); + } + if(AgentLevelEnum.LEVEL_TWO.name().equals(mallAgentRecordAgree.getAgentLevel())){ + mallMemberVo.setAgentLevel(2); + } + if(AgentLevelEnum.LEVEL_THREE.name().equals(mallAgentRecordAgree.getAgentLevel())){ + mallMemberVo.setAgentLevel(3); + } + }else if(ObjectUtil.isNotEmpty(mallAgentRecordDisagree)){ + mallMemberVo.setIsAgent(3); + } +// log.info(mallMemberVo.getName()+"---"+mallMemberVo.getAgentLevel()); + return new FebsResponse().success().data(mallMemberVo); } @@ -315,23 +355,12 @@ MallMember mallMember = this.baseMapper.selectById(memberId); List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId()); -// BigDecimal ownAmount = this.baseMapper.selectOwnOrderAmountByInviteId(mallMember.getInviteId()); -// TeamListVo own = new TeamListVo(); -// own.setCreatedTime(mallMember.getCreatedTime()); -// own.setAmount(ownAmount); -// own.setName(mallMember.getName()); -// own.setPhone(mallMember.getPhone()); -// own.setInviteId(mallMember.getInviteId()); -// own.setIsCurrent(1); -// own.setCnt(this.baseMapper.selectOwnCntByInviteId(mallMember.getInviteId())); -// own.setOrderCnt(this.baseMapper.selectOwnOrderCntByInviteId(mallMember.getInviteId())); -// own.setId(mallMember.getId()); MyTeamVo myTeamVo = new MyTeamVo(); myTeamVo.setTeam(list); myTeamVo.setMyAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 1)); myTeamVo.setMyTeamAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 2)); - myTeamVo.setMyTeamCnt(list.size()); + myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); return new FebsResponse().success().data(myTeamVo); } @@ -425,7 +454,7 @@ Long id = LoginUserUtil.getLoginUser().getId(); MallMember member = this.baseMapper.selectById(id); - member.setBindPhone(accountAndCodeDto.getAccount()); + member.setPhone(accountAndCodeDto.getAccount()); this.baseMapper.updateById(member); } @@ -433,15 +462,7 @@ public BigDecimal canMoney() { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); - BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); - - BigDecimal canMoney = wallet.getBalance(); - if (profit != null) { - if(canMoney.compareTo(BigDecimal.ZERO) > 0) { - canMoney = canMoney.subtract(profit); - } - } - return canMoney; + return wallet.getBalance().setScale(2,BigDecimal.ROUND_DOWN); } @Override @@ -553,4 +574,298 @@ } return MallShopApplyConversion.INSTANCE.entitiesToVOs(list); } + + + private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); + + @Override + public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto) throws IOException { + FebsResponse febsResponse = new FebsResponse(); + String code = apiXcxLoginDto.getCode(); + log.info("code:" + code); + if (StrUtil.isNotBlank(code)) { + String requrl = getXcxLoginUrl(code); + String reslutData = HttpCurlUtil.sendGetHttp(requrl, null); + net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(reslutData); + log.info("微信登录获取到登录信息={}", json); + + if (json.containsKey("errcode")) { + log.info("微信登录获取到异常信息errcode"); + return febsResponse.fail().message("自动登录失败"); + } + + String openId = json.getString("openid"); + String accessToken = json.getString("access_token"); + log.info("openId={}", openId); + // 查询用户是否存在 + MallMember mallMember = this.baseMapper.selectMemberByOpenId(openId); + if (ObjectUtil.isEmpty(mallMember)) { + return febsResponse.fail().message("请先关注公众号"); + } + // 存放redis + String redisKey = AppContants.XCX_LOGIN_PREFIX + mallMember.getId(); + String existToken = redisUtils.getString(redisKey); + if (StrUtil.isNotBlank(existToken)) { + Object o = redisUtils.get(existToken); + if (ObjectUtil.isNotEmpty(o)) { + redisUtils.del(existToken); + } + } + String token = IdUtil.simpleUUID(); + redisUtils.set(token, JSONObject.toJSONString(mallMember), -1); + redisUtils.set(redisKey, token, -1); + Map<String, Object> authInfo = new HashMap<>(); + authInfo.put("token", token); + authInfo.put("appid", xcxProperties.getXcxAppid()); + authInfo.put("member", mallMember); + authInfo.put("rasToken", generateAsaToken(token)); + authInfo.put("accessToken",accessToken); + authInfo.put("openId",openId); + agentProducer.sendMemberInfoMsg(accessToken+"|"+openId); + febsResponse.success().data(authInfo); + } else { + return febsResponse.fail().message("自动登录失败"); + } + return febsResponse; + } + + @Override + public FebsResponse xcxSaveInfo(ApiXcxSaveInfoDto apiXcxSaveInfoDto) { + log.info("name={},phone={},avatar={},sex={}", + apiXcxSaveInfoDto.getNickName(),apiXcxSaveInfoDto.getPhone(),apiXcxSaveInfoDto.getAvatarUrl(),apiXcxSaveInfoDto.getGender()); + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + String nickName = apiXcxSaveInfoDto.getNickName(); + if(StrUtil.isNotEmpty(nickName)){ + mallMember.setName(nickName); + } + String phone = apiXcxSaveInfoDto.getPhone(); + if(StrUtil.isNotEmpty(phone)){ + mallMember.setPhone(phone); + } + String avatarUrl = apiXcxSaveInfoDto.getAvatarUrl(); + if(StrUtil.isNotEmpty(avatarUrl)){ + mallMember.setAvatar(avatarUrl); + } +// mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); + this.baseMapper.updateById(mallMember); + return new FebsResponse().success(); + } + + @Override + public FebsResponse xcxPhoneLogin(ApiXcxPhoneLoginDto apiXcxPhoneLoginDto) { + String phone = apiXcxPhoneLoginDto.getPhone(); + boolean flag = commonService.verifyCode(phone, apiXcxPhoneLoginDto.getCode()); + if (flag) { + // 查询用户是否存在 + MallMember mallMember = null; + synchronized (this) { + mallMember = this.baseMapper.selectInfoByAccount(apiXcxPhoneLoginDto.getPhone()); + if (ObjectUtil.isEmpty(mallMember)) { + // 新增用户 + mallMember = new MallMember(); + mallMember.setPhone(phone); + mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); + mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); + mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); + this.baseMapper.insert(mallMember); + + String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId()); + mallMember.setInviteId(inviteId); + this.baseMapper.updateById(mallMember); + MallMemberWallet wallet = new MallMemberWallet(); + wallet.setBalance(BigDecimal.ZERO); + wallet.setMemberId(mallMember.getId()); + mallMemberWalletMapper.insert(wallet); + } + } + // 存放redis + String redisKey = AppContants.XCX_LOGIN_PHONE_PREFIX + mallMember.getId(); + String existToken = redisUtils.getString(redisKey); + if (StrUtil.isNotBlank(existToken)) { + Object o = redisUtils.get(existToken); + if (ObjectUtil.isNotEmpty(o)) { + redisUtils.del(existToken); + } + } + String token = IdUtil.simpleUUID(); + redisUtils.set(token, JSONObject.toJSONString(mallMember), 360000); + redisUtils.set(redisKey, token, 360000); + Map<String, Object> authInfo = new HashMap<>(); + authInfo.put("token", token); + authInfo.put("member", mallMember); + authInfo.put("rasToken", generateAsaToken(token)); + return new FebsResponse().success().data(authInfo); + } + return new FebsResponse().fail().message("验证码错误"); + } + + @Override + public FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto) { + DataDictionaryCustom rangeSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode()); + if(StrUtil.isNotBlank(rangeSwitch.getValue()) && "1".equals(rangeSwitch.getValue())){ + if(ObjectUtil.isNull(apiXcxOpenDto.getLongitude()) || ObjectUtil.isNull(apiXcxOpenDto.getLatitude())){ + return new FebsResponse().fail().message("请授权位置信息"); + } + Double longitude = apiXcxOpenDto.getLongitude(); + Double latitude = apiXcxOpenDto.getLatitude(); + + DataDictionaryCustom rangeSize = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode()); + if(ObjectUtil.isEmpty(rangeSize)){ + return new FebsResponse().success().data(2); + } + if(StrUtil.isBlank(rangeSize.getValue())){ + return new FebsResponse().success().data(2); + } + //方位大小,换成单位:米 + Integer value = Integer.parseInt(rangeSize.getValue()) * 1000; + //根据经纬度获取周围团长的距离 + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByLonAndLat(longitude, latitude); + if(ObjectUtil.isEmpty(mallTeamLeader)){ + return new FebsResponse().success().data(2); + } + Double distance = mallTeamLeader.getDistance(); + if(value <= distance){ + return new FebsResponse().success().data(2); + } + } + return new FebsResponse().success().data(1); + } + + private final IXcxPayService iXcxPayService; + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse rechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + BigDecimal amount = apiRechargeWalletDto.getAmount(); + if(BigDecimal.ZERO.compareTo(amount)>0){ + return new FebsResponse().fail().message("请输入正确的充值金额"); + } + Integer type = apiRechargeWalletDto.getType(); + if(2 == type){ + //成为合伙人的充值金额 + MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(apiRechargeWalletDto.getAgentApplyId()); + BigDecimal agentPrice = mallAgentRecord.getAmount(); +// DataDictionaryCustom agentPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PRICE_AMOUNT.getType(), +// DataDictionaryEnum.PRICE_AMOUNT.getCode()); +// String agentPrice = agentPriceDic.getValue(); +// BigDecimal price = new BigDecimal(agentPrice); + if(agentPrice.compareTo(amount) != 0){ + return new FebsResponse().fail().message("成为合伙人的金额为"+agentPrice); + } + } + String rechargeNo = "CZ_"+MallUtils.getOrderNum(); + apiRechargeWalletDto.setRechargeNo(rechargeNo); + apiRechargeWalletDto.setMemberId(memberId); + BrandWCPayRequestData brandWCPayRequestData = null; + try { + brandWCPayRequestData = iXcxPayService.startRechargeWallet(apiRechargeWalletDto); + } catch (Exception e) { + throw new FebsException("支付失败"); + } + mallMoneyFlowService.addMoneyFlow( + memberId, + amount, + MoneyFlowTypeEnum.RECHARGE.getValue(), + rechargeNo, + FlowTypeEnum.BALANCE.getValue(), + "余额充值",1); + + String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData); + String payResultStr = brandWCPayRequestData.getPrepay_id(); + Map<String, Object> map = new HashMap<>(); + map.put("orderInfo", payResultStr); + map.put("wxResultStr", wxResultStr); + return new FebsResponse().success().data(map).message("充值即将到账"); + } + + @Override + public void updateMemberAgent(Long memberId,String levelCode) { + mallAgentRecordMapper.updateStateByMemberId(memberId); + MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(memberId); + //更新用户表中的LEVEL + MallMember mallMember = this.baseMapper.selectById(mallAgentRecord.getMemberId()); + mallMember.setLevel(levelCode); + this.baseMapper.updateById(mallMember); + } + + @Override + public FebsResponse agentDetail() { + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.AGENT_DETAILS.getType(), DataDictionaryEnum.AGENT_DETAILS.getCode()); + Map<String, Object> map = new HashMap<>(); + if(ObjectUtil.isNotEmpty(dataDictionaryCustom)){ + map.put("agentDetail", dataDictionaryCustom.getValue()); + } + return new FebsResponse().success().data(map); + } + + @Override + public FebsResponse activityInfo() { + DataDictionaryCustom activityBulletinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.ACTIVITY_BULLETIN.getType(), DataDictionaryEnum.ACTIVITY_BULLETIN.getCode()); + DataDictionaryCustom giveAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.GIVE_AMOUNT.getType(), DataDictionaryEnum.GIVE_AMOUNT.getCode()); + DataDictionaryCustom giveStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.GIVE_STATE.getType(), DataDictionaryEnum.GIVE_STATE.getCode()); + Map<String, Object> map = new HashMap<>(); + if(ObjectUtil.isNotEmpty(activityBulletinDic)){ + map.put("activityBulletin", + ObjectUtil.isEmpty(activityBulletinDic.getValue()) ? "暂无活动" : activityBulletinDic.getValue()); + } + if(ObjectUtil.isNotEmpty(giveAmountDic)){ + map.put("giveAmount", + ObjectUtil.isEmpty(giveAmountDic.getValue()) ? 0 : giveAmountDic.getValue()); + } + map.put("giveState",giveStateDic.getValue()); + return new FebsResponse().success().data(map); + } + + @Override + public FebsResponse agentApplyInfo() { + Long memberId = LoginUserUtil.getLoginUser().getId(); + ApiMallAgentRecordVo apiMallAgentRecordVo = mallAgentRecordMapper.selectApiMallAgentRecordVoByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING); + return new FebsResponse().success().data(apiMallAgentRecordVo); + } + + @Override + public FebsResponse findMallRollPerkInPage(ApiMallRollPerkDto queryDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Page<MallRollPerk> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); + MallRollPerk mallRollPerk = new MallRollPerk(); + if(ObjectUtil.isNotEmpty(queryDto.getState())){ + mallRollPerk.setState(queryDto.getState()); + } + mallRollPerk.setRollId(queryDto.getRollId()); + mallRollPerk.setMemberId(memberId); + IPage<MallRollPerk> mallGoodsCommentVoIPage = this.baseMapper.findMallRollPerkInPage(page,mallRollPerk); + return new FebsResponse().success().data(mallGoodsCommentVoIPage); + } + + @Override + public FebsResponse findMallMemberClassInPage(ApiMemberClassDto queryDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMemberClass mallMemberClass = new MallMemberClass(); + Page<MallMemberClass> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); + mallMemberClass.setMemberId(memberId); + IPage<MallMemberClass> mallMemberClassList = this.baseMapper.findMallMemberClassInPage(page,mallMemberClass); + return new FebsResponse().success().data(mallMemberClassList); + } + + @Override + public FebsResponse findMallMemberHouseInPage(ApiMemberHouseDto queryDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMemberHouse mallMemberHouse = new MallMemberHouse(); + Page<MallMemberHouse> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); + mallMemberHouse.setMemberId(memberId); + mallMemberHouse.setState(queryDto.getState()); + IPage<MallMemberHouse> mallMemberHouseList = this.baseMapper.findMallMemberHouseInPage(page,mallMemberHouse); + return new FebsResponse().success().data(mallMemberHouseList); + } + + private String getXcxLoginUrl(String code) { + String wechatLoginUrl =xcxProperties.getWecharLoginUrl(); + return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code); + } } -- Gitblit v1.9.1