From 700cbb19a285e639bb05404503efa3da9988c083 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 21 七月 2026 22:53:55 +0800
Subject: [PATCH] 分账可开关
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 70 ++++++++++++++++++++++++++++++++---
1 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index b0d733f..621e638 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -88,6 +88,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@@ -168,6 +169,8 @@
private IcbcPaymentClient icbcPaymentClient;
@Resource
private TChargingOrderShareRecordMapper chargingOrderShareRecordMapper;
+ @Value("${icbc.share.online-enabled:false}")
+ private boolean icbcOnlineShareEnabled;
@Resource
private ChargingOrderSettlementExecutor chargingOrderSettlementExecutor;
@Resource
@@ -3111,7 +3114,11 @@
@Override
public Map<String, Object> countAll(List<Integer> siteIds, Boolean partnerView) {
- return this.baseMapper.countAll(siteIds, partnerView);
+ Map<String, Object> result = this.baseMapper.countAll(siteIds, partnerView);
+ if (!Boolean.TRUE.equals(partnerView) && result != null) {
+ result.put("commission_amount", this.baseMapper.sumSuccessfulShareAmount(siteIds));
+ }
+ return result;
}
/**
@@ -5237,7 +5244,7 @@
shoppingOrderRefund.setRefundContent("后台退款");
shoppingOrderRefund.setRefundReason("后台退款");
shoppingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
- shoppingOrderRefund.setRefundTotalAmount(shoppingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+ shoppingOrderRefund.setRefundTotalAmount(money(shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
if (1 == shoppingOrder.getPaymentType()) {
@@ -5281,6 +5288,29 @@
shoppingOrderRefundService.save(shoppingOrderRefund);
}
}
+ if (3 == shoppingOrder.getPaymentType()) {
+ IcbcRefundReq refundReq = new IcbcRefundReq();
+ refundReq.setOutTradeNo(shoppingOrder.getCode());
+ refundReq.setOrderId(shoppingOrder.getSerialNumber());
+ refundReq.setOutRefundNo(shoppingOrderRefund.getRefundCode());
+ refundReq.setRefundAmount(payOrderQueryDto.getRefundAmount());
+ refundReq.setTotalAmount(shoppingOrder.getPaymentAmount());
+ refundReq.setReason("后台商城订单退款");
+ R<IcbcRefundResp> refundResult = icbcPaymentClient.refund(refundReq);
+ IcbcRefundResp refundResp = refundResult == null ? null : refundResult.getData();
+ if (refundResult == null || refundResult.getCode() != 200 || refundResp == null || !"SUCCESS".equals(refundResp.getStatus())) {
+ return R.fail(refundResult == null ? "工行退款服务无响应"
+ : firstNotBlank(refundResp == null ? null : refundResp.getRawResponse(), refundResult.getMsg(), "工行退款失败"));
+ }
+ shoppingOrder.setRefundStatus(2);
+ shoppingOrder.setRefundAmount(money(shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ shoppingOrder.setRefundSerialNumber(refundResp.getRefundId());
+ shoppingOrder.setRefundTime(LocalDateTime.now());
+ shoppingOrderService.updateById(shoppingOrder);
+ shoppingOrderRefund.setRefundStatus(2);
+ shoppingOrderRefund.setRefundSerialNumber(refundResp.getRefundId());
+ shoppingOrderRefundService.save(shoppingOrderRefund);
+ }
// if(3 == tChargingOrder.getPaymentType()){
// RefundReq dto = new RefundReq();
// dto.setOutTradeNo(tChargingOrder.getCode());
@@ -5318,7 +5348,7 @@
vipOrderRefund.setRefundContent("后台退款");
vipOrderRefund.setRefundReason("后台退款");
vipOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
- vipOrderRefund.setRefundTotalAmount(vipOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+ vipOrderRefund.setRefundTotalAmount(money(vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
vipOrderRefund.setPayAmount(vipOrder.getPaymentAmount());
if (1 == vipOrder.getPaymentType()) {
@@ -5361,6 +5391,27 @@
vipOrderService.updateById(vipOrder);
vipOrderRefundService.save(vipOrderRefund);
}
+ }
+ if (3 == vipOrder.getPaymentType()) {
+ IcbcRefundReq refundReq = new IcbcRefundReq();
+ refundReq.setOutTradeNo(vipOrder.getCode());
+ refundReq.setOrderId(vipOrder.getSerialNumber());
+ refundReq.setOutRefundNo(vipOrderRefund.getRefundCode());
+ refundReq.setRefundAmount(payOrderQueryDto.getRefundAmount());
+ refundReq.setTotalAmount(vipOrder.getPaymentAmount());
+ refundReq.setReason("后台会员订单退款");
+ R<IcbcRefundResp> refundResult = icbcPaymentClient.refund(refundReq);
+ IcbcRefundResp refundResp = refundResult == null ? null : refundResult.getData();
+ if (refundResult == null || refundResult.getCode() != 200 || refundResp == null || !"SUCCESS".equals(refundResp.getStatus())) {
+ return R.fail(refundResult == null ? "工行退款服务无响应"
+ : firstNotBlank(refundResp == null ? null : refundResp.getRawResponse(), refundResult.getMsg(), "工行退款失败"));
+ }
+ vipOrder.setRefundStatus(2);
+ vipOrder.setRefundAmount(money(vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ vipOrderService.updateById(vipOrder);
+ vipOrderRefund.setRefundStatus(2);
+ vipOrderRefund.setRefundSerialNumber(refundResp.getRefundId());
+ vipOrderRefundService.save(vipOrderRefund);
}
// if(3 == tChargingOrder.getPaymentType()){
// RefundReq dto = new RefundReq();
@@ -7531,11 +7582,13 @@
record.setSubMerId(partner.getIcbcSubMerId());
record.setSubMerPrtclNo(partner.getIcbcSubMerPrtclNo());
}
- boolean needOnlineShare = shouldProcessIcbcOnlineShare(payChannel, record.getShareAmount(), partner);
+ boolean needOnlineShare = shouldProcessIcbcOnlineShare(icbcOnlineShareEnabled, payChannel, record.getShareAmount(), partner);
record.setNeedOnlineShare(needOnlineShare);
record.setOnlineShareStatus(needOnlineShare ? "INIT" : "RECORDED");
if ("ICBC".equals(payChannel) && record.getShareAmount().compareTo(BigDecimal.ZERO) > 0 && !needOnlineShare) {
- record.setFailReason("未配置完整工行二级商户参数,仅记录本地分账");
+ record.setFailReason(icbcOnlineShareEnabled
+ ? "未配置完整工行二级商户参数,仅记录本地分账"
+ : "工行线上分账已关闭,仅记录本地分账");
}
record.setRetryCount(0);
record.setDelFlag(false);
@@ -7728,7 +7781,12 @@
}
static boolean shouldProcessIcbcOnlineShare(String payChannel, BigDecimal shareAmount, Partner partner) {
- return "ICBC".equals(payChannel)
+ return shouldProcessIcbcOnlineShare(true, payChannel, shareAmount, partner);
+ }
+
+ static boolean shouldProcessIcbcOnlineShare(boolean onlineShareEnabled, String payChannel, BigDecimal shareAmount, Partner partner) {
+ return onlineShareEnabled
+ && "ICBC".equals(payChannel)
&& shareAmount != null
&& shareAmount.compareTo(BigDecimal.ZERO) > 0
&& partner != null
--
Gitblit v1.7.1