Browse Source

20260306充值钱包修改

huangqizheng/feature-20260309142559-钱包退款
wangguorui 1 month ago
parent
commit
4709a90bc8
  1. 76
      src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
  2. 49
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

76
src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java

@ -3,9 +3,7 @@ package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.GoldTistV2;
import com.example.demo.Util.SimpleIdGenerator;
import com.example.demo.config.RabbitMQConfig;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.CashCollectionMessage;
import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.mapper.cash.CashAuditMapper;
@ -14,6 +12,7 @@ import com.example.demo.mapper.coin.AuditMapper;
import com.example.demo.mapper.coin.MarketMapper;
import com.example.demo.mapper.coin.RechargeMapper;
import com.example.demo.service.cash.CashAuditService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -36,6 +35,7 @@ import static net.sf.jsqlparser.parser.feature.Feature.update;
* @Version 1.0
**/
@Service
@Slf4j
public class CashAuditServiceImpl implements CashAuditService {
@Autowired
private AuditMapper auditMapper;
@ -83,11 +83,11 @@ public class CashAuditServiceImpl implements CashAuditService {
int currentMonth = LocalDate.now().getMonthValue();
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
// 1-6 设置 6 月额度12 月保持默认值
rechargeOrder.setFreeJune(order.getFreeGold());
rechargeOrder.setFreeDecember(0);
} else {
// 7-12月设置12月额度6月保持默认值
// 7-12 设置 12 月额度6 月保持默认值
rechargeOrder.setFreeJune(0);
rechargeOrder.setFreeDecember(order.getFreeGold());
}
@ -98,7 +98,7 @@ public class CashAuditServiceImpl implements CashAuditService {
rechargeOrder.setVoucher(order.getVoucher());
rechargeOrder.setPayPlatform("金币系统");
rechargeOrder.setPayModel(order.getPayType());
//把时间转换成Date
//把时间转换成 Date
Date date = Date.from(order.getPayTime().toInstant(ZoneOffset.ofHours(8)));
rechargeOrder.setPayTime(date);
rechargeOrder.setAdminId(order.getSubmitterId());
@ -110,7 +110,7 @@ public class CashAuditServiceImpl implements CashAuditService {
rechargeOrder.setLinkId(order.getLinkId());
rechargeMapper.add(rechargeOrder);
//往ERP加一条充值数据
// ERP 加一条充值数据
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold()) / 100,order.getLinkId(),
order.getRemark(), (double) (order.getPermanentGold()) / 100, auditName, "金币充值");
@ -123,12 +123,12 @@ public class CashAuditServiceImpl implements CashAuditService {
user.setSumConsumePermanent(BigDecimal.valueOf(order.getPermanentGold()));
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置12月额度6月保持默认值
// 1-6 设置 12 月额度6 月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(0));
user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold()));
user.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeGold()));
} else {
// 7-12月设置6月额度12月保持默认值
// 7-12 设置 6 月额度12 月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold()));
user.setCurrentFreeJune(BigDecimal.valueOf(order.getFreeGold()));
user.setSumFreeDecember(BigDecimal.valueOf(0));
@ -136,6 +136,54 @@ public class CashAuditServiceImpl implements CashAuditService {
user.setCurrentPermanentGold(BigDecimal.valueOf(order.getPermanentGold()));
user.setRechargeNum(1); //充值次数加一
auditMapper.updateUserGold(user);
// 先从数据库中获取订单的 walletId
CashRecord dbRecord = cashCollectionMapper.selectByOrderCode(orderCode);
Integer walletId = dbRecord != null ? dbRecord.getWalletId() : null;
// 充值到指定钱包
if (walletId != null && order.getPermanentGold() > 0) {
try {
// 尝试更新用户钱包余额
int updateRows = cashCollectionMapper.addUserWalletPermanentGold(
order.getJwcode(),
walletId,
order.getPermanentGold()
);
// 如果没有更新任何行说明记录不存在需要插入新记录
if (updateRows == 0) {
UserRegionWallet wallet = new UserRegionWallet();
wallet.setJwcode(order.getJwcode());
wallet.setWalletId(walletId);
wallet.setCurrentPermanentGold(new BigDecimal(order.getPermanentGold()));
cashCollectionMapper.insertUserWallet(wallet);
log.info("创建新的钱包记录:jwcode={}, walletId={}, permanentGold={}",
order.getJwcode(), walletId, order.getPermanentGold());
} else {
log.info("充值成功:jwcode={}, walletId={}, 增加金币={}",
order.getJwcode(), walletId, order.getPermanentGold());
}
// 创建钱包明细记录
UserWalletRecord walletRecord = new UserWalletRecord();
walletRecord.setJwcode(order.getJwcode());
walletRecord.setWalletId(walletId);
walletRecord.setType(0); // 0=充值
walletRecord.setAmount(order.getPermanentGold());
walletRecord.setOrderCode(orderCode);
walletRecord.setDescription(order.getPayType());
walletRecord.setStatus(0); // 0=正常
cashCollectionMapper.insertUserWalletRecord(walletRecord);
log.info("创建钱包明细记录:jwcode={}, walletId={}, orderCode={}, amount={}",
order.getJwcode(), walletId, orderCode, order.getPermanentGold());
} catch (Exception e) {
log.error("充值钱包失败:jwcode={}, walletId={}, error={}",
order.getJwcode(), walletId, e.getMessage(), e);
// 不抛出异常避免影响主流程但记录错误日志
}
}
}
if (order.getGoodsName().equals("免费金币赠送")) {
//往金币订单表加一条充值记录
@ -148,11 +196,11 @@ public class CashAuditServiceImpl implements CashAuditService {
int currentMonth = LocalDate.now().getMonthValue();
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
// 1-6 设置 6 月额度12 月保持默认值
rechargeOrder.setFreeJune(order.getFreeGold());
rechargeOrder.setFreeDecember(0);
} else {
// 7-12月设置12月额度6月保持默认值
// 7-12 设置 12 月额度6 月保持默认值
rechargeOrder.setFreeJune(0);
rechargeOrder.setFreeDecember(order.getFreeGold());
}
@ -165,7 +213,7 @@ public class CashAuditServiceImpl implements CashAuditService {
rechargeOrder.setAuditStatus(1);
rechargeOrder.setCreateTime(new Date());
rechargeMapper.add(rechargeOrder);
//往ERP加一条充值数据
// ERP 加一条充值数据
GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeGold()) / 100,
order.getRemark(), SimpleIdGenerator.generateId(),0, auditName, "金币充值");
@ -175,12 +223,12 @@ public class CashAuditServiceImpl implements CashAuditService {
user.setSumConsumePermanent(BigDecimal.valueOf(0));
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
// 1-6 设置 6 月额度12 月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold()));
user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold()));
user.setCurrentFreeDecember(BigDecimal.valueOf(0));
} else {
// 7-12月设置12月额度6月保持默认值
// 7-12 设置 12 月额度6 月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(0));
user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold()));
user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold()));

49
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -389,58 +389,9 @@ public class CashCollectionServiceImpl implements CashCollectionService {
int rows = cashCollectionMapper.complete(cashRecord);
String goodsName = cashCollectionMapper.selectGoodsNameByCode(cashRecord.getOrderCode());
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);
}
// 创建钱包明细记录
UserWalletRecord walletRecord = new UserWalletRecord();
walletRecord.setJwcode(jwcode);
walletRecord.setWalletId(walletId);
walletRecord.setType(0); // 0=充值
walletRecord.setAmount(permanentGold);
walletRecord.setOrderCode(cashRecord.getOrderCode());
walletRecord.setDescription(dbRecord.getRemark() != null ? dbRecord.getRemark() : "金币充值");
walletRecord.setStatus(0); // 0=正常
cashCollectionMapper.insertUserWalletRecord(walletRecord);
} catch (Exception e) {
log.error("充值钱包失败:jwcode={}, walletId={}, error={}",
jwcode, walletId, e.getMessage(), e);
throw new RuntimeException("充值钱包失败:" + e.getMessage(), e);
}
}
}
return rows > 0 ? "编辑成功" : "编辑失败";
}

Loading…
Cancel
Save