From 02c885c7ae66d23625e98df3eb63a21bd5f8bc90 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 29 May 2023 15:31:54 +0800
Subject: [PATCH] twoCoin项目修改
---
src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java | 4 +
src/main/java/cc/mrbird/febs/dapp/enumerate/PoolEnum.java | 4 +
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | 4 +
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 1
src/main/resources/mapper/dapp/DappMemberDao.xml | 1
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | 14 +++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 127 +++++++++++++++++++++++++++++++
src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java | 6 +
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 10 ++
src/main/java/cc/mrbird/febs/dapp/dto/RoundCoinDto.java | 19 ++++
10 files changed, 189 insertions(+), 1 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
index 471a375..c98fbc4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -114,6 +114,20 @@
return new FebsResponse().success().data("success");
}
+ @ApiOperation(value = "互转ANDAO", notes = "互转ANDAO")
+ @PostMapping(value = "/roundCoin")
+ public FebsResponse roundCoin(@RequestBody RoundCoinDto roundCoinDto) {
+ dappWalletService.roundCoin(roundCoinDto);
+ return new FebsResponse().success().data("success");
+ }
+
+ @ApiOperation(value = "互转AUSDT", notes = "互转AUSDT")
+ @PostMapping(value = "/roundCoinAusdt")
+ public FebsResponse roundCoinAusdt(@RequestBody RoundCoinDto roundCoinDto) {
+ dappWalletService.roundCoinAusdt(roundCoinDto);
+ return new FebsResponse().success().data("success");
+ }
+
@ApiOperation(value = "记录列表", notes = "记录列表")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = DappFundFlowVo.class)
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/RoundCoinDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/RoundCoinDto.java
new file mode 100644
index 0000000..830aaef
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/RoundCoinDto.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.dapp.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "RoundCoinDto", description = "互转")
+public class RoundCoinDto {
+
+ @ApiModelProperty(value = "对方地址", example = "0Xadsfsa")
+ private String address;
+
+ @ApiModelProperty(value = "币的数量", example = "20")
+ private BigDecimal coinCnt;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
index 6488d47..2e18710 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
@@ -8,6 +8,10 @@
*/
@Getter
public enum FundFlowEnum {
+ //ANDAO互转
+ ANDAO_MEMBER_TO_MENBER("ANDAO_MEMBER_TO_MENBER", 32),
+ //AUSDT互转
+ AUSDT_MEMBER_TO_MENBER("AUSDT_MEMBER_TO_MENBER", 31),
//20%全网加权分红(按20%释放递减)-(全网收益)
POOL_MEMBER_A_CNT("POOL_MEMBER_A_CNT", 30),
//每小时燃烧-(AN DAO燃烧)
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/PoolEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/PoolEnum.java
index 1977a49..0326e2e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/PoolEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/PoolEnum.java
@@ -8,6 +8,10 @@
@Getter
public enum PoolEnum {
/**
+ * AUSD互转20%
+ */
+ ANDAO_MEMBER_TO_MENBER_PERCENT("WALLET_SET", "ANDAO_MEMBER_TO_MENBER_PERCENT"),
+ /**
* AUSD价格
*/
TRANSFER_A_AUSD_PRICE("WALLET_SET", "TRANSFER_A_AUSD_PRICE"),
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
index 3dd1dee..811c700 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -59,4 +59,8 @@
Long transferAusd(TransferAusdDto transferAusdDto);
List<DappFundFlowVo> getRecordVoInPage(RecordInPageDto recordInPageDto);
+
+ void roundCoin(RoundCoinDto roundCoinDto);
+
+ void roundCoinAusdt(RoundCoinDto roundCoinDto);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index ce24af0..a9dd40e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -136,7 +136,8 @@
if (member == null) {
if (!"asdf4321".equals(connectDto.getInviteId())) {
- DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
+// DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
+ DappMemberEntity parent = dappMemberDao.selectByAddress(connectDto.getInviteId(), null);
if (parent == null) {
throw new FebsException("recommender is not exist");
}
@@ -510,6 +511,13 @@
public FebsResponse getMemberInfo() {
DappMemberEntity member = LoginUserUtil.getAppUser();
DappMemberInfoVo dappMemberInfoVo = dappMemberDao.selectByMemberId(member.getId());
+
+ DataDictionaryCustom ausdPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.TRANSFER_A_AUSD_PERCENT.getType(),
+ PoolEnum.TRANSFER_A_AUSD_PERCENT.getCode()
+ );
+ BigDecimal ausdPercent = new BigDecimal(ausdPercentDic.getValue());
+ dappMemberInfoVo.setAusdtFee(ausdPercent);
//ausd价格
DataDictionaryCustom ausdPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
PoolEnum.TRANSFER_A_AUSD_PRICE.getType(),
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index f7be496..5a1cbfe 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -1496,6 +1496,7 @@
@Override
public void selectAndInsertDics() {
+ selectAndInsertDic(PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getType(),PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getCode(),"0.2","ANDAO互转20%");
selectAndInsertDic(PoolEnum.TRANSFER_A_AUSD_PRICE.getType(),PoolEnum.TRANSFER_A_AUSD_PRICE.getCode(),"0.01","AUSD价格");
selectAndInsertDic(PoolEnum.TRANSFER_A_AUSD_PERCENT.getType(),PoolEnum.TRANSFER_A_AUSD_PERCENT.getCode(),"0.1","买入A,10%的AUSD比例");
selectAndInsertDic(PoolEnum.WALLET_COIN_OUT_PERCENT.getType(),PoolEnum.WALLET_COIN_OUT_PERCENT.getCode(),"0.3","30%回流底池溢价");
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 7efe3bc..bc794cf 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
@@ -977,4 +977,131 @@
IPage<DappFundFlowVo> records = dappFundFlowDao.selectVoInPage(page, dappFundFlowEntity);
return records.getRecords();
}
+
+ @Override
+ public void roundCoin(RoundCoinDto roundCoinDto) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+
+ String address = roundCoinDto.getAddress();
+ DappMemberEntity memberParent = dappMemberDao.selectByAddress(address, null);
+ if(ObjectUtil.isEmpty(memberParent)){
+ throw new FebsException("请输入正确的地址");
+ }
+
+ BigDecimal coinCnt = roundCoinDto.getCoinCnt();
+ if(BigDecimal.ZERO.compareTo(coinCnt) >= 0){
+ throw new FebsException("输入正确的数量");
+ }
+
+ DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(dappMemberEntity.getId());
+ BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+ if(availableAmount.compareTo(coinCnt) < 0){
+ throw new FebsException("数量不足");
+ }
+ //减少闪兑钱包
+ this.updateWalletCoinWithLock(coinCnt,dappMemberEntity.getId(),2);
+ //插入资产闪对的流水
+ DappFundFlowEntity aCoinCntFlow = new DappFundFlowEntity(
+ dappMemberEntity.getId(),
+ coinCnt.negate(),
+ FundFlowEnum.ANDAO_MEMBER_TO_MENBER.getCode(),
+ 2,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(aCoinCntFlow);
+ //闪对钱包20% 手续费(扣币)
+ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getType(),
+ PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getCode());
+ BigDecimal feePercent = new BigDecimal(StrUtil.isEmpty(dic.getValue()) ? "0.2" : dic.getValue());
+ //手续费
+ BigDecimal feeCnt = coinCnt.multiply(feePercent).setScale(4,BigDecimal.ROUND_DOWN);
+ //闪对钱包获取的
+ BigDecimal aCoinCntReal = coinCnt.subtract(feeCnt).setScale(4, BigDecimal.ROUND_DOWN);
+ //增加闪对钱包
+ this.updateWalletCoinWithLock(aCoinCntReal,memberParent.getId(),1);
+ //插入资产闪对的流水
+ DappFundFlowEntity dappFundFlowEntity = new DappFundFlowEntity(
+ dappMemberEntity.getId(),
+ aCoinCntReal,
+ FundFlowEnum.ANDAO_MEMBER_TO_MENBER.getCode(),
+ 2,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(dappFundFlowEntity);
+
+ //金本位底池数量
+ DataDictionaryCustom coinAUsdtPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_USDT_PRICE.getType(),
+ PoolEnum.COIN_A_USDT_PRICE.getCode()
+ );
+ BigDecimal coinAUsdtCnt = new BigDecimal(coinAUsdtPriceDic.getValue());
+ //币本位底池数量
+ DataDictionaryCustom coinACntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_CNT.getType(),
+ PoolEnum.COIN_A_CNT.getCode()
+ );
+ BigDecimal coinACnt = new BigDecimal(coinACntDic.getValue());
+ coinACnt = coinACnt.subtract(feeCnt).setScale(4,BigDecimal.ROUND_DOWN);
+ coinACntDic.setValue(coinACnt.toString());
+ dataDictionaryCustomMapper.updateById(coinACntDic);
+
+ DataDictionaryCustom aCoinPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_PRICE.getType(),
+ PoolEnum.COIN_A_PRICE.getCode()
+ );
+ BigDecimal coinAPrice = new BigDecimal(aCoinPriceDic.getValue());
+ coinAPrice = coinAUsdtCnt.divide(coinACnt,8,BigDecimal.ROUND_DOWN);
+ aCoinPriceDic.setValue(coinAPrice.toString());
+ dataDictionaryCustomMapper.updateById(aCoinPriceDic);
+
+ chainProducer.sendAntKLineMsg(0);
+
+ }
+
+ @Override
+ public void roundCoinAusdt(RoundCoinDto roundCoinDto) {
+
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+
+ String address = roundCoinDto.getAddress();
+ DappMemberEntity memberParent = dappMemberDao.selectByAddress(address, null);
+ if(ObjectUtil.isEmpty(memberParent)){
+ throw new FebsException("请输入正确的地址");
+ }
+
+ BigDecimal coinCnt = roundCoinDto.getCoinCnt();
+ if(BigDecimal.ZERO.compareTo(coinCnt) >= 0){
+ throw new FebsException("输入正确的数量");
+ }
+
+ DappUsdtPerkEntity dappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(dappMemberEntity.getId());
+ BigDecimal availableAmount = dappUsdtPerkEntity.getAusdAmount();
+ if(availableAmount.compareTo(coinCnt) < 0){
+ throw new FebsException("数量不足");
+ }
+ dappUsdtPerkEntity.setAusdAmount(availableAmount.subtract(coinCnt));
+ dappUsdtPerkEntityMapper.updateById(dappUsdtPerkEntity);
+ //插入资产闪对的流水
+ DappFundFlowEntity aCoinCntFlow = new DappFundFlowEntity(
+ dappMemberEntity.getId(),
+ coinCnt.negate(),
+ FundFlowEnum.AUSDT_MEMBER_TO_MENBER.getCode(),
+ 2,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(aCoinCntFlow);
+
+ DappUsdtPerkEntity parentEntity = dappUsdtPerkEntityMapper.selectByMemberId(dappMemberEntity.getId());
+ BigDecimal availableAmountParent = parentEntity.getAusdAmount();
+ parentEntity.setAusdAmount(availableAmountParent.add(coinCnt));
+ dappUsdtPerkEntityMapper.updateById(parentEntity);
+ //插入资产闪对的流水
+ DappFundFlowEntity aCoinCntFlowParent = new DappFundFlowEntity(
+ dappMemberEntity.getId(),
+ coinCnt,
+ FundFlowEnum.AUSDT_MEMBER_TO_MENBER.getCode(),
+ 2,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(aCoinCntFlowParent);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java
index e89949c..83822e4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java
@@ -34,6 +34,9 @@
@ApiModelProperty(value = "A币的价格")
private BigDecimal coinAPrice;
+ @ApiModelProperty(value = "兑换AUSDT的手续费比例")
+ private BigDecimal ausdtFee;
+
@ApiModelProperty(value = "资产到闪兑的手续费比例")
private BigDecimal mineToCoinFee;
@@ -43,4 +46,7 @@
@ApiModelProperty(value = "我的贡献值")
private BigDecimal nftDevote;
+ @ApiModelProperty(value = "是否激活 1:已激活 2:未激活 已激活,有推广链接")
+ private Integer activeStatus;
+
}
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index 5031249..5d05b9a 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -190,6 +190,7 @@
select
a.invite_id inviteId,
a.account_type accountType,
+ a.active_status activeStatus,
b.ausd_amount ausdAmount,
b.nft_devote nftDevote,
b.amount amount,
--
Gitblit v1.9.1