From 74cae02c58eb057e6f9422038d5b3ed30b7c9a2f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 10:40:07 +0800
Subject: [PATCH] 香港新环境

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |  534 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 319 insertions(+), 215 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 d118597..69926b9 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
@@ -5,15 +5,17 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.*;
-import cc.mrbird.febs.dapp.chain.ChainEnum;
 import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.chain.ContractChainService;
-import cc.mrbird.febs.dapp.contract.andao.AndaoContractMain;
 import cc.mrbird.febs.dapp.dto.*;
 import cc.mrbird.febs.dapp.entity.*;
-import cc.mrbird.febs.dapp.enumerate.*;
+import cc.mrbird.febs.dapp.enumerate.AccountFlowEnum;
+import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.FundFlowEnum;
+import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.DappMemberService;
+import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
 import cc.mrbird.febs.dapp.vo.*;
 import cc.mrbird.febs.rabbit.producer.ChainProducer;
 import cc.mrbird.febs.system.entity.User;
@@ -28,13 +30,10 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.jsoup.helper.DataUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.web3j.utils.Strings;
 
 import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -70,6 +69,8 @@
     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)
@@ -162,6 +163,11 @@
             member = insertMember(connectDto.getAddress(), referenceID,nodeType);
         }
 
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+        if(2 == dappMemberEntity.getChangeAble()){
+            throw new FebsException("账号已冻结");
+        }
+
         String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
         redisUtils.hset(AppContants.REDIS_KEY_MEMBER_INFO, connectDto.getAddress(), member);
 
@@ -210,17 +216,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;
     }
 
@@ -400,6 +418,7 @@
                     teamChildListVo.setOrderCnt(mallAchieveRecords.size());
                 }
             }
+            myTeamVo.setTeam(list);
         }
         return myTeamVo;
     }
@@ -523,8 +542,22 @@
 
         DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(member.getId());
         dappMemberInfoVo.setScore(ObjectUtil.isEmpty(dappWalletMineEntity) ? BigDecimal.ZERO : dappWalletMineEntity.getTotalAmount());
-        Integer selectCount = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),1);
-        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);
     }
 
@@ -565,7 +598,12 @@
 
     @Override
     public List<AdminAgentLevelOptionTreeVo> getAgentLevelOption() {
-        return dataDictionaryCustomMapper.getAgentLevelOption();
+        List<AdminAgentLevelOptionTreeVo> agentLevelOption = dataDictionaryCustomMapper.getAgentLevelOption();
+        AdminAgentLevelOptionTreeVo adminAgentLevelOptionTreeVo = new AdminAgentLevelOptionTreeVo();
+        adminAgentLevelOptionTreeVo.setId("MEMBER");
+        adminAgentLevelOptionTreeVo.setName("MEMBER");
+        agentLevelOption.add(adminAgentLevelOptionTreeVo);
+        return agentLevelOption;
     }
 
     @Override
@@ -615,6 +653,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;
     }
 
@@ -622,11 +663,17 @@
     @Transactional
     public Long createOrder(AddOrderDto addOrderDto) {
         DappMemberEntity member = LoginUserUtil.getAppUser();
+
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+        if(2 == dappMemberEntity.getChangeAble()){
+            throw new FebsException("账号已冻结");
+        }
 //        DappMemberEntity member = dappMemberDao.selectById(1L);
         /**
          * 1、商品是否上架
          * 2、用户余额是否足够
          */
+
         MallGoods mallGoods = mallGoodsMapper.selectById(addOrderDto.getGoodsId());
         if(ObjectUtil.isEmpty(mallGoods)){
             throw new FebsException("商品不存在");
@@ -743,7 +790,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());
@@ -784,8 +831,8 @@
         /**
          * todo 发送一条订单出的消息
          */
-        chainProducer.sendSpeedPayOrderMsg(id);
-        chainProducer.sendAutoLevelUpTeamMsg(member.getId());
+//        chainProducer.sendSpeedPayOrderMsg(id);
+//        chainProducer.sendAutoLevelUpTeamMsg(member.getId());
     }
 
     @Override
@@ -803,7 +850,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,7 +863,15 @@
     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);
+
+        if(2 == dappMemberEntity.getChangeAble()){
+            throw new FebsException("账号已冻结");
+        }
         BigDecimal saleDoing = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberId, FundFlowEnum.SALE_PACKAGE.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_ING);
         if(BigDecimal.ZERO.compareTo(saleDoing) < 0){
             throw new FebsException("正在进行中,请稍后再试");
@@ -841,7 +896,7 @@
         dappMemberEntity.setBalance(subtract);
         dappMemberDao.updateById(dappMemberEntity);
 
-        chainProducer.sendSalePackageMsg(scoreFlow.getId());
+//        chainProducer.sendSalePackageMsg(scoreFlow.getId());
         return new FebsResponse().success();
     }
 
@@ -905,6 +960,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 +1004,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);
     }
 
@@ -980,28 +1040,42 @@
 
         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);
-
-                    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);
                     //卖出资产乘以价格获取到预期获取的总额
                     BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
-                    //资产包卖出划入底池比例
-                    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);
                     //划入底池的金额
                     BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                     //实际获取的金额
@@ -1022,47 +1096,27 @@
                             DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                             BigDecimal.ZERO);
                     dappFundFlowDao.insert(feeFlow);
-
-                    //卖出积分直接销毁。
-                    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);
-                    //更新USDT底池
-                    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);
-                    BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
-                    packagePoorDic.setValue(avaPackagePoor.toString());
-                    dataDictionaryCustomMapper.updateById(packagePoorDic);
-                    //计算当前价格
-                    BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
-                    packageScorePriceDic.setValue(divide.toString());
-                    dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+                    totalAdd = totalAdd.add(poorAmount);
                 }
-                return new FebsResponse().success();
-            }
-            List<MallAchieveRecord> mallAchieveRecordList = new ArrayList<>();
-            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
-                //获取每个人的业绩
-                //业绩集合
-                List<BigDecimal> list = new ArrayList<>();
-                //所有直推团队,就是这个会员的所有区域的业绩。
+            }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;
-                }
+                    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);
+                    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());
@@ -1076,153 +1130,115 @@
 //                    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);
-                        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);
-                        //卖出资产乘以价格获取到预期获取的总额
-                        BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
-                        //资产包卖出划入底池比例
-                        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);
-                        //划入底池的金额
-                        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);
-
-                        //卖出积分直接销毁。
-                        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);
-                        //更新USDT底池
-                        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);
-                        BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
-                        packagePoorDic.setValue(avaPackagePoor.toString());
-                        dataDictionaryCustomMapper.updateById(packagePoorDic);
-                        //计算当前价格
-                        BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
-                        packageScorePriceDic.setValue(divide.toString());
-                        dataDictionaryCustomMapper.updateById(packageScorePriceDic);
-                    }
                 }
+                if(CollUtil.isNotEmpty(mallAchieveRecordList)){
+                    //按照小区业绩的多少排名
+                    List<MallAchieveRecord> collect = mallAchieveRecordList
+                            .stream()
+                            .sorted(Comparator.comparing(MallAchieveRecord::getAmount))
+                            .collect(Collectors.toList());
 
-                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();
+                    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;
-                        dappMemberEntity.setBalance(balance.subtract(cnt));
-                        dappMemberDao.updateById(dappMemberEntity);
-                        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);
-                        //卖出资产乘以价格获取到预期获取的总额
-                        BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
-                        //资产包卖出划入底池比例
-                        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);
-                        //划入底池的金额
-                        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);
+                            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);
+                        }
+                    }
 
-                        //卖出积分回收。
-                        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);
-                        //更新USDT底池
-                        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);
-                        BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
-                        packagePoorDic.setValue(avaPackagePoor.toString());
-                        dataDictionaryCustomMapper.updateById(packagePoorDic);
-                        //计算当前价格
-                        BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
-                        packageScorePriceDic.setValue(divide.toString());
-                        dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+                    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();
     }
@@ -1255,6 +1271,94 @@
         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(1, 60);
+        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(2);
+        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(1);
+        dappMemberDao.updateById(dappMemberEntity);
+
+        redisUtils.hdel(AppContants.REDIS_KEY_SIGN, dappMemberEntity.getAddress());
+        redisUtils.hdel(AppContants.REDIS_KEY_MEMBER_INFO, dappMemberEntity.getAddress());
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public IPage<SoccerLeagues> selectSoccerLeaguesInPage(SoccerLeagues soccerLeagues, QueryRequest request) {
+        Page<SoccerLeagues> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<SoccerLeagues> soccerLeaguesIPage = dappMemberDao.selectSoccerLeaguesInPage(soccerLeagues, page);
+        return soccerLeaguesIPage;
+    }
+
     public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
         List<List<String>> partitionedList = new ArrayList<>();
         int size = originalList.size();

--
Gitblit v1.9.1