Browse Source

20260416 钱包明细优化,软件购买退款提示

dev
wangguorui 5 days ago
parent
commit
0d5369b99c
  1. 2
      src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
  2. 39
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

2
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;

39
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<UserWalletRecord> originalRecords = walletService.selectUserWalletRecord(cashRecordDone.getJwcode(), orderCodeA);
if (!CollectionUtils.isEmpty(originalRecords)) {
// 过滤软件购买记录
List<UserWalletRecord> 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());

Loading…
Cancel
Save