From 3f847215a4875a7855b830013b337b6c082f4649 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Thu, 24 Aug 2023 22:10:58 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 184 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 146 insertions(+), 38 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 0f9e947..0fb793c 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 @@ -13,9 +13,7 @@ import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; -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.*; import cc.mrbird.febs.mall.vo.*; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.service.IXcxPayService; @@ -29,6 +27,7 @@ import cn.hutool.crypto.asymmetric.RSA; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -66,6 +65,10 @@ private final MallRegisterAppealMapper mallRegisterAppealMapper; private final MallTeamLeaderMapper mallTeamLeaderMapper; private final SpringContextHolder springContextHolder; + private final MallAgentRecordMapper mallAgentRecordMapper; + private final IMallMoneyFlowService mallMoneyFlowService; + private final IMallMemberCollectionService mallMemberCollectionService; + private final IMallMemberFootprintService mallMemberFootprintService; @Value("${spring.profiles.active}") @@ -196,7 +199,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 @@ -232,10 +237,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(StrUtil.isNotEmpty(mallMember.getReferrerId())){ + MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); + if (referMember != null) { + mallMemberVo.setReferrerName(referMember.getName()); + } } if (StrUtil.isNotBlank(mallMember.getTradePassword())) { @@ -247,23 +253,24 @@ mallMemberVo.setHasPayment(1); } -// DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel()); -// if (dic != null) { -// mallMemberVo.setLevelName(dic.getDescription()); -// } + LambdaQueryWrapper<MallMemberCollection> collectionQuery = new LambdaQueryWrapper<>(); + collectionQuery.eq(MallMemberCollection::getMemberId, id); + List<MallMemberCollection> collectionList = mallMemberCollectionService.list(collectionQuery); + mallMemberVo.setCollectionCnt(CollUtil.isNotEmpty(collectionList) ? collectionList.size() : 0); + + LambdaQueryWrapper<MallMemberFootprint> footprintQuery = new LambdaQueryWrapper<>(); + footprintQuery.eq(MallMemberFootprint::getMemberId, id); + List<MallMemberFootprint> footprintList = mallMemberFootprintService.list(footprintQuery); + mallMemberVo.setFootprintCnt(CollUtil.isNotEmpty(footprintList) ? footprintList.size() : 0); + + List<MallMember> mallMembers = this.baseMapper.selectByRefererId(mallMember.getInviteId()); + mallMemberVo.setChildCnt(CollUtil.isNotEmpty(mallMembers) ? mallMembers.size() : 0); + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); mallMemberVo.setBalance(wallet.getBalance()); - mallMemberVo.setScore(wallet.getScore()); - mallMemberVo.setPrizeScore(wallet.getPrizeScore()); - mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); - - //用户是否是团长 - List<MallTeamLeader> mallTeamLeaders = mallTeamLeaderMapper.selectListByMemberIdAndState(mallMember.getId(), MallTeamLeader.STATE_YES); - if(CollUtil.isNotEmpty(mallTeamLeaders)){ - mallMemberVo.setIsTeamLeader(1); - }else{ - mallMemberVo.setIsTeamLeader(2); - } +// mallMemberVo.setScore(wallet.getScore()); +// mallMemberVo.setPrizeScore(wallet.getPrizeScore()); +// mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); return new FebsResponse().success().data(mallMemberVo); } @@ -335,8 +342,8 @@ MyTeamVo myTeamVo = new MyTeamVo(); myTeamVo.setTeam(list); - myTeamVo.setMyAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 1)); - myTeamVo.setMyTeamAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 2)); + myTeamVo.setMyAchieve(this.mallOrderInfoMapper.selectAmountOrTeamAmount(mallMember.getInviteId(), 1)); + myTeamVo.setMyTeamAchieve(this.mallOrderInfoMapper.selectAmountOrTeamAmount(mallMember.getInviteId(), 2)); myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); return new FebsResponse().success().data(myTeamVo); } @@ -431,7 +438,7 @@ Long id = LoginUserUtil.getLoginUser().getId(); MallMember member = this.baseMapper.selectById(id); - member.setBindPhone(accountAndCodeDto.getAccount()); + member.setPhone(accountAndCodeDto.getAccount()); this.baseMapper.updateById(member); } @@ -439,15 +446,7 @@ public BigDecimal canMoney() { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); - BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); - - BigDecimal canMoney = wallet.getCommission(); - if (profit != null) { - if(canMoney.compareTo(BigDecimal.ZERO) > 0) { - canMoney = canMoney.subtract(profit); - } - } - return canMoney; + return wallet.getBalance().setScale(2,BigDecimal.ROUND_DOWN); } @Override @@ -594,6 +593,40 @@ mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); mallMember.setOpenId(openId); mallMember.setSessionKey(sessionKey); + + if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) { + MallMember member = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId()); + if (member != null) { + mallMember.setReferrerId(member.getInviteId()); + + //推荐人和推荐人链 + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getReferrerId(); + if (StrUtil.isBlank(parentMember.getReferrerId())) { + flag = true; + } + } + + if (StrUtil.isNotBlank(ids)) { + mallMember.setReferrerIds(ids); + } + } + } this.baseMapper.insert(mallMember); mallMember = this.baseMapper.selectMemberByOpenId(openId); @@ -619,8 +652,8 @@ } } String token = IdUtil.simpleUUID(); - redisUtils.set(token, JSONObject.toJSONString(mallMember), 360000); - redisUtils.set(redisKey, token, 360000); + 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()); @@ -651,7 +684,7 @@ if(StrUtil.isNotEmpty(avatarUrl)){ mallMember.setAvatar(avatarUrl); } - mallMember.setSex(apiXcxSaveInfoDto.getGender() == 1 ? "女" : "男"); +// mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); this.baseMapper.updateById(mallMember); return new FebsResponse().success(); } @@ -725,6 +758,9 @@ 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); @@ -743,6 +779,21 @@ 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 { @@ -750,6 +801,14 @@ } 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<>(); @@ -758,6 +817,55 @@ 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); + } + private String getXcxLoginUrl(String code) { String wechatLoginUrl =xcxProperties.getWecharLoginUrl(); return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code); -- Gitblit v1.9.1