From afe2e9a2da152a9b1a54d88b7637e811bf298749 Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Sat, 27 Aug 2022 00:39:49 +0800
Subject: [PATCH] finish matrix profit
---
src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java | 2
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | 4 +
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 40 +++++++++++++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 49 ++++++----------
src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java | 1
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 14 +---
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 2
src/main/java/cc/mrbird/febs/dapp/entity/DappMineDataEntity.java | 5 +
src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java | 1
src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemDao.java | 2
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 8 --
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 7 ++
src/main/resources/mapper/dapp/DappSystemDao.xml | 5 +
src/main/resources/mapper/dapp/DappWalletCoinDao.xml | 8 ++
14 files changed, 96 insertions(+), 52 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java b/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
index 53c9ed8..bfa20fd 100644
--- a/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
+++ b/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
@@ -31,7 +31,6 @@
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
if (!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName()) || isDebug) {
- System.out.println(1111111);
return o;
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
index 30a2062..f98420a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -47,7 +47,7 @@
private BigDecimal amount;
/**
- * 类型 1-买入 2-矩阵收益 3-直推收益
+ * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池
*/
private Integer type;
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMineDataEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMineDataEntity.java
index 6518064..176c99a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappMineDataEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappMineDataEntity.java
@@ -20,4 +20,9 @@
private Integer partnerCnt;
private BigDecimal partnerIncome;
+
+ /**
+ * 保险池
+ */
+ private BigDecimal safePool;
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemDao.java
index a93f511..054da1f 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemDao.java
@@ -1,9 +1,11 @@
package cc.mrbird.febs.dapp.mapper;
import cc.mrbird.febs.dapp.entity.DappMineDataEntity;
+import org.apache.ibatis.annotations.Param;
public interface DappSystemDao {
DappMineDataEntity selectMineDataForOne();
+ int updateMineData(@Param("record") DappMineDataEntity dappMineDataEntity);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java
index efbdb75..2e5dc89 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java
@@ -11,4 +11,6 @@
DappWalletCoinEntity selectByMemberId(@Param("memberId") Long memberId);
IPage<DappWalletCoinEntity> selectInPage(@Param("record") DappWalletCoinEntity walletCoin, Page<DappWalletCoinEntity> page);
+
+ int updateWithLock(@Param("record") DappWalletCoinEntity dappWalletCoinEntity);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 6955a64..77f3653 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -57,4 +57,11 @@
boolean hasProfit(String address);
void achieveTree(Long memberId);
+
+ /**
+ * 投入收益
+ *
+ * @param isReIn
+ */
+ void putIntoProfit(Long memberId, int isReIn);
}
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 b5cf7e0..df88832 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -45,6 +45,8 @@
List<ActiveNftListVo> findUnActiveNftList();
- void withdraw(@RequestBody WithdrawDto withdrawDto);
+ void withdraw(WithdrawDto withdrawDto);
+
+ void updateWalletCoinWithLock(BigDecimal amount, Long memberId);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
index 46751a5..0e79963 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -100,16 +100,10 @@
}
OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_APPLICATION, "USDT");
+ fundFlow.setAmount(fundFlow.getAmount().negate());
// 更改状态为已同步
fundFlow.setStatus(2);
dappFundFlowDao.updateById(fundFlow);
-
- synchronized (this) {
- DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(fundFlow.getMemberId());
- walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount));
- walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount));
- dappWalletCoinDao.updateById(walletCoin);
- }
chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId());
}
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 40aae19..2511380 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
@@ -137,8 +137,10 @@
if (child.size() == 6) {
throw new FebsException("Invite Code is Invalid");
}
+ } else {
+ connectDto.setInviteId(null);
}
- member = insertMember(connectDto.getAddress(), null);
+ member = insertMember(connectDto.getAddress(), connectDto.getInviteId());
}
String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
@@ -282,8 +284,6 @@
member.setChainType(chainType);
member.setAccountType(accountType);
member.setActiveStatus(2);
-// member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address));
-// member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address));
dappMemberDao.insert(member);
@@ -303,19 +303,12 @@
boolean flag = false;
String parentId = refererId;
String ids = "";
- String feeProfitIds = "";
while (!flag && StringUtils.isNotBlank(parentId)) {
if (StrUtil.isBlank(ids)) {
ids += parentId;
} else {
ids += ("," + parentId);
- }
-
- if (StrUtil.isBlank(feeProfitIds)) {
- feeProfitIds += parentId;
- } else {
- feeProfitIds += ("," + parentId);
}
DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId);
@@ -331,7 +324,6 @@
}
}
member.setRefererIds(ids);
- member.setFeeProfitIds(feeProfitIds);
}
dappMemberDao.updateById(member);
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 21ccecd..19e4a35 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
@@ -11,6 +11,7 @@
import cc.mrbird.febs.dapp.enumerate.CardPeriod;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappSystemService;
+import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
import cc.mrbird.febs.dapp.vo.RedisTransferPoolVo;
import cc.mrbird.febs.dapp.vo.SlipSettingVo;
@@ -66,6 +67,7 @@
private final DappAchieveTreeDao dappAchieveTreeDao;
private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
+ private final DappWalletService dappWalletService;
@Override
@@ -685,6 +687,11 @@
}
dappAchieveMemberTreeDao.insert(achieveMemberTree);
+ // 激活用户状态
+ member.setActiveStatus(1);
+ dappMemberDao.updateById(member);
+
+ putIntoProfit(memberId, 2);
if (parentNode == null) {
return;
}
@@ -733,10 +740,43 @@
dappAchieveMemberTreeDao.resetMatrixTree(memberId);
dappAchieveMemberTreeDao.reentryMoney(memberId);
+ putIntoProfit(memberId, 1);
DappAchieveMemberTreeEntity bottomNode = dappAchieveMemberTreeDao.selectNodeByDeep(memberId, 3);
if (bottomNode != null) {
finishMatrixTree(bottomNode.getTopNode());
}
}
}
+
+ @Override
+ public void putIntoProfit(Long memberId, int isReIn) {
+ DappMemberEntity member = dappMemberDao.selectById(memberId);
+ DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
+
+ if (parent != null) {
+ BigDecimal directProfit = new BigDecimal("100").multiply(new BigDecimal("0.15"));
+ dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId());
+
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null);
+ dappFundFlowDao.insert(fundFlow);
+ }
+
+ // 如果是复投的,则需奖励
+ if (isReIn == 1) {
+ dappWalletService.updateWalletCoinWithLock(new BigDecimal(190), member.getId());
+
+ DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null);
+ dappFundFlowDao.insert(matrixProfitFlow);
+
+ DappFundFlowEntity rePutInFlow = new DappFundFlowEntity(memberId, new BigDecimal("100").negate(), 1, 2, null, null);
+ dappFundFlowDao.insert(rePutInFlow);
+
+ DappFundFlowEntity safePoolFlow = new DappFundFlowEntity(memberId, new BigDecimal("10").negate(), 4, 2, null, null);
+ dappFundFlowDao.insert(safePoolFlow);
+
+ DappMineDataEntity mineData = dappSystemDao.selectMineDataForOne();
+ mineData.setSafePool(mineData.getSafePool().add(BigDecimal.TEN));
+ dappSystemDao.updateMineData(mineData);
+ }
+ }
}
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 22af2e1..0c487d5 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
@@ -13,7 +13,6 @@
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.mapper.*;
-import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.BoxUtil;
import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
@@ -53,7 +52,6 @@
private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
private final RedisUtils redisUtils;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
- private final DappSystemService dappSystemService;
private final DappNftActivationDao dappNftActivationDao;
private final ChainProducer chainProducer;
@@ -228,12 +226,10 @@
if (transferDto.getAmount().compareTo(walletCoin.getAvailableAmount()) > 0) {
throw new FebsException("Balance Not Enough");
}
- walletCoin.setTotalAmount(walletCoin.getTotalAmount().subtract(transferDto.getAmount()));
- walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().subtract(transferDto.getAmount()));
- dappWalletCoinDao.updateById(walletCoin);
+ updateWalletCoinWithLock(transferDto.getAmount().negate(), member.getId());
- DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), 1, 2, transferDto.getFee(), transferDto.getTxHash());
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount().negate(), 1, 2, transferDto.getFee(), transferDto.getTxHash());
dappFundFlowDao.insert(fundFlow);
chainProducer.sendAchieveTreeMsg(member.getId());
@@ -260,30 +256,7 @@
@Override
public Map<String, BigDecimal> calPrice(PriceDto priceDto) {
- DappMemberEntity member = LoginUserUtil.getAppUser();
-
- if (!dappSystemService.systemHasStart()) {
- HashMap<String, BigDecimal> map = new HashMap<>();
- map.put("x", new BigDecimal("0.05"));
- map.put("y", new BigDecimal("0.05"));
- return map;
- }
-
- 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 = priceDto.getAmount();
- BigDecimal x = sourceU.divide(sourceCoin, tfcInstance.decimals(), RoundingMode.HALF_UP);
- BigDecimal y = sourceU.divide(sourceCoin.add(coin), tfcInstance.decimals(), RoundingMode.HALF_UP);
-
- log.info("购买价格:{}, 出卖价格:{}", x, y);
- HashMap<String, BigDecimal> map = new HashMap<>();
- map.put("x", x);
- map.put("y", y);
- return map;
+ return null;
}
@Override
@@ -406,4 +379,20 @@
public void withdraw(WithdrawDto withdrawDto) {
}
+
+ @Override
+ public void updateWalletCoinWithLock(BigDecimal amount, Long memberId) {
+ boolean isSuccess = false;
+ while(!isSuccess) {
+ DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId);
+
+ walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount));
+ walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount));
+
+ int i = dappWalletCoinDao.updateWithLock(walletCoin);
+ if (i > 0) {
+ isSuccess = true;
+ }
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java b/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
index 69991c6..1b842c4 100644
--- a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
+++ b/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
@@ -36,6 +36,5 @@
node.setMemberId(treeNode.getMidNode());
instance.addNode(node);
}
- System.out.println(11);
}
}
diff --git a/src/main/resources/mapper/dapp/DappSystemDao.xml b/src/main/resources/mapper/dapp/DappSystemDao.xml
index 176511a..95ba411 100644
--- a/src/main/resources/mapper/dapp/DappSystemDao.xml
+++ b/src/main/resources/mapper/dapp/DappSystemDao.xml
@@ -6,4 +6,9 @@
select * from dapp_mine_data limit 1
</select>
+ <update id="updateMineData">
+ update dapp_mine_data
+ set safe_pool=#{record.safePool}
+ where id=#{record.id}
+ </update>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/DappWalletCoinDao.xml b/src/main/resources/mapper/dapp/DappWalletCoinDao.xml
index f1b9c56..346a02d 100644
--- a/src/main/resources/mapper/dapp/DappWalletCoinDao.xml
+++ b/src/main/resources/mapper/dapp/DappWalletCoinDao.xml
@@ -18,4 +18,12 @@
</if>
</where>
</select>
+
+ <update id="updateWithLock">
+ update dapp_wallet_coin
+ set total_amount=#{record.totalAmount},
+ available_amount=#{record.availableAmount},
+ version=version+1
+ where id=#{record.id} and version=#{record.version}
+ </update>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1