src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -871,8 +871,39 @@
                    MallMember mallMember = memberMapper.selectById(memberId);
                    if(ObjectUtil.isNotEmpty(mallMember)){
                        //直推
                    }
                        String referrerId = mallMember.getReferrerId();
                        MallMember directMember = memberMapper.selectInfoByInviteId(referrerId);
                        if(ObjectUtil.isNotEmpty(directMember)){
                            BigDecimal basicPerkDirectPercent = new BigDecimal(dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                    DataDictionaryEnum.BASIC_PERK_DIRECT.getType(),
                                    DataDictionaryEnum.BASIC_PERK_DIRECT.getCode()
                            ).getValue()).multiply(new BigDecimal("0.01"));
                            BigDecimal basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN);
                            /**
                             * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行
                             */
                            String frozenDays = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                    DataDictionaryEnum.BASIC_PERK_DIRECT_FROZEN.getType(),
                                    DataDictionaryEnum.BASIC_PERK_DIRECT_FROZEN.getCode()
                            ).getValue();
                            String orderNo = MallUtils.getOrderNum("FNFT");
                            mallMoneyFlowService.addMoneyFlow(
                                    directMember.getId(),
                                    basicPerkDirect,
                                    MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue(),
                                    orderNo,
                                    null,
                                    FlowTypeNewEnum.NFT.getValue(),
                                    MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getDescrition(),
                                    AppContants.MEMBER_FLOW_ING);
                            MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId());
                            mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect));
                            mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect);
                        }
                    }
                }
            }
        }
@@ -1036,6 +1067,62 @@
        }
    }
    @Override
    public void basicMemberPerk() {
        QueryWrapper<MallMoneyFlow> queryMallMoneyFlow = new QueryWrapper<>();
        queryMallMoneyFlow.eq("type",MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue());
        queryMallMoneyFlow.eq("is_return",AppContants.MEMBER_FLOW_ING);
        queryMallMoneyFlow.eq("flow_type",FlowTypeNewEnum.NFT.getValue());
        List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(queryMallMoneyFlow);
        if(CollUtil.isNotEmpty(mallMoneyFlows)){
            return;
        }
        for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){
            mallMoneyFlow.setIsReturn(AppContants.MEMBER_FLOW_DONE);
            mallMoneyFlowMapper.updateById(mallMoneyFlow);
            /**
             * 如果用户是冻结,则直接销毁
             */
            Long memberId = mallMoneyFlow.getMemberId();
            MallMember mallMember = memberMapper.selectById(memberId);
            Integer isFrozen = mallMember.getIsFrozen();
            if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){
                MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId);
                mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount()));
                mallMemberAmountMapper.updateFrozenNftById(mallMemberAmount);
                //插入一条流水记录
                String orderNo = MallUtils.getOrderNum("FNFTW");
                mallMoneyFlowService.addMoneyFlow(
                        memberId,
                        mallMoneyFlow.getAmount().negate(),
                        MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(),
                        orderNo,
                        null,
                        FlowTypeNewEnum.NFT.getValue(),
                        MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(),
                        AppContants.MEMBER_FLOW_ING);
            }else {
                MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId);
                mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount()));
                mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(mallMoneyFlow.getAmount()));
                mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmount);
                //插入一条流水记录
                String orderNo = MallUtils.getOrderNum("NFT");
                mallMoneyFlowService.addMoneyFlow(
                        memberId,
                        mallMoneyFlow.getAmount().negate(),
                        MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(),
                        orderNo,
                        null,
                        FlowTypeNewEnum.NFT.getValue(),
                        MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getDescrition(),
                        AppContants.MEMBER_FLOW_DONE);
            }
        }
    }
    public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva,
                           BigDecimal nftFee,BigDecimal fcmFeeCnt){
        String orderNo = MallUtils.getOrderNum("NFT");