| | |
| | | import cn.hutool.core.date.DateField; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | |
| | | private final ChainProducer chainProducer; |
| | | private final DappSystemDao dappSystemDao; |
| | | private final DappSystemProfitDao dappSystemProfitDao; |
| | | |
| | | @Override |
| | | public WalletInfoVo walletInfo() { |
| | |
| | | |
| | | DappMemberEntity memberInfo = dappMemberDao.selectById(member.getId()); |
| | | WalletInfoVo walletInfo = new WalletInfoVo(); |
| | | List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1, null); |
| | | List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1, 1); |
| | | DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); |
| | | DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId()); |
| | | |
| | |
| | | walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); |
| | | walletInfo.setTfcBalance(walletMine.getAvailableAmount()); |
| | | walletInfo.setSafePool(mineData.getSafePool()); |
| | | |
| | | walletInfo.setAccountType(memberInfo.getAccountType()); |
| | | DappSystemProfit dappSystemProfit = dappSystemProfitDao.selectByMemberIdAndState(memberInfo.getId(),DappSystemProfit.STATE_IN); |
| | | walletInfo.setSystemProfitId(dappSystemProfit.getId()); |
| | | BigDecimal directProfit = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberInfo.getId(),3,2); |
| | | walletInfo.setDirectProfit(directProfit); |
| | | BigDecimal levelProfit = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberInfo.getId(),4,2); |
| | | walletInfo.setLevelProfit(levelProfit); |
| | | BigDecimal luckyProfit = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberInfo.getId(),7,2); |
| | | walletInfo.setLuckyProfit(luckyProfit); |
| | | return walletInfo; |
| | | } |
| | | |
| | |
| | | return dappAccountMoneyChangeDao.selectInPage(change, page); |
| | | } |
| | | |
| | | /** |
| | | * // 第一次{amount: val, fee: 0, txHash: '', type: 1, buyType: 2} |
| | | * // 成功{type: 1, txHash: result.transactionHash, id: res.data, flag: 'success', buyType: 2} |
| | | * // 失败{type: 1, id: res.data, flag: 'fail', buyType: 2} |
| | | */ |
| | | @Override |
| | | public Long transfer(TransferDto transferDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | // DappMemberEntity member = dappMemberDao.selectById(transferDto.getMemberId()); |
| | | |
| | | String upgrade = redisUtils.getString("APP_UPGRADE"); |
| | | if ("upgrade".equals(upgrade)) { |
| | |
| | | |
| | | if ("success".equals(transferDto.getFlag())) { |
| | | DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); |
| | | if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == flow.getStatus()){ |
| | | return null; |
| | | } |
| | | //是否已经加入动能 |
| | | DappSystemProfit dappSystemProfitIng = dappSystemProfitDao.selectByMemberIdAndState(member.getId(), DappSystemProfit.STATE_IN); |
| | | if(ObjectUtil.isNotEmpty(dappSystemProfitIng)){ |
| | | return null; |
| | | } |
| | | |
| | | //插入一条会员入列记录,即加入动能队列 |
| | | DappSystemProfit dappSystemProfit = new DappSystemProfit(member.getId(), transferDto.getAmount()); |
| | | dappSystemProfitDao.insert(dappSystemProfit); |
| | | |
| | | flow.setFromHash(transferDto.getTxHash()); |
| | | flow.setSystemProfitId(dappSystemProfit.getId()); |
| | | flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE); |
| | | dappFundFlowDao.updateById(flow); |
| | | //升级成为Agent |
| | | dappMemberDao.updateMemberAccountType(DataDictionaryEnum.AGENT.getCode(),member.getId()); |
| | | dappMemberDao.updateMemberActiveStatus(1,member.getId()); |
| | | |
| | | //直接拿走0.05个BNB放入技术方 |
| | | DataDictionaryCustom systemProfit = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYSTEM_PROFIT.getType(), DataDictionaryEnum.SYSTEM_PROFIT.getCode()); |
| | | String systemProfitStr = StrUtil.isEmpty(systemProfit.getValue()) ? "0.05" : systemProfit.getValue(); |
| | | DappFundFlowEntity systemProfitFlow = new DappFundFlowEntity(1L, new BigDecimal(systemProfitStr), 2, 1, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId()); |
| | | dappFundFlowDao.insert(systemProfitFlow); |
| | | //发送转币消息 |
| | | chainProducer.sendBnbTransferMsg(systemProfitFlow.getId()); |
| | | //直接返利30%给直接上级 |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId()); |
| | | String refererId = dappMemberEntity.getRefererId(); |
| | | DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(refererId); |
| | | |
| | | DataDictionaryCustom directProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECT_PROFIT.getType(), DataDictionaryEnum.DIRECT_PROFIT.getCode()); |
| | | BigDecimal directProfitStr = new BigDecimal(StrUtil.isEmpty(directProfitSet.getValue()) ? "0.3" : directProfitSet.getValue()); |
| | | BigDecimal subtract = transferDto.getAmount().subtract(new BigDecimal(systemProfitStr)); |
| | | BigDecimal directProfit = subtract.multiply(directProfitStr).setScale(2,BigDecimal.ROUND_DOWN); |
| | | |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(refererMember.getId(), directProfit, 3, 1, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId()); |
| | | dappFundFlowDao.insert(fundFlow); |
| | | //发送转币消息 |
| | | chainProducer.sendBnbTransferMsg(fundFlow.getId()); |
| | | //层级奖励30% |
| | | chainProducer.sendLevelProfitMsg(dappSystemProfit.getId()); |
| | | //发送一个消息,计算当前是否有人可以出局 |
| | | chainProducer.sendMemberOutMsg(dappSystemProfit.getId()); |
| | | } else { |
| | | DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); |
| | | if (flow.getStatus() == 1) { |
| | |
| | | if (priceDto.getAmount() == null) { |
| | | amount = BigDecimal.ZERO; |
| | | } |
| | | return amount.multiply(new BigDecimal(serviceFeeDic.getValue()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN)).divide(new BigDecimal(symbolPrice.getValue()), 2, RoundingMode.HALF_UP); |
| | | return amount.multiply(new BigDecimal(serviceFeeDic.getValue()).divide(BigDecimal.valueOf(100), 8, RoundingMode.HALF_DOWN)).divide(new BigDecimal(symbolPrice.getValue()), 2, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | @Override |
| | |
| | | DappFundFlowEntity feeFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getFee().negate(), 7, 2, null, null); |
| | | dappFundFlowDao.insert(feeFlow); |
| | | |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getAmount().negate(), 5, 1, withdrawDto.getFee(), null); |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getAmount().negate(), 5, 2, withdrawDto.getFee(), null); |
| | | dappFundFlowDao.insert(fundFlow); |
| | | |
| | | MemberCoinWithdrawEntity memberCoinWithdraw = new MemberCoinWithdrawEntity(); |
| | |
| | | memberCoinWithdraw.setAddress(member.getAddress()); |
| | | memberCoinWithdraw.setAmount(withdrawDto.getAmount()); |
| | | memberCoinWithdraw.setFeeAmount(withdrawDto.getFee()); |
| | | memberCoinWithdraw.setStatus(MemberCoinWithdrawEntity.STATUS_DOING); |
| | | memberCoinWithdraw.setStatus(MemberCoinWithdrawEntity.STATUS_YES); |
| | | memberCoinWithdraw.setSymbol("USDT"); |
| | | memberCoinWithdraw.setFlowId(fundFlow.getId()); |
| | | memberCoinWithdrawDao.insert(memberCoinWithdraw); |
| | | |
| | | // String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(member.getAddress(), withdrawDto.getAmount()); |
| | | // fundFlow.setToHash(hash); |
| | | // dappFundFlowDao.updateById(fundFlow); |
| | | String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(member.getAddress(), withdrawDto.getAmount()); |
| | | fundFlow.setToHash(hash); |
| | | dappFundFlowDao.updateById(fundFlow); |
| | | |
| | | chainProducer.sendFeeDistributeMsg(fundFlow.getId()); |
| | | // Map<String, Object> map = new HashMap<>(); |
| | | // map.put("fee", withdrawDto.getFee()); |
| | | // map.put("address", ChainEnum.BSC_TFC_FEE.getAddress()); |
| | |
| | | public DappWalletCoinEntity findByMemberId(Long memberId) { |
| | | return dappWalletCoinDao.selectByMemberId(memberId); |
| | | } |
| | | |
| | | @Override |
| | | public void transferAgain(TransferDto transferDto) { |
| | | Long memberId = transferDto.getMemberId(); |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | | String upgrade = redisUtils.getString("APP_UPGRADE"); |
| | | if ("upgrade".equals(upgrade)) { |
| | | throw new FebsException("功能升级中"); |
| | | } |
| | | if ("success".equals(transferDto.getFlag())) { |
| | | //是否已经加入动能 |
| | | DappSystemProfit dappSystemProfitIng = dappSystemProfitDao.selectByMemberIdAndState(member.getId(), DappSystemProfit.STATE_IN); |
| | | if(ObjectUtil.isNotEmpty(dappSystemProfitIng)){ |
| | | return; |
| | | } |
| | | //插入一条会员入列记录,即加入动能队列 |
| | | DappSystemProfit dappSystemProfit = new DappSystemProfit(member.getId(), transferDto.getAmount()); |
| | | dappSystemProfitDao.insert(dappSystemProfit); |
| | | DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); |
| | | flow.setFromHash(transferDto.getTxHash()); |
| | | flow.setSystemProfitId(dappSystemProfit.getId()); |
| | | flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE); |
| | | dappFundFlowDao.updateById(flow); |
| | | |
| | | //直接拿走0.05个BNB放入技术方 |
| | | DataDictionaryCustom systemProfit = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYSTEM_PROFIT.getType(), DataDictionaryEnum.SYSTEM_PROFIT.getCode()); |
| | | String systemProfitStr = StrUtil.isEmpty(systemProfit.getValue()) ? "0.05" : systemProfit.getValue(); |
| | | DappFundFlowEntity systemProfitFlow = new DappFundFlowEntity(1L, new BigDecimal(systemProfitStr), 2, 1, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId()); |
| | | dappFundFlowDao.insert(systemProfitFlow); |
| | | //发送转币消息 |
| | | chainProducer.sendBnbTransferMsg(systemProfitFlow.getId()); |
| | | //直接返利30%给直接上级 |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId()); |
| | | String refererId = dappMemberEntity.getRefererId(); |
| | | DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(refererId); |
| | | |
| | | DataDictionaryCustom directProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECT_PROFIT.getType(), DataDictionaryEnum.DIRECT_PROFIT.getCode()); |
| | | BigDecimal directProfitStr = new BigDecimal(StrUtil.isEmpty(directProfitSet.getValue()) ? "0.3" : directProfitSet.getValue()); |
| | | BigDecimal directProfit = (transferDto.getAmount().subtract(new BigDecimal(systemProfitStr))).multiply(directProfitStr).setScale(2,BigDecimal.ROUND_DOWN); |
| | | |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(refererMember.getId(), directProfit, 3, 1, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId()); |
| | | dappFundFlowDao.insert(fundFlow); |
| | | //发送转币消息 |
| | | chainProducer.sendBnbTransferMsg(fundFlow.getId()); |
| | | //层级奖励30% |
| | | chainProducer.sendLevelProfitMsg(dappSystemProfit.getId()); |
| | | //发送一个消息,计算当前是否有人可以出局 |
| | | chainProducer.sendMemberOutMsg(dappSystemProfit.getId()); |
| | | |
| | | } |
| | | } |
| | | } |