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