From a6c755cdfbeec45b735a350e0caa93ea714426fa Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 23 May 2022 11:16:03 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 44 +++++++++++++++++++++++++++++++++++---------
1 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index e4f7b59..9f0c845 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -3,13 +3,16 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.dto.RecordInPageDto;
import cc.mrbird.febs.dapp.dto.WalletOperateDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -21,7 +24,7 @@
import java.util.List;
/**
- * @author wzy
+ * @author
* @date 2022-03-18
**/
@Slf4j
@@ -34,6 +37,7 @@
private final DappWalletCoinDao dappWalletCoinDao;
private final DappFundFlowDao dappFundFlowDao;
private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
+ private final RedisUtils redisUtils;
@Override
public WalletInfoVo walletInfo() {
@@ -43,6 +47,7 @@
DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId());
WalletInfoVo walletInfo = new WalletInfoVo();
+ walletInfo.setInviteId(member.getInviteId());
walletInfo.setTotalMine(walletMine.getTotalAmount());
walletInfo.setAvailableMine(walletMine.getAvailableAmount());
walletInfo.setAvailableWallet(walletCoin.getAvailableAmount());
@@ -54,14 +59,14 @@
public void change(WalletOperateDto walletOperateDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
- BigDecimal ethUsdtPrice = new BigDecimal("1234");
+ BigDecimal ethUsdtPrice = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_ETH_NEW_PRICE);
DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId());
if (walletOperateDto.getAmount().compareTo(walletMine.getAvailableAmount()) > 0) {
throw new FebsException("可用金额不足");
}
- DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount().negate(), AppContants.MONEY_TYPE_CHANGE, null);
+ DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount(), AppContants.MONEY_TYPE_CHANGE, null, null);
dappFundFlowDao.insert(fund);
BigDecimal preEthAmount = walletMine.getAvailableAmount();
@@ -69,7 +74,6 @@
// TODO 并发加悲观锁
// 更新eth金额
walletMine.setAvailableAmount(walletMine.getAvailableAmount().subtract(walletOperateDto.getAmount()));
- walletMine.setTotalAmount(walletMine.getTotalAmount().subtract(walletOperateDto.getAmount()));
dappWalletMineDao.updateById(walletMine);
DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId());
@@ -81,8 +85,8 @@
walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(usdt));
dappWalletCoinDao.updateById(walletCoin);
- DappAccountMoneyChangeEntity ethChange = new DappAccountMoneyChangeEntity(member.getId(), preEthAmount, walletOperateDto.getAmount(), walletMine.getTotalAmount(), "ETH兑换USDT-ETH", AppContants.MONEY_TYPE_CHANGE);
- DappAccountMoneyChangeEntity usdtChange = new DappAccountMoneyChangeEntity(member.getId(), preUsdtAmount, usdt, walletCoin.getTotalAmount(), "ETH兑换USDT-USDT", AppContants.MONEY_TYPE_CHANGE);
+ DappAccountMoneyChangeEntity ethChange = new DappAccountMoneyChangeEntity(member.getId(), preEthAmount, walletOperateDto.getAmount(), walletMine.getAvailableAmount(), "ETH兑换USDT-ETH, 兑换价格为:" + ethUsdtPrice, AppContants.MONEY_TYPE_CHANGE);
+ DappAccountMoneyChangeEntity usdtChange = new DappAccountMoneyChangeEntity(member.getId(), preUsdtAmount, usdt, walletCoin.getAvailableAmount(), "ETH兑换USDT-USDT, 兑换价格为:" + ethUsdtPrice, AppContants.MONEY_TYPE_CHANGE);
dappAccountMoneyChangeDao.insert(ethChange);
dappAccountMoneyChangeDao.insert(usdtChange);
}
@@ -92,18 +96,25 @@
public void withdraw(WalletOperateDto walletOperateDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
+ List<DappFundFlowEntity> fundFlows = dappFundFlowDao.selectListForMemberAndDay(member.getId(), 2);
+ if (CollUtil.isNotEmpty(fundFlows)) {
+ throw new FebsException("一天只能提现一次");
+ }
+
DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId());
if (walletOperateDto.getAmount().compareTo(walletCoin.getAvailableAmount()) > 0) {
throw new FebsException("可用金额不足");
}
- // TODO 并发加悲观锁
+ Integer fee = (Integer) redisUtils.get(AppContants.REDIS_KEY_CHANGE_FEE);
+
+ //TODO 并发加悲观锁
BigDecimal preAmount = walletCoin.getAvailableAmount();
walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().subtract(walletOperateDto.getAmount()));
- walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().subtract(walletOperateDto.getAmount()));
+ walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().add(walletOperateDto.getAmount()));
dappWalletCoinDao.updateById(walletCoin);
- DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount().negate(), AppContants.MONEY_TYPE_WITHDRAWAL, 1);
+ DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount(), AppContants.MONEY_TYPE_WITHDRAWAL, 1, fee);
dappFundFlowDao.insert(fund);
DappAccountMoneyChangeEntity usdtChange = new DappAccountMoneyChangeEntity(member.getId(), preAmount, walletOperateDto.getAmount(), walletCoin.getAvailableAmount(), "USDT申请提现", AppContants.MONEY_TYPE_WITHDRAWAL);
@@ -114,8 +125,10 @@
public List<DappFundFlowEntity> recordInPage(RecordInPageDto recordInPageDto) {
Page<DappFundFlowEntity> page = new Page<>(recordInPageDto.getPageNum(), recordInPageDto.getPageSize());
+ DappMemberEntity member = LoginUserUtil.getAppUser();
DappFundFlowEntity dappFundFlowEntity = new DappFundFlowEntity();
dappFundFlowEntity.setType(recordInPageDto.getType());
+ dappFundFlowEntity.setMemberId(member.getId());
IPage<DappFundFlowEntity> records = dappFundFlowDao.selectInPage(page, dappFundFlowEntity);
return records.getRecords();
}
@@ -127,20 +140,33 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void withdrawAgreeOrNot(Long id, int type) {
DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(id);
if (fundFlow == null) {
throw new FebsException("数据不存在");
}
+ DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(fundFlow.getMemberId());
if (type == 1) {
+ walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().subtract(fundFlow.getAmount()));
+ walletCoin.setTotalAmount(walletCoin.getTotalAmount().subtract(fundFlow.getAmount()));
fundFlow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
} else if (type == 2) {
+ BigDecimal preAmount = walletCoin.getAvailableAmount();
+
+ walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().subtract(fundFlow.getAmount()));
+ walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(fundFlow.getAmount()));
+
+ DappAccountMoneyChangeEntity accountMoneyChange = new DappAccountMoneyChangeEntity(walletCoin.getMemberId(), preAmount, fundFlow.getAmount(), walletCoin.getAvailableAmount(), "提现申请被驳回", 2);
fundFlow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_DISAGREE);
+
+ dappAccountMoneyChangeDao.insert(accountMoneyChange);
} else {
throw new FebsException("参数错误");
}
+ dappWalletCoinDao.updateById(walletCoin);
dappFundFlowDao.updateById(fundFlow);
}
--
Gitblit v1.9.1