|
|
|
@ -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; |
|
|
|
@ -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("免费金币赠送")) { |
|
|
|
//往金币订单表加一条充值记录 |
|
|
|
|