xiaoyong931011
2023-05-19 97946d338b1bca979b27e3fe747967da90bcc283
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) {