| | |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.common.utils.SpringContextHolder; |
| | | import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto; |
| | | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.mall.entity.MallMemberWallet; |
| | | import cc.mrbird.febs.mall.entity.MallMoneyFlow; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.pay.model.NotifyData; |
| | |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | |
| | | MallOrderInfoMapper mallOrderInfoMapper; |
| | | @Autowired |
| | | MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | @Autowired |
| | | MallOrderItemMapper mallOrderItemMapper; |
| | | @Autowired |
| | | MallGoodsMapper mallGoodsMapper; |
| | | @Autowired |
| | | MallGoodsSkuMapper mallGoodsSkuMapper; |
| | | @Autowired |
| | | MallMemberWalletMapper mallMemberWalletMapper; |
| | | @Autowired |
| | |
| | | BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2, |
| | | RoundingMode.HALF_UP); |
| | | |
| | | |
| | | log.info("订单支付状态---status:{}", order.getStatus()); |
| | | if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) { |
| | | log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount()); |
| | | order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); |
| | | log.info("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount()); |
| | | // order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); |
| | | order.setStatus(OrderStatusEnum.FINISH.getValue()); |
| | | order.setPayResult(1); |
| | | order.setPayTime(new Date()); |
| | | order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); |
| | | order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); |
| | | mallOrderInfoMapper.updateById(order); |
| | | Long memberId = order.getMemberId(); |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | if(ObjectUtil.isNotEmpty(mallMemberWallet)){ |
| | | |
| | | log.info("订单支付用户钱包---mallMemberWallet:{},{}", mallMemberWallet.getBalance(),mallMemberWallet.getScore()); |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(order.getId()); |
| | | if(ObjectUtil.isNotEmpty(mallOrderItemList)){ |
| | | /** |
| | | * 会员增加积分 |
| | | * (现价-成本价)/现价*支付的金额 = 这个商品可以得到的积分 |
| | | * 然后累加得到总增加的积分数量 |
| | | */ |
| | | BigDecimal totalScoreAdd = BigDecimal.ZERO; |
| | | for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | Long skuId = mallOrderItem.getSkuId(); |
| | | MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId); |
| | | if(ObjectUtil.isEmpty(mallGoodsSku)){ |
| | | continue; |
| | | } |
| | | BigDecimal presentPrice = mallGoodsSku.getPresentPrice(); |
| | | BigDecimal costPrice = mallGoodsSku.getCostPrice(); |
| | | BigDecimal subtractPrice = presentPrice.subtract(costPrice);//现价和成本价之间的差价 |
| | | if(subtractPrice.compareTo(BigDecimal.ZERO) <= 0){ |
| | | continue; |
| | | } |
| | | BigDecimal multiply = subtractPrice.divide(presentPrice, 2, BigDecimal.ROUND_DOWN).multiply(mallOrderItem.getAmount()); |
| | | totalScoreAdd = totalScoreAdd.add(multiply); |
| | | } |
| | | |
| | | |
| | | log.info("订单支付加积分---totalScoreAdd:{}", totalScoreAdd); |
| | | if(totalScoreAdd.compareTo(BigDecimal.ZERO) <= 0){ |
| | | return; |
| | | } |
| | | BigDecimal bigDecimal = totalScoreAdd.add(mallMemberWallet.getScore()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | mallMemberWallet.setScore(bigDecimal); |
| | | mallMemberWallet.setBalance(mallMemberWallet.getBalance()); |
| | | mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet); |
| | | } |
| | | } |
| | | |
| | | threadResult.success().message("支付成功"); |
| | | |
| | | |
| | | } else { |
| | | log.info("订单状态不为待付款,order status=", order.getStatus()); |
| | | } |