From 97946d338b1bca979b27e3fe747967da90bcc283 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 19 May 2023 18:05:58 +0800
Subject: [PATCH] twoCoin项目修改
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 41 insertions(+), 17 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 d1c6e22..209ac93 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
@@ -201,32 +201,37 @@
* 验证节点的价格是否和入参价格一致
*/
String nodeCode = transferDto.getNodeCode();
- DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCode(nodeCode);
+ DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCodeForupdate(nodeCode);
BigDecimal price = dappNodeOrderEntity.getPrice();
BigDecimal amount = transferDto.getAmount();
if(price.compareTo(amount) != 0){
throw new FebsException("刷新后重试");
// throw new FebsException("Refresh and try again");
}
+ Integer surplusCnt = dappNodeOrderEntity.getSurplusCnt();
+ if(0 >= surplusCnt){
+ throw new FebsException("该节点剩余数量为0。");
+ }
+
/**
* 超级节点只允许购买一次
*/
- DappMemberNodeEntity superNode = dappMemberNodeMapper.selectNodeByMemberIdAndNodeCode(
- member.getId(), NodeCodeEnum.SUPER_NODE.getCode());
- if(ObjectUtil.isNotEmpty(superNode)){
- throw new FebsException("超级节点只允许购买一次");
-// throw new FebsException("Super nodes are only allowed to be purchased once");
+ if(NodeCodeEnum.SUPER_NODE.getCode().equals(nodeCode)){
+ DappMemberNodeEntity superNode = dappMemberNodeMapper.selectNodeByMemberIdAndNodeCode(
+ member.getId(), NodeCodeEnum.SUPER_NODE.getCode());
+ if(ObjectUtil.isNotEmpty(superNode)){
+ throw new FebsException("超级节点只能购买一次");
+ }
}
-
- DappFundFlowEntity fundFlowOld = dappFundFlowDao.selectBymemberIdAndType(member.getId(),type);
+ DappFundFlowEntity fundFlowOld = dappFundFlowDao.selectBymemberIdAndType(member.getId(),type,DappFundFlowEntity.WITHDRAW_STATUS_ING);
if(ObjectUtil.isNotEmpty(fundFlowOld)){
//网络问题导致第二次提交前,未成功就关闭了页面
if (fundFlowOld.getStatus() == 1 && StrUtil.isEmpty(fundFlowOld.getFromHash())) {
dappFundFlowDao.deleteById(fundFlowOld.getId());
+ throw new FebsException("Refresh and try again");
}
- throw new FebsException("Refresh and try again");
}
DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), type, 1, transferDto.getFee(), transferDto.getTxHash(),transferDto.getNodeCode());
dappFundFlowDao.insert(fundFlow);
@@ -243,7 +248,7 @@
* 生成会员节点表记录
*/
String nodeCode = transferDto.getNodeCode();
- DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCode(nodeCode);
+ DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCodeForupdate(nodeCode);
DappMemberNodeEntity dappMemberNodeEntityNew = new DappMemberNodeEntity(
member.getId(),
dappNodeOrderEntity.getId(),
@@ -251,13 +256,12 @@
transferDto.getAmount()
);
dappMemberNodeMapper.insert(dappMemberNodeEntityNew);
- /**
- * 是否已经购买了节点
- */
-// DappMemberNodeEntity dappMemberNodeEntity = dappMemberNodeMapper.selectNodeByMemberId(member.getId());
-// if(ObjectUtil.isNotEmpty(dappMemberNodeEntity)){
-// throw new FebsException("Do not repeat purchase");
-// }
+
+ Integer surplusCnt = dappNodeOrderEntity.getSurplusCnt();
+ surplusCnt = surplusCnt - 1;
+ dappNodeOrderEntity.setSurplusCnt(surplusCnt);
+ dappNodeOrderMapper.updateById(dappNodeOrderEntity);
+
/**
* 流水关联用户购买节点记录
*/
@@ -298,10 +302,30 @@
null,
dappMemberNodeEntityNew.getId());
dappFundFlowDao.insert(fundFlow);
+
/**
* 发送转币消息
*/
chainProducer.sendBnbTransferMsg(fundFlow.getId());
+
+
+ BigDecimal subtract = amount.subtract(directProfit);
+
+ //剩余的钱给分走
+ DappFundFlowEntity fundFlowEntityProject = new DappFundFlowEntity(
+ 4L,
+ subtract,
+ 4,
+ 1,
+ BigDecimal.ZERO,
+ null,
+ dappMemberNodeEntityNew.getId());
+ dappFundFlowDao.insert(fundFlowEntityProject);
+
+ /**
+ * 发送转币消息
+ */
+ chainProducer.sendBnbTransferMsg(fundFlowEntityProject.getId());
} else {
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
if (flow.getStatus() == 1) {
--
Gitblit v1.9.1