From fe0a572729b9425692ae55c4a6722db7cd4eb9d4 Mon Sep 17 00:00:00 2001
From: wangguorui <2069821375@qq.com>
Date: Thu, 5 Mar 2026 15:23:10 +0800
Subject: [PATCH] =?UTF-8?q?20260305=E5=85=85=E5=80=BC=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../demo/mapper/cash/CashCollectionMapper.java | 12 ++++++
.../cash/CashCollectionServiceImpl.java | 49 ++++++++++++++++++++--
.../resources/cashMapper/CashCollectionMapper.xml | 39 +++++++++++++----
3 files changed, 90 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
index ab23a9e..734fe37 100644
--- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
+++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
@@ -5,6 +5,7 @@ import com.example.demo.domain.DTO.*;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.GOrder;
import com.example.demo.domain.entity.RechargeActivity;
+import com.example.demo.domain.entity.UserRegionWallet;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import org.apache.ibatis.annotations.Mapper;
@@ -98,4 +99,15 @@ public interface CashCollectionMapper {
@Param("type") Integer type,
@Param("flag") Integer flag);
+ // 根据 jwcode 和 walletId 查询用户钱包
+ UserRegionWallet selectUserWallet(@Param("jwcode") Integer jwcode,
+ @Param("walletId") Integer walletId);
+
+ // 增加用户钱包永久金币
+ int addUserWalletPermanentGold(@Param("jwcode") Integer jwcode,
+ @Param("walletId") Integer walletId,
+ @Param("amount") Integer amount);
+
+ // 插入或更新用户钱包记录
+ void insertUserWallet(UserRegionWallet userRegionWallet);
}
diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
index 364ca94..adca688 100644
--- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
@@ -82,6 +82,9 @@ public class CashCollectionServiceImpl implements CashCollectionService {
if (cashCollection.getPermanentGold() == 0 && cashCollection.getFreeGold() == 0) {
throw new IllegalArgumentException("金币数量不能为空");
}
+ if (cashCollection.getWalletId() == null || cashCollection.getWalletId() < 0 || cashCollection.getWalletId() > 10) {
+ throw new IllegalArgumentException("钱包ID不能为空");
+ }
}
if (!cashCollection.getGoodsName().equals("金币充值")) {
if (cashCollection.getGoodNum() == 0) {
@@ -119,6 +122,9 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setNumUnit(cashCollection.getNumUnit()); //数量单位
cashRecord.setPermanentGold(cashCollection.getPermanentGold()); //永久金币
cashRecord.setFreeGold(cashCollection.getFreeGold()); //免费金币
+ cashRecord.setWalletId(cashCollection.getWalletId()); // 钱包 ID
+ // 打印钱包 ID
+ log.info("钱包ID:{}", cashRecord.getWalletId());
cashRecord.setPaymentCurrency(cashCollection.getPaymentCurrency()); //付款币种
cashRecord.setPaymentAmount(cashCollection.getPaymentAmount()); //付款金额
cashRecord.setReceivedMarket(cashCollection.getReceivedMarket()); //到账地区
@@ -127,7 +133,7 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setVoucher(cashCollection.getVoucher()); //转账凭证
cashRecord.setRemark(cashCollection.getRemark()); //备注
cashRecord.setStatus(0); //订单状态:付款线下财务待审核
- cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人ID
+ cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人 ID
cashRecord.setSubmitterMarket(cashCollection.getSubmitterMarket());
cashRecord.setOrderType(1); //订单类型:1-收款
cashRecord.setMarket(cashCollection.getMarket());
@@ -371,21 +377,58 @@ public class CashCollectionServiceImpl implements CashCollectionService {
//补全手续费等内容
@Override
+ @Transactional(rollbackFor = Exception.class)
public String complete(CashRecord cashRecord) {
if (!Objects.equals(cashRecord.getPaymentCurrency(), cashRecord.getReceivedCurrency())
- && ("Stripe".equals(cashRecord.getPayType()) || "Paypal".equals(cashRecord.getPayType()))) {
+ && ("Stripe".equals(cashRecord.getPayType()) || "Paypal".equals(cashRecord.getPayType()))) {
return "支付币种与收款币种不一致";
}
int rows = cashCollectionMapper.complete(cashRecord);
String goodsName = cashCollectionMapper.selectGoodsNameByCode(cashRecord.getOrderCode());
- if (goodsName .equals("金币充值")) {
+ if (goodsName != null && goodsName.equals("金币充值")) {
+
+ // 先从数据库中获取订单的 walletId , permanentGold 和 jwcode
+ CashRecord dbRecord = cashCollectionMapper.selectByOrderCode(cashRecord.getOrderCode());
+ Integer walletId = dbRecord != null ? dbRecord.getWalletId() : null;
+ Integer permanentGold = dbRecord != null ? dbRecord.getPermanentGold() : null;
+ Integer jwcode = dbRecord != null ? dbRecord.getJwcode() : null;
cashRecord.setOrderCode(cashRecord.getOrderCode().replace("XJ_", "XJCZ_"));
//修改金币订单
cashCollectionMapper.updateGoldOrder(cashRecord);
+
+ // 充值成功,增加用户钱包金币
+ if (walletId != null && permanentGold > 0) {
+ try {
+ // 尝试更新用户钱包余额
+ int updateRows = cashCollectionMapper.addUserWalletPermanentGold(
+ jwcode,
+ walletId,
+ permanentGold
+ );
+
+ // 如果没有更新任何行,说明记录不存在,需要插入新记录
+ if (updateRows == 0) {
+ UserRegionWallet wallet = new UserRegionWallet();
+ wallet.setJwcode(jwcode);
+ wallet.setWalletId(walletId);
+ wallet.setCurrentPermanentGold(new BigDecimal(permanentGold));
+ cashCollectionMapper.insertUserWallet(wallet);
+ log.info("创建新的钱包记录:jwcode={}, walletId={}, permanentGold={}",
+ jwcode, walletId, permanentGold);
+ } else {
+ log.info("充值成功:jwcode={}, walletId={}, 增加金币={}",
+ jwcode, walletId, permanentGold);
+ }
+ } catch (Exception e) {
+ log.error("充值钱包失败:jwcode={}, walletId={}, error={}",
+ jwcode, walletId, e.getMessage(), e);
+ throw new RuntimeException("充值钱包失败:" + e.getMessage(), e);
+ }
+ }
}
return rows > 0 ? "编辑成功" : "编辑失败";
}
diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml
index 5609f50..46fe61f 100644
--- a/src/main/resources/cashMapper/CashCollectionMapper.xml
+++ b/src/main/resources/cashMapper/CashCollectionMapper.xml
@@ -7,14 +7,14 @@
useGeneratedKeys="true" keyProperty="id">
insert into
cash_record_collection(order_type,jwcode,name,market,activity,
- order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold,
- payment_currency,payment_amount,received_market,
- pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time,
- voucher,remark)
+ order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold,
+ payment_currency,payment_amount,received_market,
+ pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time,
+ voucher,remark,wallet_id)
values(#{orderType},#{jwcode},#{name},#{market},#{activity},
#{orderCode},#{bankCode},#{goodsName},#{goodNum},#{numUnit},#{permanentGold},#{freeGold},#{paymentCurrency},
#{paymentAmount},#{receivedMarket},#{payType},#{payTime},
- #{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark})
+ #{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark},#{walletId})
+
@@ -389,6 +389,31 @@
+
+
+
+
+
+
+ UPDATE user_region_wallet
+ SET current_permanent_gold = current_permanent_gold + #{amount},
+ update_time = NOW()
+ WHERE jwcode = #{jwcode} AND wallet_id = #{walletId}
+
+
+
+
+ INSERT INTO user_region_wallet (jwcode, wallet_id, current_permanent_gold, create_time, update_time)
+ VALUES (#{jwcode}, #{walletId}, #{currentPermanentGold}, NOW(), NOW())
+ ON DUPLICATE KEY UPDATE
+ current_permanent_gold = current_permanent_gold + VALUES(current_permanent_gold),
+ update_time = NOW()
+
+
update cash_record_collection