From 69f81a0508373d1f71ad71fccd2a10beea5879b1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Wed, 24 Aug 2022 11:25:29 +0800 Subject: [PATCH] 20220822 --- src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java | 77 ++++++++++++++++++++++++++++++-------- 1 files changed, 61 insertions(+), 16 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java index af48ea8..43cb888 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java @@ -1,11 +1,18 @@ package cc.mrbird.febs.pay.controller; import cc.mrbird.febs.common.enumerates.AgentLevelEnum; +import cc.mrbird.febs.common.enumerates.FlowTypeEnum; +import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; -import cc.mrbird.febs.mall.entity.MallMember; -import cc.mrbird.febs.mall.entity.MallOrderInfo; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.MallGoodsMapper; +import cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.service.IApiMallMemberService; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.service.IMallAchieveService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.pay.model.UniPayCallBackDto; import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; @@ -19,7 +26,6 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; -import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -36,18 +42,28 @@ private IApiMallMemberService memberService; @Autowired private AgentProducer agentProducer; + @Autowired + private MallOrderInfoMapper mallOrderInfoMapper; + @Autowired + private MallGoodsMapper mallGoodsMapper; + @Autowired + private MallGoodsSkuMapper mallGoodsSkuMapper; + @Autowired + private IApiMallMemberWalletService memberWalletService; + @Autowired + private IMallAchieveService mallAchieveService; + @Autowired + private IMallMoneyFlowService mallMoneyFlowService; + @Autowired + private MallMemberMapper memberMapper; @GetMapping(value = "/unipayCallBack") public String unipayCallBack(HttpServletRequest request, UniPayCallBackDto uniPayCallBackDto){ - log.info("进入汇聚支付回调"); - String requestURI = request.getRequestURI(); - log.info("进入汇聚支付回调"+ JSONUtil.parseObj(uniPayCallBackDto)); String orderNo = uniPayCallBackDto.getR2_OrderNo(); BigDecimal orderAmount = new BigDecimal(uniPayCallBackDto.getR3_Amount()); String callBackState = uniPayCallBackDto.getR6_Status(); String payTradeNo = uniPayCallBackDto.getR7_TrxNo(); -// String output = java.net.URLDecoder.decode(requestURI, "UTF-8"); log.info("进入汇聚支付回调"+orderNo+";"+orderAmount+";"+payTradeNo+";"+callBackState); if("100".equals(callBackState) && StrUtil.isNotBlank(orderNo)){ @@ -55,13 +71,6 @@ if(ObjectUtil.isNotEmpty(orderInfo)){ Integer status = orderInfo.getStatus(); if(OrderStatusEnum.WAIT_PAY.getValue() == status){ -// BigDecimal amount = orderInfo.getAmount(); -// if(amount.compareTo(orderAmount) == 0){ - MallMember member = memberService.getById(orderInfo.getMemberId()); - if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) { - member.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); - memberService.updateById(member); - } orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayResult("1"); @@ -69,8 +78,44 @@ orderInfo.setPayTradeNo(payTradeNo); orderInfoMapper.updateById(orderInfo); - agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId()); -// } + boolean hasTc = false; + // 静态倍数 + List<MallOrderItem> orderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(orderInfo.getId()); + if (CollUtil.isNotEmpty(orderItems)) { + for (MallOrderItem orderItem : orderItems) { + MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); + BigDecimal score = BigDecimal.ZERO; + MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); + if (mallGoods.getIsNormal() == 2) { + hasTc = true; + score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt())); + // 普通商品也及时结算,不再10天结算 + } else { + score = sku.getPresentPrice(); + } + + if (score.compareTo(BigDecimal.ZERO) > 0) { + memberWalletService.add(score, orderInfo.getMemberId(), "score"); + mallMoneyFlowService.addMoneyFlow(orderInfo.getMemberId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + + // 添加业绩 + mallAchieveService.add(orderItem.getId()); + } + } + } + + // 购买套餐后,升级为普通会员 + MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId()); + if (hasTc) { + if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { + mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); + memberMapper.updateById(mallMember); + } + } + + mallMoneyFlowService.addMoneyFlow(mallMember.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + agentProducer.sendAutoLevelUpMsg(mallMember.getId()); + agentProducer.sendOrderReturn(orderInfo.getId()); } } } -- Gitblit v1.9.1