xiaoyong931011
2023-05-19 97946d338b1bca979b27e3fe747967da90bcc283
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.FebsUtil;
@@ -59,6 +60,9 @@
    private final DappSystemProfitDao dappSystemProfitDao;
    private final ChainProducer chainProducer;
    private final DappFundFlowDao dappFundFlowDao;
    private final DappNodeOrderMapper dappNodeOrderMapper;
    private final DappMemberNodeMapper dappMemberNodeMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -150,8 +154,8 @@
            }
            member = insertMember(connectDto.getAddress(), connectDto.getInviteId());
            //升级用户的代理等级
            DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
            chainProducer.sendAgentUpMsg(dappMemberEntity.getId());
//            DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
//            chainProducer.sendAgentUpMsg(dappMemberEntity.getId());
        }
        String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
@@ -201,7 +205,29 @@
        if (currentUser.getDeptId() == null) {
            member.setCurrentUser(currentUser.getUserId());
        }
        return dappMemberDao.selectInPage(member, page);
        IPage<DappMemberEntity> dappMemberEntityIPage = dappMemberDao.selectInPage(member, page);
        List<DappMemberEntity> records = dappMemberEntityIPage.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(DappMemberEntity memberEntity : records){
                Long memberId = memberEntity.getId();
                //直推收益
                BigDecimal directProfit = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberId,3,2);
                memberEntity.setDirectProfit(directProfit);
                //购买节点数量
                List<DappMemberNodeVo> dappMemberNodeVos = dappMemberNodeMapper.selectListByMemberId(memberId);
                memberEntity.setMemberNodeCnt(CollUtil.isEmpty(dappMemberNodeVos) ? 0 : dappMemberNodeVos.size());
                BigDecimal memberNodeSumPrice = BigDecimal.ZERO;
                if(CollUtil.isNotEmpty(dappMemberNodeVos)){
                    for(DappMemberNodeVo dappMemberNodeVo : dappMemberNodeVos){
                        BigDecimal nodePrice = dappMemberNodeVo.getNodePrice();
                        memberNodeSumPrice = memberNodeSumPrice.add(nodePrice);
                    }
                }
                memberEntity.setMemberNodeSumPrice(memberNodeSumPrice.setScale(8,BigDecimal.ROUND_DOWN));
            }
        }
        return dappMemberEntityIPage;
    }
    @Override
@@ -353,6 +379,9 @@
        if(ObjectUtil.isEmpty(dappSystemProfit)){
            return null;
        }
        //升级用户的代理等级
        DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
        chainProducer.sendAgentUpMsg(dappMemberEntity.getId());
        return buildTeamMatrix(member.getId());
    }
@@ -377,6 +406,12 @@
        DataDictionaryCustom symbolPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYMBOL_PRICE.getType(), DataDictionaryEnum.SYMBOL_PRICE.getCode());
        symbolPriceDic.setValue(symbolPrice);
        dataDictionaryCustomMapper.updateById(symbolPriceDic);
        String directProfit = adminSystemFeeVo.getDirectProfit();
        DataDictionaryCustom directProfitDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.DIRECT_PROFIT.getType(), DataDictionaryEnum.DIRECT_PROFIT.getCode());
        directProfitDic.setValue(directProfit);
        dataDictionaryCustomMapper.updateById(directProfitDic);
    }
    @Override
@@ -387,7 +422,7 @@
        String memberOutCount = redisUtils.getString(redisKey);
        DataDictionaryCustom queueCountSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.QUEUE_COUNT.getType(), DataDictionaryEnum.QUEUE_COUNT.getCode());
        String queueCount = queueCountSet.getValue();
        if(StrUtil.isBlank(memberOutCount)){
        if(StrUtil.isBlank(memberOutCount)|| !queueCount.equals(memberOutCount)){
            redisUtils.set(redisKey,queueCount,0L);
            memberOutCount = queueCount;
        }
@@ -405,8 +440,11 @@
        objectQueryWrapper.eq("state",DappSystemProfit.STATE_IN);
        //实际投资人数
        Integer selectCount = dappSystemProfitDao.selectCount(objectQueryWrapper);
        BigDecimal runPercent = new BigDecimal(selectCount).divide(new BigDecimal(memberCount), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
        apiRunListInfoVo.setRunPercent(runPercent);
        int runPercentNum = memberCount - selectCount;
        runPercentNum = 5-runPercentNum > 0 ? 5-runPercentNum : 1;
        apiRunListInfoVo.setRunPercent(new BigDecimal(runPercentNum).multiply(new BigDecimal(0.4)).setScale(BigDecimal.ROUND_DOWN,1));
//        BigDecimal runPercent = new BigDecimal(selectCount).divide(new BigDecimal(memberCount), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
//        apiRunListInfoVo.setRunPercent(runPercent);
        //实际投资人数小于出局条件人数
        //符合则出局 实际投资人数等于出局条件人数
        DappSystemProfit dappSystemProfitIn = dappSystemProfitDao.selectSystemProfitInByState(DappSystemProfit.STATE_IN);
@@ -452,6 +490,32 @@
        return adminTeamInfoVoIPage;
    }
    @Override
    public FebsResponse getNodeInfo() {
        List<DappNodeOrderVo> dappNodeOrderVos = dappNodeOrderMapper.selectNodeOrderList();
        return new FebsResponse().success().data(dappNodeOrderVos);
    }
    @Override
    public FebsResponse getMemberNode() {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        List<DappMemberNodeVo> dappMemberNodeVos = dappMemberNodeMapper.selectListByMemberId(member.getId());
        return new FebsResponse().success().data(dappMemberNodeVos);
    }
    @Override
    public FebsResponse getMemberInfo() {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        DappMemberInfoVo dappMemberInfoVo = dappMemberDao.selectByMemberId(member.getId());
        return new FebsResponse().success().data(dappMemberInfoVo);
    }
    @Override
    public IPage<DappMemberNodeVo> getMemberNodeInfo(DappMemberEntity dappMemberEntity, QueryRequest request) {
        Page<DappMemberNodeVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        return dappMemberNodeMapper.findMemberNodeInPage(page, dappMemberEntity);
    }
    public TeamListVo buildTeamMatrix(Long memberId) {
        DappMemberEntity member = dappMemberDao.selectById(memberId);
        TeamListVo teamListVo = new TeamListVo();