From 4167e073ef07c3480642d13437ba522c2c22e653 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 26 Jul 2023 17:30:38 +0800
Subject: [PATCH] 组合支付
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 7d869e2..894bc7c 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -400,6 +400,110 @@
mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.ROLL_PAY.getValue(),
orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
break;
+ /**
+ * 余额加微信
+ */
+ case "2,1":
+ MallMemberWallet mallMemberWalletThree = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+ BigDecimal balanceThree = mallMemberWalletThree.getBalance();
+ BigDecimal amountThree = orderInfo.getAmount();
+
+ int reduceThree = memberWalletService.reduce(balanceThree, member.getId(), "balance");
+ if (reduceThree == 2) {
+ throw new FebsException("余额不足");
+ }
+ mallMoneyFlowService.addMoneyFlow(member.getId(), balanceThree.negate(), MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+
+ //实际支付余额
+ BigDecimal amountActualThree = amountThree.subtract(balanceThree).setScale(2, BigDecimal.ROUND_DOWN);
+ orderInfo.setAmount(amountActualThree);
+
+ BrandWCPayRequestData brandWCPayRequestDataThree = null;
+ try {
+ brandWCPayRequestDataThree = iXcxPayService.startPayment(orderInfo);
+ } catch (Exception e) {
+ throw new FebsException("支付失败");
+ }
+ wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestDataThree);
+ payResultStr = brandWCPayRequestDataThree.getPrepay_id();
+ orderInfo.setPayMethod("微信支付");
+ amountActualMsg = amountThree.toString();
+ break;
+ /**
+ * 积分加余额
+ */
+ case "3,2":
+ /**
+ * 获取用户的当前积分
+ */
+ MallMemberWallet mallMemberWalletNOne = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+ BigDecimal scoreOne = mallMemberWalletNOne.getScore();
+ BigDecimal amountOne = orderInfo.getAmount();
+ //积分兑换比例
+ DataDictionaryCustom scoreChangeOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.SCORE_CHANGE.getType(),
+ DataDictionaryEnum.SCORE_CHANGE.getCode()
+ );
+ BigDecimal scoreChangeOne = StrUtil.isEmpty(scoreChangeOneDic.getValue()) ? new BigDecimal("1") : new BigDecimal(scoreChangeOneDic.getValue());
+ int reduceOne = memberWalletService.reduce(scoreOne, member.getId(), "score");
+ if (reduceOne == 2) {
+ throw new FebsException("积分余额不足");
+ }
+ BigDecimal scoreToAmountOne = scoreOne.divide(scoreChangeOne, 2, BigDecimal.ROUND_DOWN);
+ //实际支付余额
+ BigDecimal amountActualOne = amountOne.subtract(scoreToAmountOne).setScale(2, BigDecimal.ROUND_DOWN);
+ int balanceOne = memberWalletService.reduce(amountActualOne, member.getId(), "balance");
+ if (balanceOne == 2) {
+ throw new FebsException("余额不足");
+ }
+ orderInfo.setPayOrderNo(orderInfo.getOrderNo());
+ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+ orderInfo.setPayTime(new Date());
+ orderInfo.setPayResult("1");
+ orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
+ mallMoneyFlowService.addMoneyFlow(member.getId(), amountActualOne.negate(), MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+ amountActualMsg = amountActualOne.toString();
+ mallMoneyFlowService.addMoneyFlow(member.getId(), scoreOne.negate(),
+ MoneyFlowTypeEnum.SCORE_PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue(),"积分支付",2);
+ break;
+ /**
+ * 积分加微信
+ */
+ case "3,1":
+ MallMemberWallet mallMemberWalletNTwo = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+ BigDecimal scoreTwo = mallMemberWalletNTwo.getScore();
+ BigDecimal amountTwo = orderInfo.getAmount();
+ //积分兑换比例
+ DataDictionaryCustom scoreChangeTwoDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.SCORE_CHANGE.getType(),
+ DataDictionaryEnum.SCORE_CHANGE.getCode()
+ );
+ BigDecimal scoreChangeTwo = StrUtil.isEmpty(scoreChangeTwoDic.getValue()) ? new BigDecimal("1") : new BigDecimal(scoreChangeTwoDic.getValue());
+ int reduceTwo = memberWalletService.reduce(scoreTwo, member.getId(), "score");
+ if (reduceTwo == 2) {
+ throw new FebsException("积分余额不足");
+ }
+ mallMoneyFlowService.addMoneyFlow(member.getId(), scoreTwo.negate(),
+ MoneyFlowTypeEnum.SCORE_PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue(),"积分支付",2);
+
+ BigDecimal scoreToAmountTwo = scoreTwo.divide(scoreChangeTwo, 2, BigDecimal.ROUND_DOWN);
+ //实际支付余额
+ BigDecimal amountActualTwo = amountTwo.subtract(scoreToAmountTwo).setScale(2, BigDecimal.ROUND_DOWN);
+ orderInfo.setAmount(amountActualTwo);
+
+ BrandWCPayRequestData brandWCPayRequestDataTwo = null;
+ try {
+ brandWCPayRequestDataTwo = iXcxPayService.startPayment(orderInfo);
+ } catch (Exception e) {
+ throw new FebsException("支付失败");
+ }
+ wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestDataTwo);
+ payResultStr = brandWCPayRequestDataTwo.getPrepay_id();
+ orderInfo.setPayMethod("微信支付");
+ amountActualMsg = amountActualTwo.toString();
+ break;
default:
}
--
Gitblit v1.9.1