From 6edbf12f8d6fc4d8da1161b77ea9703ecb3b0f64 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 20 Jul 2023 14:44:57 +0800 Subject: [PATCH] 支付返利,微信余额支付会有返利。发卷,赠送积分逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 81 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 75 insertions(+), 6 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index ab34249..709dec4 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.enumerates.AgentLevelEnum; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; @@ -50,6 +51,11 @@ private final MallMemberMapper memberMapper; private final MallMemberWalletMapper mallMemberWalletMapper; private final RestTemplate restTemplate; + private final MallOrderInfoMapper mallOrderInfoMapper; + private final MallOrderItemMapper mallOrderItemMapper; + private final MallGoodsMapper mallGoodsMapper; + private final IApiMallMemberWalletService memberWalletService; + private final MallRollPerkMapper mallRollPerkMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -297,11 +303,9 @@ String accessToken = split[0]; String openId = split[1]; MallMember mallMember = memberMapper.selectMemberByOpenId(openId); - if (ObjectUtil.isNotEmpty(mallMember)) { + if (ObjectUtil.isEmpty(mallMember)) { return; } - log.info("收到accessToken:{}", accessToken); - log.info("收到openId:{}", openId); String requrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN"; // 创建一个StringHttpMessageConverter,并设置字符集为UTF-8 @@ -324,15 +328,80 @@ } String nickname = json.getString("nickname"); String headImgUrl = json.getString("headimgurl"); - log.info("收到nickname:{}", nickname); - log.info("收到headImgUrl:{}", headImgUrl); - mallMember.setName(nickname); mallMember.setAvatar(headImgUrl); memberMapper.updateById(mallMember); return; } + + @Override + public void orderGetMsg(String str) { + /** + * String str : orderId@amount + */ + String[] split = StrUtil.split(str, "@"); + String orderId = split[0]; + String amount = split[1]; + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId); + if(ObjectUtil.isEmpty(mallOrderInfo)){ + return; + } + Long memberId = mallOrderInfo.getMemberId(); + MallMember mallMember = memberMapper.selectById(memberId); + + + List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId()); + if(CollUtil.isEmpty(mallOrderItemList)){ + return; + } + + /** + * 支付后同意验证 + * 1:是否送券 + * 2:是否送积分 + * 3:是否返利 + */ + //是否返利 + BigDecimal amountBigDecimal = new BigDecimal(StrUtil.isEmpty(amount) ? "0" : amount); + if(BigDecimal.ZERO.compareTo(amountBigDecimal) < 0){ + if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ + String referrerId = mallMember.getReferrerId(); + MallMember mallMemberParent = memberMapper.selectInfoByInviteId(referrerId); + Long id = mallMemberParent.getId(); + DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(), + DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode() + ); + String returnPercentStr = StrUtil.isNotEmpty(returnPercentDic.getValue()) ? "1" : returnPercentDic.getValue(); + BigDecimal returnPercent = new BigDecimal(returnPercentStr).divide(new BigDecimal(100), 2, BigDecimal.ROUND_DOWN); + BigDecimal amountActual = amountBigDecimal.multiply(returnPercent).setScale(2, BigDecimal.ROUND_DOWN); + memberWalletService.add(amountActual, id, "balance"); + } + } + for(MallOrderItem mallOrderItem : mallOrderItemList){ + Long goodsId = mallOrderItem.getGoodsId(); + MallGoods mallGoods = mallGoodsMapper.selectById(goodsId); + if(ObjectUtil.isEmpty(mallGoods)){ + break; + } + //是否送券 1:是 2:否 + BigDecimal levelTwoPrice = mallGoods.getLevelTwoPrice(); + if(BigDecimal.ONE.compareTo(levelTwoPrice) == 0){ + MallRollPerk mallRollPerk = new MallRollPerk(); + mallRollPerk.setMemberId(memberId); + mallRollPerk.setState(1); + mallRollPerk.setRollId(Long.parseLong(mallGoods.getLevelThreePrice().toString())); + mallRollPerkMapper.insert(mallRollPerk); + } + //赠送积分 + BigDecimal levelOnePrice = mallGoods.getLevelOnePrice(); + if(BigDecimal.ZERO.compareTo(levelOnePrice) <= 0){ + memberWalletService.add(levelOnePrice, memberId, "score"); + } + } + } + public static void main(String[] args) { RestTemplate restTemplate = new RestTemplate(); -- Gitblit v1.9.1