From 1da6dad3fd2ac6d51125aa1f2d459ae1f146f8ff Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 26 Apr 2024 12:43:44 +0800
Subject: [PATCH] 质押流水记录
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 336 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 226 insertions(+), 110 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 a1abc90..e577032 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
@@ -1,22 +1,23 @@
package cc.mrbird.febs.dapp.service.impl;
import cc.mrbird.febs.common.contants.AppContants;
+import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.enumerates.DataDicEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
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.chain.ChainEnum;
-import cc.mrbird.febs.dapp.chain.ChainService;
-import cc.mrbird.febs.dapp.chain.ContractChainService;
-import cc.mrbird.febs.dapp.dto.RecordInPageDto;
-import cc.mrbird.febs.dapp.dto.TransferDto;
-import cc.mrbird.febs.dapp.dto.WalletOperateDto;
+import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.mapper.*;
+import cc.mrbird.febs.dapp.service.AsyncCjService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
+import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -25,10 +26,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @author
@@ -45,23 +43,52 @@
private final DappFundFlowDao dappFundFlowDao;
private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
private final RedisUtils redisUtils;
+ private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ private final DappAchieveMapper dappAchieveMapper;
+ private final DappAchieveItemMapper dappAchieveItemMapper;
+ private final ChainProducer chainProducer;
+ private final AsyncCjService asyncCjService;
@Override
public WalletInfoVo walletInfo() {
- DappMemberEntity member = LoginUserUtil.getAppUser();
-
- Map<String, BigDecimal> map = dappFundFlowDao.selectAmountTotalByType(member.getId());
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ DappMemberEntity member = dappMemberDao.selectById(memberId);
WalletInfoVo walletInfo = new WalletInfoVo();
- List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1);
- List<DappMemberEntity> notDirect = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 2);
- BigDecimal childHoldAmount = dappMemberDao.selectChildHoldAmount(member.getInviteId());
-
- walletInfo.setTotalChild(notDirect.size());
- walletInfo.setDirectCnt(direct.size());
- walletInfo.setTotalChildCoin(childHoldAmount);
- walletInfo.setTeamReward(map.get("teamReward"));
- walletInfo.setMiningAmount(map.get("mine"));
walletInfo.setInviteId(member.getInviteId());
+ walletInfo.setBalance(member.getBalance());
+ walletInfo.setUsdtBalance(member.getUsdtBalance());
+ String zyOpen = redisUtils.getString(DataDicEnum.SYSTEM_START_FLAG.getValue());
+ walletInfo.setZyOpen(zyOpen.equals("start") ? 1 : 0);
+
+ BigDecimal minAmount = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_BUY_MIN_AMOUNT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+ walletInfo.setZyMin(minAmount);
+
+ BigDecimal maxAmount = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_BUY_MAX_AMOUNT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+ walletInfo.setZyMax(maxAmount);
+
+ BigDecimal tzCoin = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.TUAN_DUI.getValue(),null);
+ walletInfo.setTzCoin(tzCoin);
+
+ BigDecimal hdCoinGeren = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_GEREN.getValue(),null);
+ BigDecimal hdCoinTuandui = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),null);
+ BigDecimal hdCoinTuanduiUSDT = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),null);
+ walletInfo.setHdCoin(hdCoinGeren.add(hdCoinTuandui).add(hdCoinTuanduiUSDT));
+
+ BigDecimal zyTotal = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHI_YA.getValue(),null).negate();
+ walletInfo.setZyTotal(zyTotal);
+
+ BigDecimal zyToday = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHI_YA.getValue(), new Date()).negate();
+ walletInfo.setZyToday(zyToday);
+
+ BigDecimal ccTotal = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHIYA_CHA_CHU.getValue(),null).negate();
+ walletInfo.setCcTotal(ccTotal);
+
+ BigDecimal ccToday = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHIYA_CHA_CHU.getValue(), new Date()).negate();
+ walletInfo.setCcToday(ccToday);
+
+ BigDecimal gfaDays = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_DAYS.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+ walletInfo.setGfaDays(gfaDays);
+
return walletInfo;
}
@@ -77,7 +104,7 @@
throw new FebsException("可用金额不足");
}
- DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount(), AppContants.MONEY_TYPE_CHANGE, null, null);
+ DappFundFlowEntity fund = new DappFundFlowEntity(member.getId(), walletOperateDto.getAmount(), AppContants.MONEY_TYPE_CHANGE, 2, (String) null);
dappFundFlowDao.insert(fund);
BigDecimal preEthAmount = walletMine.getAvailableAmount();
@@ -134,15 +161,30 @@
@Override
public List<DappFundFlowEntity> recordInPage(RecordInPageDto recordInPageDto) {
- Page<DappFundFlowEntity> page = new Page<>(recordInPageDto.getPageNum(), recordInPageDto.getPageSize());
-
DappMemberEntity member = LoginUserUtil.getAppUser();
+ Page<DappFundFlowEntity> page = new Page<>(recordInPageDto.getPageNum(), recordInPageDto.getPageSize());
DappFundFlowEntity dappFundFlowEntity = new DappFundFlowEntity();
if (recordInPageDto.getType() != null && recordInPageDto.getType() != 0) {
- dappFundFlowEntity.setType(recordInPageDto.getType());
+ dappFundFlowEntity.setStatus(recordInPageDto.getType());
+ }
+ if (recordInPageDto.getState() != null && recordInPageDto.getState() != 0) {
+ dappFundFlowEntity.setType(recordInPageDto.getState());
}
dappFundFlowEntity.setMemberId(member.getId());
- IPage<DappFundFlowEntity> records = dappFundFlowDao.selectInPage(page, dappFundFlowEntity);
+ IPage<DappFundFlowEntity> records = dappFundFlowDao.selectInPages(page, dappFundFlowEntity);
+ return records.getRecords();
+ }
+
+ @Override
+ public List<DappAchieve> zyInPage(RecordInPageDto recordInPageDto) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ Page<DappAchieve> page = new Page<>(recordInPageDto.getPageNum(), recordInPageDto.getPageSize());
+ DappAchieve dappAchieve = new DappAchieve();
+ if (recordInPageDto.getType() != null && recordInPageDto.getType() != 0) {
+ dappAchieve.setState(recordInPageDto.getType());
+ }
+ dappAchieve.setMemberId(member.getId());
+ IPage<DappAchieve> records = dappFundFlowDao.selectZyInPage(page, dappAchieve);
return records.getRecords();
}
@@ -159,28 +201,20 @@
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);
+ dappFundFlowDao.updateById(fundFlow);
} 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);
+ dappFundFlowDao.updateById(fundFlow);
- dappAccountMoneyChangeDao.insert(accountMoneyChange);
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(fundFlow.getMemberId());
+ //流水记录的金额是一个负数
+ dappMemberEntity.setUsdtBalance(dappMemberEntity.getUsdtBalance().subtract(fundFlow.getAmount()));
+ dappMemberDao.updateUsdtBalanceWithVersion(dappMemberEntity);
} else {
throw new FebsException("参数错误");
}
-
- dappWalletCoinDao.updateById(walletCoin);
- dappFundFlowDao.updateById(fundFlow);
}
@Override
@@ -202,78 +236,112 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public Long transfer(TransferDto transferDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
+// QueryWrapper<DappFundFlowEntity> objectQueryWrapper = new QueryWrapper<>();
+// objectQueryWrapper.eq("type" ,FlowTypeEnum.ZHI_YA.getValue());
+// objectQueryWrapper.eq("status" ,DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+// objectQueryWrapper.eq("member_id" ,member.getId());
+// List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectList(objectQueryWrapper);
- if (member.getActiveStatus() == 2) {
- throw new FebsException("请联系邀请人转币激活");
+ List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDateAndState(
+ member.getId(),
+ FlowTypeEnum.ZHI_YA.getValue(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ new Date());
+ BigDecimal zhiyaAmount = new BigDecimal(redisUtils.getString(DataDicEnum.MEMBER_ZHIYA_AMOUNT.getValue()));
+
+ Integer zhiyaTime = Integer.parseInt(redisUtils.getString(DataDicEnum.MEMBER_ZHIYA_TIME.getValue()));
+ if(CollUtil.isNotEmpty(dappFundFlowEntities)){
+ if(dappFundFlowEntities.size() >= zhiyaTime){
+ throw new FebsException("今日暂停质押");
+ }
+ BigDecimal teamAchieveMemberSum = dappFundFlowEntities.stream().map(DappFundFlowEntity::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate();
+ if(zhiyaAmount.compareTo(teamAchieveMemberSum.add(transferDto.getAmount())) < 0){
+ throw new FebsException("今日最多质押"+zhiyaAmount.subtract(teamAchieveMemberSum).setScale(4,BigDecimal.ROUND_DOWN));
+ }
}
- // 每日出U剩余量(卖币)
- BigDecimal usdtRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_USDT_OUT_LIMIT_REMAIN);
- // 用户24小时可出售量
- BigDecimal saleCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress());
- BigDecimal buyCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_TRANSFER_POOL_VOL_REMAIN);
- // 铸池中的币的剩余量
- BigDecimal makeCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_MAKE_POOL_CNT);
+ String hasStart = redisUtils.getString(DataDicEnum.SYSTEM_START_FLAG.getValue());
+ BigDecimal minAmount = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_BUY_MIN_AMOUNT.getValue()));
+ BigDecimal maxAmount = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_BUY_MAX_AMOUNT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal gfaDays = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_DAYS.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+
+ minAmount = minAmount.divide(transferDto.getPrice(),2,BigDecimal.ROUND_DOWN);
+ maxAmount = maxAmount.divide(transferDto.getPrice(),2,BigDecimal.ROUND_DOWN);;
if (transferDto.getId() == null) {
- String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
- if (DappFundFlowEntity.TYPE_SALE == transferDto.getType()) {
- if (!"start".equals(hasStart)) {
- throw new FebsException("系统还未启动");
- }
-
- if (transferDto.getAmount().multiply(transferDto.getPrice()).compareTo(usdtRemain) > 0) {
- throw new FebsException("超过当日出U剩余量");
- }
-
- if (transferDto.getAmount().compareTo(saleCoinRemain) > 0) {
- throw new FebsException("超出24小时内可售量");
- }
-
- } else if (DappFundFlowEntity.TYPE_BUY == transferDto.getType()) {
+ if (DappFundFlowEntity.TYPE_BUY == transferDto.getType()) {
+ //系统开始标识
if ("start".equals(hasStart)) {
- if (transferDto.getAmount().compareTo(buyCoinRemain) > 0) {
- throw new FebsException("超过当日可购买量");
+ if (transferDto.getAmount().compareTo(maxAmount) > 0) {
+ throw new FebsException("超过购买限制");
}
- // 如果系统还没有启动,则判断铸池中的剩余量
+ if (transferDto.getAmount().compareTo(minAmount) < 0) {
+ throw new FebsException("超过购买限制");
+ }
+// if (BigDecimal.ZERO.compareTo(gfaDays) >= 0) {
+// throw new FebsException("今日暂停质押");
+// }
+ if (transferDto.getAmount().compareTo(zhiyaAmount) > 0) {
+ throw new FebsException("今日最多质押"+zhiyaAmount);
+ }
} else {
- if (transferDto.getAmount().compareTo(makeCoinRemain) > 0) {
- throw new FebsException("可购数量不足");
- }
+ throw new FebsException("暂停质押");
}
}
- DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), transferDto.getType(), 1, transferDto.getFee(), transferDto.getTxHash());
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(
+ member.getId(),
+ transferDto.getAmount().setScale(2,BigDecimal.ROUND_DOWN).negate(),
+ FlowTypeEnum.ZHI_YA.getValue(),
+ DappFundFlowEntity.WITHDRAW_STATUS_ING,
+ BigDecimal.ZERO,
+ transferDto.getTxHash());
fundFlow.setNewestPrice(transferDto.getPrice());
dappFundFlowDao.insert(fundFlow);
+ //发送一个延时队列消息。10分钟流水还没有更新,则删除流水
+ chainProducer.sendZhiYaDelayFlowMsg(fundFlow.getId(), 10 * 60 * 1000L);
return fundFlow.getId();
}
if ("success".equals(transferDto.getFlag())) {
+ if (transferDto.getId() == null) {
+ throw new FebsException("网络异常");
+ }
+ //更新第一次请求的资金划转记录
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
-
+ if(ObjectUtil.isEmpty(flow)){
+ throw new FebsException("网络异常");
+ }
flow.setFromHash(transferDto.getTxHash());
+ flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+ flow.setContent(FlowTypeEnum.ZHI_YA.getDescrition());
dappFundFlowDao.updateById(flow);
- if (DappFundFlowEntity.TYPE_SALE == transferDto.getType()) {
- usdtRemain = usdtRemain.subtract(flow.getAmount().multiply(flow.getNewestPrice()));
- saleCoinRemain = saleCoinRemain.subtract(flow.getAmount());
+ //用户质押代币数量
+ BigDecimal amount = flow.getAmount().negate();
+ Long memberId = flow.getMemberId();
+ //新增一条用户质押记录
+ DappAchieve dappAchieve = new DappAchieve();
+ dappAchieve.setMemberId(memberId);
+ dappAchieve.setPrice(transferDto.getPrice());
+ dappAchieve.setAmount(amount);
+ BigDecimal achieveReleasePercent = new BigDecimal("0.01").multiply(
+ new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_RELEASE.getValue())).setScale(2,BigDecimal.ROUND_DOWN)
+ );
+ dappAchieve.setAmountDay(achieveReleasePercent.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ BigDecimal achieveOut = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_OUT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+ dappAchieve.setAmountMax(achieveOut.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ dappAchieve.setState(DappAchieve.STATUS_ING);
+ dappAchieve.setAmountDone(BigDecimal.ZERO);
+ dappAchieveMapper.insert(dappAchieve);
- // 修改当日U剩余量
- redisUtils.set(AppContants.REDIS_KEY_USDT_OUT_LIMIT_REMAIN, usdtRemain);
- // 修改用户24小时可售量
- redisUtils.set(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress(), saleCoinRemain);
- } else if (DappFundFlowEntity.TYPE_BUY == transferDto.getType()) {
- buyCoinRemain = buyCoinRemain.subtract(flow.getAmount());
+ asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
- // 修改当日可购买量
- redisUtils.set(AppContants.REDIS_KEY_TRANSFER_POOL_VOL_REMAIN, buyCoinRemain);
- } else {
-
- throw new FebsException("参数错误");
- }
+ //发送一个延时队列消息。24小时之后产生第一次的质押产出
+// chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
} else {
dappFundFlowDao.deleteById(transferDto.getId());
}
@@ -281,32 +349,80 @@
}
@Override
- public Map<String, BigDecimal> calPrice() {
+ public String calPrice() {
DappMemberEntity member = LoginUserUtil.getAppUser();
+ return redisUtils.getString(DataDicEnum.GFA_PRICE.getValue());
+ }
+ @Override
+ public IPage<DappAchieve> dappAchieveInPage(DappAchieve dappAchieve, QueryRequest request) {
+ Page<DappAchieve> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<DappAchieve> dappAchieveIPage = dappAchieveMapper.selectInPage(page, dappAchieve);
+ List<DappAchieve> records = dappAchieveIPage.getRecords();
+ if(CollUtil.isNotEmpty(records)){
+ for(DappAchieve dappAchieve1 : records){
+ dappAchieve1.setUsdtAmount(dappAchieve1.getAmount().multiply(dappAchieve1.getPrice()).setScale(2,BigDecimal.ROUND_DOWN));
+ }
+ }
+ return dappAchieveIPage;
+ }
- String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
- if (!"start".equals(hasStart)) {
- HashMap<String, BigDecimal> map = new HashMap<>();
- map.put("x", new BigDecimal("0.073"));
- map.put("y", new BigDecimal("100000"));
- return map;
+ @Override
+ public IPage<DappAchieveItem> dappAchieveItemInPage(DappAchieve dappAchieve, QueryRequest request) {
+ Page<DappAchieveItem> page = new Page<>(request.getPageNum(), request.getPageSize());
+ return dappAchieveMapper.dappAchieveItemInPage(page, dappAchieve);
+ }
+
+ @Override
+ public FebsResponse transferOut(TransferOutDto transferOutDto) {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal usdtBalance = dappMemberEntity.getUsdtBalance();
+ BigDecimal balance = dappMemberEntity.getBalance();
+ Integer type = transferOutDto.getType();
+ Integer flowType;
+ String flowDes;
+ BigDecimal amount = transferOutDto.getAmount();
+ if(1 == type){//代币提现
+ if(new BigDecimal("10").compareTo(amount) > 0){
+ throw new FebsException("最小数量为10");
+ }
+ if(balance.compareTo(amount) < 0){
+ throw new FebsException("余额不足");
+ }
+ flowType = FlowTypeEnum.DAI_BI_OUT.getValue();
+ flowDes = FlowTypeEnum.DAI_BI_OUT.getDescrition();
+
+ dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ dappMemberDao.updateBalanceWithVersion(dappMemberEntity);
+ }else{
+ if(new BigDecimal("1").compareTo(amount) > 0){
+ throw new FebsException("最小数量为100");
+ }
+ if(usdtBalance.compareTo(amount) < 0){
+ throw new FebsException("余额不足");
+ }
+ flowType = FlowTypeEnum.USDT_OUT.getValue();
+ flowDes = FlowTypeEnum.USDT_OUT.getDescrition();
+
+ dappMemberEntity.setUsdtBalance(usdtBalance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ dappMemberDao.updateUsdtBalanceWithVersion(dappMemberEntity);
}
- ContractChainService tfcInstance = ChainService.getInstance(ChainEnum.BSC_TFC.name());
- // u剩余数量
- BigDecimal sourceU = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress());
- // 源池代币剩余数量
- BigDecimal sourceCoin = tfcInstance.balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress());
- // 用户代币剩余数量
- BigDecimal coin = tfcInstance.balanceOf(member.getAddress());
- BigDecimal x = sourceU.divide(sourceCoin, tfcInstance.decimals(), RoundingMode.HALF_UP);
- BigDecimal y = sourceU.divide(sourceCoin.add(coin), tfcInstance.decimals(), RoundingMode.HALF_UP);
+ DappFundFlowEntity fundFlowTuiJian = new DappFundFlowEntity(
+ memberId,
+ amount.negate(),
+ flowType,
+ DappFundFlowEntity.WITHDRAW_STATUS_ING,
+ flowDes,
+ null,
+ dappMemberEntity.getAddress());
+ dappFundFlowDao.insert(fundFlowTuiJian);
- log.info("购买价格:{}, 出卖价格:{}", x, y);
- HashMap<String, BigDecimal> map = new HashMap<>();
- map.put("x", x);
- map.put("y", y);
- return map;
+// dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+// dappMemberEntity.setUsdtBalance(usdtBalance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+// dappMemberDao.updateBalanceAndUsdtBalanceWithVersion(dappMemberEntity);
+
+ return new FebsResponse().success();
}
}
--
Gitblit v1.9.1