From 0d5369b99cec636fe2d47ad4c479a6a4b5892579 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Thu, 16 Apr 2026 13:45:39 +0800 Subject: [PATCH] =?UTF-8?q?20260416=20=E9=92=B1=E5=8C=85=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E8=BD=AF=E4=BB=B6=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceImpl/cash/CashAuditServiceImpl.java | 2 +- .../serviceImpl/cash/CashRefundServiceImpl.java | 39 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java index eb97fcc..ff82f14 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java @@ -246,7 +246,7 @@ public class CashAuditServiceImpl implements CashAuditService { user.setRechargeNum(1); //充值次数加一 auditMapper.updateUserGold(user); } - else { + if (!order.getGoodsName().equals("金币充值") && !order.getGoodsName().equals("免费金币赠送")) { // 先从数据库中获取订单的 walletId CashRecord dbRecord = cashCollectionMapper.selectByOrderCode(orderCode); Integer walletId = dbRecord != null ? dbRecord.getWalletId() : null; diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index ab8e101..a913e43 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -581,6 +581,45 @@ public class CashRefundServiceImpl implements RefundService { userGoldRecord.getRemark(), (double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值"); } + // 🔥【新增】处理现金购买软件产品的退款 - 将原始购买明细状态改为已退款,并更新订单号 + if (cashRecordDone.getGoodsName() != null && cashRecordDone.getStatus() == 40 && + !cashRecordDone.getGoodsName().equals(languageTranslationUtil.translate("金币充值", lang)) && + !cashRecordDone.getGoodsName().contains(languageTranslationUtil.translate("金币充值", lang))) { + + String orderCode = cashRecordDone.getOrderCode(); + String orderCodeA = "XJ" + orderCode.substring(4); + String refundOrderCode = "TK" + orderCodeA; // 退款订单号 + + // 查询原始购买流水(type=3 软件购买,status=0 正常) + List originalRecords = walletService.selectUserWalletRecord(cashRecordDone.getJwcode(), orderCodeA); + if (!CollectionUtils.isEmpty(originalRecords)) { + // 过滤软件购买记录 + List purchaseRecords = originalRecords.stream() + .filter(r -> r.getType() == 3 && r.getStatus() == 0) + .collect(Collectors.toList()); + + if (!purchaseRecords.isEmpty()) { + // 🔥 将所有原始购买明细的状态改为1(已退款),并更新订单号为退款订单号 + for (UserWalletRecord purchaseRecord : purchaseRecords) { + // 更新订单号为退款订单号 + purchaseRecord.setOrderCode(refundOrderCode); + // 更新状态为已退款(status=1) + walletService.updateUserWalletRecord(purchaseRecord.getId()); + + log.info("现金购买软件产品退款 - 原始购买明细已更新 | id={}, jwcode={}, walletId={}, 原订单号={}, 新订单号={}, amount={}, currency={}", + purchaseRecord.getId(), cashRecordDone.getJwcode(), purchaseRecord.getWalletId(), + orderCodeA, refundOrderCode, purchaseRecord.getAmount(), purchaseRecord.getTransactionCurrency()); + } + } else { + log.warn("未找到有效的原始购买流水记录 | jwcode={}, orderCode={}", + cashRecordDone.getJwcode(), orderCode); + } + } else { + log.warn("未查询到原始购买流水 | jwcode={}, orderCode={}", + cashRecordDone.getJwcode(), orderCode); + } + } + cashRefundMapper.updateAudit(cashRecordDone); int result = cashRefundMapper.review(cashRecordDone); CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId());