xiaoyong931011
2023-09-01 069528ae7872ba9fd9e2604715292b7b9c6dd7a3
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -18,6 +18,7 @@
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -69,6 +70,9 @@
    private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
    private final MallAddressInfoMapper mallAddressInfoMapper;
    private final MallGoodsCategoryMapper mallGoodsCategoryMapper;
    private final PlatformBannerMapper platformBannerMapper;
    private final MallGoodsImagesMapper goodsImagesMapper;
    private final MemberCoinWithdrawDao memberCoinWithdrawDao;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -209,17 +213,29 @@
            member.setCurrentUser(currentUser.getUserId());
        }
        IPage<DappMemberEntity> dappMemberEntityIPage = dappMemberDao.selectInPage(member, page);
//        List<DappMemberEntity> records = dappMemberEntityIPage.getRecords();
//        if(CollUtil.isNotEmpty(records)){
//            for(DappMemberEntity memberEntity : records){
//                Long memberId = memberEntity.getId();
//                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
//                memberEntity.setCoinAmount(ObjectUtil.isEmpty(dappWalletCoinEntity) ? BigDecimal.ZERO : dappWalletCoinEntity.getAvailableAmount());
//
//                DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
//                memberEntity.setScoreAmount(ObjectUtil.isEmpty(dappWalletMineEntity) ? BigDecimal.ZERO : dappWalletMineEntity.getAvailableAmount());
//            }
//        }
        List<DappMemberEntity> records = dappMemberEntityIPage.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(DappMemberEntity memberEntity : records){
                Long memberId = memberEntity.getId();
//                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
                BigDecimal myShareAchieve = BigDecimal.ZERO;
                if(CollUtil.isNotEmpty(mallAchieveRecords)){
                    Date payTime = mallAchieveRecords.get(0).getPayTime();
                    //下第一单之后的共享区全部业绩
                    myShareAchieve = mallAchieveRecordMapper.selectAchieveTotalByCreateTime(payTime);
                }
                memberEntity.setMyShareAchieve(myShareAchieve);
                BigDecimal totalIncomeMember = dappMemberDao.selectAllAchieveByRefId(memberEntity.getInviteId());
                memberEntity.setMyTeamAchieve(totalIncomeMember);
                BigDecimal withdrawAmount = memberCoinWithdrawDao.selectByMemberIdAndStatus(memberId, MemberCoinWithdrawEntity.STATUS_YES);
                memberEntity.setWithdrawAmount(withdrawAmount);
            }
        }
        return dappMemberEntityIPage;
    }
@@ -399,6 +415,7 @@
                    teamChildListVo.setOrderCnt(mallAchieveRecords.size());
                }
            }
            myTeamVo.setTeam(list);
        }
        return myTeamVo;
    }
@@ -522,10 +539,22 @@
        DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(member.getId());
        dappMemberInfoVo.setScore(ObjectUtil.isEmpty(dappWalletMineEntity) ? BigDecimal.ZERO : dappWalletMineEntity.getTotalAmount());
        QueryWrapper<MallOrderInfo> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("status", 1);
        Integer selectCount = mallOrderInfoMapper.selectCount(objectQueryWrapper);
        dappMemberInfoVo.setWaitPayCnt(selectCount);
        Integer waitPayCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),1);
        Integer payCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),2);
        Integer cancelCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),3);
        dappMemberInfoVo.setWaitPayCnt(waitPayCnt);
        dappMemberInfoVo.setPayCnt(payCnt);
        dappMemberInfoVo.setCancelCnt(cancelCnt);
//        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(member.getId());
        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(member.getId());
        BigDecimal myShareAchieve = BigDecimal.ZERO;
        if(CollUtil.isNotEmpty(mallAchieveRecords)){
            Date payTime = mallAchieveRecords.get(0).getPayTime();
            //下第一单之后的共享区全部业绩
            myShareAchieve = mallAchieveRecordMapper.selectAchieveTotalByCreateTime(payTime);
        }
        dappMemberInfoVo.setMyShareAchieve(myShareAchieve);
        return new FebsResponse().success().data(dappMemberInfoVo);
    }
@@ -616,6 +645,9 @@
    public MallGoodsListVo findGoodsDetailsById(Long id) {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        MallGoodsListVo mallGoodsListVo = dappMemberDao.selectMallGoodsListVoById(id);
        List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(id);
        mallGoodsListVo.setImages(images);
        return mallGoodsListVo;
    }
@@ -660,9 +692,10 @@
        mallOrderInfo.setAmount(totalAmount);
        mallOrderInfo.setStatus(MallOrderInfo.STATUS_WAIT);
        mallOrderInfo.setDeliverType(addOrderDto.getDeliverType());
        if(1 == addOrderDto.getDeliverType()){
            mallOrderInfo.setAddressId(addOrderDto.getAddressId());
        }
        mallOrderInfo.setAddressId(addOrderDto.getAddressId());
//        if(1 == addOrderDto.getDeliverType()){
//            mallOrderInfo.setAddressId(addOrderDto.getAddressId());
//        }
        mallOrderInfo.setOrderType(1);
        mallOrderInfoMapper.insert(mallOrderInfo);
        MallOrderItem mallOrderItem = new MallOrderItem();
@@ -743,7 +776,7 @@
        }
        BigDecimal totalAmount = orderInfo.getAmount();
        if(achieveAva.compareTo(totalAmount) < 0){
            throw new FebsException("用户最多购买"+achieveAva.setScale(2,BigDecimal.ROUND_DOWN)+"USDT");
            throw new FebsException("用户最多购买"+achieveAva.setScale(2,BigDecimal.ROUND_DOWN));
        }
        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(member.getId());
@@ -803,7 +836,7 @@
                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
        );
        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(8, BigDecimal.ROUND_DOWN);
        packageInfoVo.setPackageScorePrice(packageScorePrice);
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
@@ -816,6 +849,9 @@
    public FebsResponse salePackage(SalePackageDto salePackageDto) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        BigDecimal cnt = salePackageDto.getCnt();
        if(ObjectUtil.isEmpty(salePackageDto.getCnt())){
            throw new FebsException("请输入正确的数量");
        }
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
        BigDecimal saleDoing = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberId, FundFlowEnum.SALE_PACKAGE.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_ING);
        if(BigDecimal.ZERO.compareTo(saleDoing) < 0){
@@ -905,6 +941,10 @@
    @Override
    public void delOrder(Long id) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
        if(MallOrderInfo.STATUS_PAY == mallOrderInfo.getStatus()){
            throw new FebsException("当前订单不允许删除");
        }
        mallOrderInfoMapper.deleteById(id);
        QueryWrapper<MallOrderItem> objectQueryWrapper = new QueryWrapper<>();
@@ -945,6 +985,7 @@
    public IPage<MallAddressInfo> findAddressList(MallGoodsQueryDto queryDto) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        Page<MallAddressInfo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
        queryDto.setMemberId(memberId);
        return dappMemberDao.selectAddressListInPage(queryDto, page);
    }
@@ -975,6 +1016,320 @@
        return mallGoodsCategoryMapper.selectRecommendCategoryList();
    }
    @Override
    public FebsResponse balanceSystem() {
        List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectAllMemberForInCome();
        if(CollUtil.isNotEmpty(dappMemberEntities)){
            //总划入
            BigDecimal totalAdd = BigDecimal.ZERO;
            //资产包卖出划入底池比例
            DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
                    DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
            );
            BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            //资产包积分价格
            DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                    DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
            );
            BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            //卖出积分直接销毁。
            DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
                    DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
            );
            BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_POOR.getType(),
                    DataDictionaryEnum.PACKAGE_POOR.getCode()
            );
            BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            if(dappMemberEntities.size() <= 100){
                for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                    Long memberId = dappMemberEntity.getId();
                    BigDecimal balance = dappMemberEntity.getBalance();
                    //前一百卖出一半
                    BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
                    dappMemberEntity.setBalance(balance.subtract(cnt));
                    dappMemberDao.updateById(dappMemberEntity);
                    //卖出资产乘以价格获取到预期获取的总额
                    BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                    //划入底池的金额
                    BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                    //实际获取的金额
                    BigDecimal realAmount = totalAmount.subtract(poorAmount);
                    //生成一条资金流水
                    DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
                            memberId,
                            realAmount,
                            FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                            DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                            BigDecimal.ZERO);
                    dappFundFlowDao.insert(scoreFlow);
                    dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
                    DappFundFlowEntity feeFlow = new DappFundFlowEntity(
                            memberId,
                            poorAmount.negate(),
                            FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                            DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                            BigDecimal.ZERO);
                    dappFundFlowDao.insert(feeFlow);
                    totalAdd = totalAdd.add(poorAmount);
                }
            }else{
                List<MallAchieveRecord> mallAchieveRecordList = new ArrayList<>();
                for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                    //获取每个人的业绩
                    //业绩集合
                    List<BigDecimal> list = new ArrayList<>();
                    //所有直推团队,就是这个会员的所有区域的业绩。
                    BigDecimal teamIncomeMax = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(dappMemberEntity.getId(),
                            FundFlowEnum.ADD_AMOUNT_REAL.getCode(),
                            DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
                    if(BigDecimal.ZERO.compareTo(teamIncomeMax) >= 0){
                        continue;
                    }
                    MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
                    mallAchieveRecord.setMemberId(dappMemberEntity.getId());
                    mallAchieveRecord.setAmount(teamIncomeMax);
                    mallAchieveRecordList.add(mallAchieveRecord);
//                // 直推用户
//                List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(dappMemberEntity.getInviteId());
//                List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
//                if(CollUtil.isNotEmpty(childsInviteIds)){
//                    for(String inviteId : childsInviteIds){
//                        BigDecimal totalIncomeMember = dappMemberDao.selectAchieveRecordByInviteId(inviteId);
//                        teamIncomeMax = teamIncomeMax.add(totalIncomeMember);
//                        list.add(totalIncomeMember);
//                    }
//                    //去掉一个最大区的业绩
//                    BigDecimal bigMax = list.stream().max(BigDecimal::compareTo).get();
//                    teamIncomeMax = teamIncomeMax.subtract(bigMax);
//                }
                }
                if(CollUtil.isNotEmpty(mallAchieveRecordList)){
                    //按照小区业绩的多少排名
                    List<MallAchieveRecord> collect = mallAchieveRecordList
                            .stream()
                            .sorted(Comparator.comparing(MallAchieveRecord::getAmount))
                            .collect(Collectors.toList());
                    List<MallAchieveRecord> top100Performances = collect.stream()
                            .limit(100)
                            .collect(Collectors.toList());
                    if(CollUtil.isNotEmpty(top100Performances)){
                        for(MallAchieveRecord mallAchieveRecord : top100Performances){
                            Long memberId = mallAchieveRecord.getMemberId();
                            DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
                            BigDecimal balance = dappMemberEntity.getBalance();
                            BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
                            dappMemberEntity.setBalance(balance.subtract(cnt));
                            dappMemberDao.updateById(dappMemberEntity);
                            //卖出资产乘以价格获取到预期获取的总额
                            BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                            //划入底池的金额
                            BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                            //实际获取的金额
                            BigDecimal realAmount = totalAmount.subtract(poorAmount);
                            //生成一条资金流水
                            DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
                                    memberId,
                                    realAmount,
                                    FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                                    DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                    BigDecimal.ZERO);
                            dappFundFlowDao.insert(scoreFlow);
                            dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
                            DappFundFlowEntity feeFlow = new DappFundFlowEntity(
                                    memberId,
                                    poorAmount.negate(),
                                    FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                                    DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                    BigDecimal.ZERO);
                            dappFundFlowDao.insert(feeFlow);
                            totalAdd = totalAdd.add(poorAmount);
                        }
                    }
                    List<MallAchieveRecord> remainingUsers = mallAchieveRecordList
                            .stream()
                            .sorted(Comparator.comparing(MallAchieveRecord::getAmount).reversed())
                            .skip(100)
                            .collect(Collectors.toList());
                    if(CollUtil.isNotEmpty(remainingUsers)){
                        for(MallAchieveRecord mallAchieveRecord : remainingUsers){
                            Long memberId = mallAchieveRecord.getMemberId();
                            DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
                            BigDecimal balance = dappMemberEntity.getBalance();
                            BigDecimal cnt = balance;
                            dappMemberEntity.setBalance(balance.subtract(cnt));
                            dappMemberDao.updateById(dappMemberEntity);
                            //卖出资产乘以价格获取到预期获取的总额
                            BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                            //资产包卖出划入底池比例
                            //划入底池的金额
                            BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                            //实际获取的金额
                            BigDecimal realAmount = totalAmount.subtract(poorAmount);
                            //生成一条资金流水
                            DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
                                    memberId,
                                    realAmount,
                                    FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                                    DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                    BigDecimal.ZERO);
                            dappFundFlowDao.insert(scoreFlow);
                            dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
                            DappFundFlowEntity feeFlow = new DappFundFlowEntity(
                                    memberId,
                                    poorAmount.negate(),
                                    FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
                                    DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                    BigDecimal.ZERO);
                            dappFundFlowDao.insert(feeFlow);
                            totalAdd = totalAdd.add(poorAmount);
                        }
                    }
                }
            }
            BigDecimal avaPackagePoor = packagePoor.add(totalAdd);
            packagePoorDic.setValue(avaPackagePoor.toString());
            dataDictionaryCustomMapper.updateById(packagePoorDic);
            //计算当前价格
            BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
            packageScorePriceDic.setValue(divide.toString());
            dataDictionaryCustomMapper.updateById(packageScorePriceDic);
            DappFundFlowEntity backFlow = new DappFundFlowEntity(
                    1L,
                    totalAdd,
                    FundFlowEnum.SYSTEM_SALE_PACKAGE_BACK.getCode(),
                    DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                    BigDecimal.ZERO);
            dappFundFlowDao.insert(backFlow);
            DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
            dappAKlineEntity.setOpenPrice(divide);
            dappAKlineEntity.setType(1);
            dappAKlineMapper.insert(dappAKlineEntity);
        }
        return new FebsResponse().success();
    }
    @Override
    public IPage<MallAddressInfo> shopAddressList(MallGoodsQueryDto queryDto) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        Page<MallAddressInfo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
        queryDto.setMemberId(1L);
        return dappMemberDao.selectShopAddressListInPage(queryDto, page);
    }
    @Override
    public FebsResponse findAllBanner() {
        QueryWrapper<PlatformBanner> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByAsc("is_top");
        List<PlatformBanner> paymentMethodList = platformBannerMapper.selectList(queryWrapper);
        return new FebsResponse().success().data(paymentMethodList);
    }
    @Override
    public void setDefaultAddress(Long id) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        MallAddressInfo addressInfo = mallAddressInfoMapper.selectById(id);
        if (addressInfo == null) {
            throw new FebsException("地址不存在");
        }
        this.baseMapper.updateIsDefault(MallAddressInfo.IS_YOUR_N, memberId, null);
        this.baseMapper.updateIsDefault(MallAddressInfo.IS_YOUR_Y, memberId, id);
    }
    @Override
    public void confirmOrder(Long id) {
        Long memberId = LoginUserUtil.getAppUser().getId();
        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
        if (ObjectUtil.isEmpty(orderInfo)) {
            throw new FebsException("订单不存在");
        }
        if (orderInfo.getStatus() != MallOrderInfo.STATUS_PAY) {
            throw new FebsException("该状态不能确认收货");
        }
        if (orderInfo.getDeliverState() != MallOrderInfo.DELIVER_STATUS_DONE) {
            throw new FebsException("该状态不能确认收货");
        }
        orderInfo.setDeliverState(MallOrderInfo.DELIVER_STATUS_OVER);
        mallOrderInfoMapper.updateById(orderInfo);
    }
    @Override
    public MallAddressInfo findAddress() {
        Long memberId = LoginUserUtil.getAppUser().getId();
        MallAddressInfo mallAddressInfo = dappMemberDao.selectAddressOneByMemberId(memberId);
        return mallAddressInfo;
    }
    @Override
    public List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto) {
        List<PackageRecordVo> packageRecordVos = new ArrayList<>();
        Integer type = packageRecordDto.getType();
        if(2 == type){
            packageRecordVos = dappMemberDao.selectPackageRecordWeekInPage(DateUtil.beginOfWeek(DateUtil.date()));
        }else if(3 == type){
            packageRecordVos = dappMemberDao.selectPackageRecordMonthInPage(DateUtil.date());
        }else{
            packageRecordVos = dappMemberDao.selectPackageRecordDayInPage(DateUtil.date());
        }
        if(CollUtil.isNotEmpty(packageRecordVos)){
            Integer packageNum = 0;
            for(PackageRecordVo packageRecordVo : packageRecordVos){
                packageNum = packageNum + 1;
                packageRecordVo.setPackageNum(packageNum);
            }
        }
        return packageRecordVos;
    }
    @Override
    public List<AKLineLimitVo> packageKline() {
//        return dappAKlineMapper.selectListByTypeAndLimit(2, 30);
        List<AKLineLimitVo> akLineLimitVos = dappAKlineMapper.selectListByTypeAndLimitDesc(2, 30);
        List<AKLineLimitVo> sortedList = akLineLimitVos.stream()
                .sorted((k1, k2) -> k1.getCreateTime().compareTo(k2.getCreateTime()))
                .collect(Collectors.toList());
        return sortedList;
    }
    @Override
    public FebsResponse changeAbleYes(Long id) {
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(id);
        if(ObjectUtil.isEmpty(dappMemberEntity)) {
            return new FebsResponse().fail().message("会员信息不存在");
        }
        dappMemberEntity.setChangeAble(1);
        dappMemberDao.updateById(dappMemberEntity);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse changeAbleNo(Long id) {
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(id);
        if(ObjectUtil.isEmpty(dappMemberEntity)) {
            return new FebsResponse().fail().message("会员信息不存在");
        }
        dappMemberEntity.setChangeAble(2);
        dappMemberDao.updateById(dappMemberEntity);
        return new FebsResponse().success();
    }
    public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
        List<List<String>> partitionedList = new ArrayList<>();
        int size = originalList.size();