| | |
| | | * 验证节点的价格是否和入参价格一致 |
| | | */ |
| | | 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); |
| | |
| | | * 生成会员节点表记录 |
| | | */ |
| | | String nodeCode = transferDto.getNodeCode(); |
| | | DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCode(nodeCode); |
| | | DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCodeForupdate(nodeCode); |
| | | DappMemberNodeEntity dappMemberNodeEntityNew = new DappMemberNodeEntity( |
| | | member.getId(), |
| | | dappNodeOrderEntity.getId(), |
| | |
| | | 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); |
| | | |
| | | /** |
| | | * 流水关联用户购买节点记录 |
| | | */ |
| | |
| | | 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) { |