From 24ceb7b6168f04d1727ad1bbf4ee44d33a545cf4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 19 May 2023 10:12:38 +0800
Subject: [PATCH] twoCoin项目修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   38 +++++++++++++++++++++-----------------
 1 files changed, 21 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..b081d0b 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);
+
                 /**
                  * 流水关联用户购买节点记录
                  */

--
Gitblit v1.9.1