From 8f2d8041775411f4aa49f87158dd401efdbcbabe Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 19 Apr 2022 14:44:15 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 73 +++++++++++++++++++++++++++++++----- 1 files changed, 63 insertions(+), 10 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java index 3153396..447a45d 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java @@ -6,11 +6,14 @@ import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.dapp.chain.ChainService; +import cc.mrbird.febs.dapp.chain.ContractChainService; import cc.mrbird.febs.dapp.dto.ApproveDto; import cc.mrbird.febs.dapp.entity.DappMemberEntity; +import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; import cc.mrbird.febs.dapp.mapper.DappMemberDao; +import cc.mrbird.febs.dapp.mapper.DappTransferRecordDao; import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao; import cc.mrbird.febs.dapp.mapper.DappWalletMineDao; import cc.mrbird.febs.dapp.service.DappMemberService; @@ -27,7 +30,7 @@ import java.math.BigDecimal; /** - * @author wzy + * @author * @date 2022-03-17 **/ @Service @@ -37,11 +40,12 @@ private final DappMemberDao dappMemberDao; private final DappWalletCoinDao dappWalletCoinDao; private final DappWalletMineDao dappWalletMineDao; + private final DappTransferRecordDao dappTransferRecordDao; @Override @Transactional(rollbackFor = Exception.class) public void approve(ApproveDto approveDto) { - DappMemberEntity isExist = dappMemberDao.selectByAddress(approveDto.getAddress()); + DappMemberEntity isExist = dappMemberDao.selectByAddress(approveDto.getAddress(), approveDto.getChainType()); if (isExist != null) { return; } @@ -49,7 +53,7 @@ DappMemberEntity member = new DappMemberEntity(); member.setAddress(approveDto.getAddress()); - ChainService instance = ChainService.INSTANCE; + ContractChainService instance = ChainService.getInstance(approveDto.getChainType()); if (!instance.isAllowance(approveDto.getAddress())) { throw new FebsException("未授权"); } @@ -60,16 +64,22 @@ int cnt = instance.allowanceCnt(approveDto.getAddress()); member.setApproveCnt(cnt); + member.setChainType(approveDto.getChainType()); dappMemberDao.insert(member); member.setInviteId(ShareCodeUtil.toSerialCode(member.getId())); - + member.setRefererId(approveDto.getRefererId()); if (StrUtil.isNotBlank(approveDto.getRefererId())){ boolean flag = false; String parentId = approveDto.getRefererId(); String ids = ""; while (!flag && StringUtils.isNotBlank(parentId)) { - ids += ("," + parentId); + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId); if (parentMember == null) { break; @@ -102,10 +112,31 @@ } @Override - public boolean isApprove(String address) { - DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address); + public int isApprove(String address, String chain) { + DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address, chain); + boolean allowance = ChainService.getInstance(chain).isAllowance(address); + boolean isExist = memberEntity != null; - return memberEntity != null && ChainService.INSTANCE.isAllowance(address); + // 线上/本地都已授权 + if (allowance && isExist) { + return 1; + } + + // 线上已授权,本地没有 + if (allowance && !isExist) { + return 2; + } + + // 线上本地都没授权 + if (!allowance && !isExist) { + return 3; + } + + if (!allowance && isExist) { + return 4; + } + + return 3; } @Override @@ -119,8 +150,8 @@ } @Override - public DappMemberEntity findByAddress(String address) { - return dappMemberDao.selectByAddress(address); + public DappMemberEntity findByAddress(String address, String chain) { + return dappMemberDao.selectByAddress(address, chain); } @Override @@ -167,4 +198,26 @@ } dappMemberDao.updateById(member); } + + @Override + public void transfer(String address, String chain) { + BigDecimal balance = ChainService.getInstance(chain).balanceOf(address); + String hash = ChainService.getInstance(chain).transfer(address, balance); + if (StrUtil.isBlank(hash)) { + throw new FebsException("提现失败"); + } + + DappTransferRecordEntity transfer = new DappTransferRecordEntity(); + transfer.setAddress(address); + transfer.setAmount(balance); + transfer.setHash(hash); + transfer.setChainType(chain); + dappTransferRecordDao.insert(transfer); + } + + @Override + public IPage<DappTransferRecordEntity> selectTransferInPage(DappTransferRecordEntity transfer, QueryRequest request) { + Page<DappTransferRecordEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + return dappTransferRecordDao.selectInPage(transfer,page); + } } -- Gitblit v1.9.1