fix
wzy
2022-07-30 05d0f9270936df6eb6af19bc3ee7f5ec42acf0df
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -3,16 +3,24 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
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.dto.PriceSettingDto;
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;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,9 +31,10 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Map;
/**
 * @author wzy
 * @author
 * @date 2022-03-17
 **/
@Service
@@ -35,11 +44,13 @@
    private final DappMemberDao dappMemberDao;
    private final DappWalletCoinDao dappWalletCoinDao;
    private final DappWalletMineDao dappWalletMineDao;
    private final DappTransferRecordDao dappTransferRecordDao;
    private final RedisUtils redisUtils;
    @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;
        }
@@ -47,7 +58,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("未授权");
        }
@@ -58,16 +69,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;
@@ -100,23 +117,46 @@
    }
    @Override
    public boolean isApprove(String address) {
        DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address);
        if (memberEntity != null) {
            return true;
    public int isApprove(String address, String chain) {
        DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address, chain);
        boolean allowance = ChainService.getInstance(chain).isAllowance(address);
        boolean isExist = memberEntity != null;
        // 线上/本地都已授权
        if (allowance && isExist) {
            return 1;
        }
        return false;
        // 线上已授权,本地没有
        if (allowance && !isExist) {
            return 2;
        }
        // 线上本地都没授权
        if (!allowance && !isExist) {
            return 3;
        }
        if (!allowance && isExist) {
            return 4;
        }
        return 3;
    }
    @Override
    public IPage<DappMemberEntity> selectInPage(DappMemberEntity member, QueryRequest request) {
        Page<DappMemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        User currentUser = FebsUtil.getCurrentUser();
        if (currentUser.getDeptId() == null) {
            member.setCurrentUser(currentUser.getUserId());
        }
        return dappMemberDao.selectInPage(member, page);
    }
    @Override
    public DappMemberEntity findByAddress(String address) {
        return dappMemberDao.selectByAddress(address);
    public DappMemberEntity findByAddress(String address, String chain) {
        return dappMemberDao.selectByAddress(address, chain);
    }
    @Override
@@ -163,4 +203,33 @@
        }
        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);
    }
    @Override
    public void setNewestPrice(PriceSettingDto priceSettingDto) {
        if (priceSettingDto != null) {
            redisUtils.set(AppContants.REDIS_KEY_ETH_NEW_PRICE, priceSettingDto.getNewestPrice());
        }
    }
}