KKSU
2024-04-17 829f629756e5402bcd3e9f6ef1f9c6dbffbabb11
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -1,12 +1,10 @@
package com.xcong.excoin.modules.yunding.service.Impl;
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;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -14,24 +12,28 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.yunding.dao.YdBasicLevelSettingDao;
import com.xcong.excoin.modules.yunding.dao.YdBasicSettingDao;
import com.xcong.excoin.modules.yunding.dao.YdOrderDao;
import com.xcong.excoin.modules.yunding.dao.YdProductDao;
import com.xcong.excoin.modules.yunding.dto.PayProductDto;
import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
import com.xcong.excoin.modules.yunding.dto.*;
import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdBasicSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
import com.xcong.excoin.modules.yunding.service.YunDingService;
import com.xcong.excoin.modules.yunding.vo.OrderAllInfoVo;
import com.xcong.excoin.modules.yunding.vo.YdBasicSettingVo;
import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
import com.xcong.excoin.modules.yunding.vo.YdProductVo;
import com.xcong.excoin.modules.yunding.vo.*;
import com.xcong.excoin.rabbit.producer.YunDingProducter;
import com.xcong.excoin.utils.LogRecordUtils;
import com.xcong.excoin.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -39,7 +41,6 @@
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Slf4j
@@ -54,6 +55,16 @@
    private YdOrderDao ydOrderDao;
    @Resource
    private MemberWalletCoinDao memberWalletCoinDao;
    @Resource
    private MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
    @Resource
    private YdBasicLevelSettingDao ydBasicLevelSettingDao;
    @Resource
    private MemberDao memberDao;
    @Autowired
    private YunDingProducter yunDingProducter;
    @Autowired
    private RedisUtils redisUtils;
    @Override
    public Result findAllInfo() {
@@ -95,6 +106,18 @@
            }
            for(YdProductVo ydProductVo : records){
                ydProductVo.setProfitT(prifitT);
                if(ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) {
                    ydProductVo.setStatus(2);
                }
                Integer shelvesDays = ydProductVo.getShelvesDays();
                String proUnit = ydProductVo.getProUnit();
                if(shelvesDays == 0){
                    ydProductVo.setShelvesDaysStr("待定");
                }else{
                    ydProductVo.setShelvesDaysStr(proUnit+"+"+shelvesDays);
                }
            }
        }
@@ -120,16 +143,29 @@
        /**
         *产出规则
         */
        Date date = DateUtil.date();
        ydProductVo.setNowTime(date);
        //上架天数
        Integer shelvesDays = ydProductVo.getShelvesDays();
        String proUnit = ydProductVo.getProUnit();
        if(shelvesDays == 0){
            ydProductVo.setGetType(2);
            ydProductVo.setShelvesDaysStr("待定");
        }else{
            ydProductVo.setGetType(1);
            ydProductVo.setShelvesDaysStr(proUnit+"+"+shelvesDays);
        }
        Date date = DateUtil.date();
        ydProductVo.setNowTime(date);
        Date workTime = DateUtil.offsetDay(date, shelvesDays);
        ydProductVo.setWorkTime(workTime);
        //服务周期
        Integer proCycle = ydProductVo.getProCycle();
        Date endTime = DateUtil.offsetDay(workTime, proCycle);
        ydProductVo.setEndTime(endTime);
        if (ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) {
            ydProductVo.setStatus(2);
        }
        return Result.ok(ydProductVo);
    }
@@ -157,7 +193,7 @@
         */
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 28L;
        String tradePassword = payProductDto.getTradePassword();
        if(StrUtil.isEmpty(tradePassword)){
            return Result.fail("请输入交易密码");
@@ -182,6 +218,40 @@
        if(ObjectUtil.isEmpty(ydProductEntity)){
            return Result.fail("请重新选择产品");
        }
        Integer status = ydProductEntity.getStatus();
        if(YdProductEntity.STATUE_WORK != status){
            if(YdProductEntity.STATUE_END == status){
                return Result.fail("产品已售罄");
            }
            if(YdProductEntity.STATUE_READY == status){
                return Result.fail("产品未开售");
            }
        }
        //限购总量
        Integer limitedNum = ydProductEntity.getLimitedNum();
        //获取目前待生效,已生效的总T数
        int quantityOwn = 0;
        QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>();
        powerReradyQuery.eq("member_id",memberId);
        powerReradyQuery.eq("product_id",payProductDto.getId());
        powerReradyQuery.eq("type",YdOrderEntity.PRODUCT_ORDER);
        powerReradyQuery.ne("state",YdOrderEntity.ORDER_STATE_END);
        List<YdOrderEntity> powerReradyQuerys = ydOrderDao.selectList(powerReradyQuery);
        if(CollUtil.isNotEmpty(powerReradyQuerys)){
            for(YdOrderEntity ydOrderEntity : powerReradyQuerys){
                quantityOwn = quantityOwn + ydOrderEntity.getQuantity();
            }
        }
        int quantityInt = quantity.intValue();
        if(quantityOwn + quantityInt > limitedNum){
            return Result.fail("产品限购"+limitedNum);
        }
//        if (quantity.compareTo(BigDecimal.valueOf(ydProductEntity.getLimitedNum())) < 1) {
//            return Result.fail("产品限购" + ydProductEntity.getLimitedNum());
//        }
        BigDecimal salePrice = ydProductEntity.getSalePrice();
        //剩余产品数量
        BigDecimal surplusT = ydProductEntity.getSurplusT();
@@ -207,6 +277,7 @@
        ydOrderEntity.setTotalProfit(BigDecimal.ZERO);
        ydOrderEntity.setTodayProfit(BigDecimal.ZERO);
        ydOrderEntity.setState(YdOrderEntity.ORDER_STATE_READY);
        ydOrderEntity.setType(YdOrderEntity.PRODUCT_ORDER);
        Date date = DateUtil.date();
        ydOrderEntity.setBuyTime(date);
        //上架天数
@@ -219,6 +290,11 @@
        ydOrderEntity.setEndTime(endTime);
        ydOrderEntity.setReturnState(YdOrderEntity.RETURN_STATE_READY);
        ydOrderDao.insert(ydOrderEntity);
        //生成流水记录
        LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt,
                "USDT", 1, 3, ydOrderEntity.getId());
        yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId());
        return Result.ok("支付成功");
    }
@@ -249,13 +325,14 @@
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 28L;
//        Long memberId = 447L;
        OrderAllInfoVo orderAllInfoVo = new OrderAllInfoVo();
        DecimalFormat decimalFormat = new DecimalFormat("0.0000#");
        //历史总收益
        BigDecimal totalProfitAll = BigDecimal.ZERO;
        QueryWrapper<YdOrderEntity> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("member_id",memberId);
        objectQueryWrapper.eq("type",YdOrderEntity.PRODUCT_ORDER);
        List<YdOrderEntity> ydOrderEntities = ydOrderDao.selectList(objectQueryWrapper);
        if(CollUtil.isNotEmpty(ydOrderEntities)){
            for(YdOrderEntity order : ydOrderEntities){
@@ -269,11 +346,17 @@
        QueryWrapper<YdOrderEntity> powerNowQuery = new QueryWrapper<>();
        powerNowQuery.eq("member_id",memberId);
        powerNowQuery.eq("state",YdOrderEntity.ORDER_STATE_WORK);
        powerNowQuery.eq("type",YdOrderEntity.PRODUCT_ORDER);
        List<YdOrderEntity> PowerNowQuery = ydOrderDao.selectList(powerNowQuery);
        if(CollUtil.isNotEmpty(PowerNowQuery)){
            for(YdOrderEntity order : PowerNowQuery){
                int quantity = order.getQuantity();
                powerNow = powerNow + quantity;
                Long productId = order.getProductId();
                YdProductEntity ydProductEntity = ydProductDao.selectById(productId);
                if("XCH".equals(ydProductEntity.getCoin())){
                    Integer proNum = ydProductEntity.getProNum();
                    powerNow = powerNow + quantity*proNum;
                }
            }
        }
        orderAllInfoVo.setPowerNow(powerNow);
@@ -281,18 +364,342 @@
        int powerReady = 0;
        QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>();
        powerReradyQuery.eq("member_id",memberId);
        powerReradyQuery.eq("type",YdOrderEntity.PRODUCT_ORDER);
        powerReradyQuery.eq("state",YdOrderEntity.ORDER_STATE_READY);
        List<YdOrderEntity> PowerReradyQuery = ydOrderDao.selectList(powerNowQuery);
        if(CollUtil.isNotEmpty(PowerReradyQuery)){
            for(YdOrderEntity order : PowerReradyQuery){
        List<YdOrderEntity> powerReradyQuerys = ydOrderDao.selectList(powerReradyQuery);
        if(CollUtil.isNotEmpty(powerReradyQuerys)){
            for(YdOrderEntity order : powerReradyQuerys){
                int quantity = order.getQuantity();
                powerReady = powerReady + quantity;
                Long productId = order.getProductId();
                YdProductEntity ydProductEntity = ydProductDao.selectById(productId);
                if("XCH".equals(ydProductEntity.getCoin())){
                    Integer proNum = ydProductEntity.getProNum();
                    powerReady = powerReady + quantity*proNum;
                }
            }
        }
        orderAllInfoVo.setPowerReady(powerReady);
        //昨日总收益
        BigDecimal lastdayProfit = BigDecimal.ZERO;
        Date date = DateUtil.date();
        Date dateTime = DateUtil.offsetDay(date, 1);
        QueryWrapper<MemberAccountMoneyChange> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("type",4);
        queryWrapper.eq("member_id",memberId);
        queryWrapper.eq("status",1);
        queryWrapper.like("create_time",DateUtil.formatDate(dateTime));
        List<MemberAccountMoneyChange> memberAccountMoneyChanges = memberAccountMoneyChangeDao.selectList(queryWrapper);
        if(CollUtil.isNotEmpty(memberAccountMoneyChanges)){
            for(MemberAccountMoneyChange memberAccountMoneyChange : memberAccountMoneyChanges){
                BigDecimal amount = memberAccountMoneyChange.getAmount();
                lastdayProfit = lastdayProfit.add(amount);
            }
        }
        orderAllInfoVo.setLastdayProfit(decimalFormat.format(lastdayProfit));
        return Result.ok(orderAllInfoVo);
    }
    @Override
    public Result getOrderInfo(Long id) {
        log.info("获取订单详情");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
        YdOrderVo ydOrderVo = ydOrderDao.selectOrderByMemberIdAndId(memberId,id);
        return Result.ok(ydOrderVo);
    }
    @Override
    public Result changeUsdt() {
        log.info("转换成USDT");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 442L;
        ChangeVo changeVo = new ChangeVo();
        BigDecimal currentPrice = BigDecimal.ZERO;
        Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
        List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
        if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
            YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
            if(ObjectUtil.isNotEmpty(ydBasicSettingEntity)){
                //获取当前价
                currentPrice = ydBasicSettingEntity.getCurrentPrice();
                if(ObjectUtil.isNotEmpty(currentPrice)){
                    changeVo.setCurrentPrice(currentPrice);
                }
                BigDecimal changeXch = ydBasicSettingEntity.getChangeXch();
                if(ObjectUtil.isNotEmpty(changeXch)){
                    changeVo.setChangeXchRadio(changeXch);
                }
            }
        }
        //获取可用
        MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
        if(ObjectUtil.isNotEmpty(xch)){
            BigDecimal availableBalance = xch.getAvailableBalance();
            changeVo.setXchAvailableBalance(availableBalance.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO:availableBalance);
        }
        return Result.ok(changeVo);
    }
    @Override
    @Transactional
    public Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto) {
        log.info("确认转换成USDT");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 442L;
//        MemberEntity memberEntity = memberDao.selectById(memberId);
        /**
         * 验证入参
         *
         *     USDT账户增加
         *     XCH账户减少
         */
        String tradePassword = insureChangeUsdtdto.getTradePassword();
        if(StrUtil.isEmpty(tradePassword)){
            return Result.fail("请输入交易密码");
        }
        String tradePasswordOwn = memberEntity.getTradePassword();
        if(StrUtil.isEmpty(tradePasswordOwn)){
            return Result.fail("请设置交易密码");
        }
        String tradePasswords = SecureUtil.md5(tradePassword);
        if(!StrUtil.equals(tradePasswordOwn,tradePasswords)){
            return Result.fail("请输入正确的交易密码");
        }
        BigDecimal xchNum = insureChangeUsdtdto.getXchNum();
        if(BigDecimal.ZERO.compareTo(xchNum) >= 0){
            return Result.fail("请输入正确的数量");
        }
        MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
        BigDecimal totalBalance = xch.getTotalBalance();
        BigDecimal subtractTotalBalance = totalBalance.subtract(xchNum);
        if(BigDecimal.ZERO.compareTo(subtractTotalBalance) > 0){
            return Result.fail("XCH数量不足");
        }
        BigDecimal availableBalance = xch.getAvailableBalance();
        BigDecimal subtractAvailableBalance = availableBalance.subtract(xchNum);
        if(BigDecimal.ZERO.compareTo(subtractAvailableBalance) > 0){
            return Result.fail("XCH数量不足");
        }
        //xch减少
        xch.setTotalBalance(subtractTotalBalance);
        xch.setAvailableBalance(subtractAvailableBalance);
        memberWalletCoinDao.updateById(xch);
        BigDecimal currentPrice = BigDecimal.ZERO;
        //获取当前价
        Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
        List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
        if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
            YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
            currentPrice = ydBasicSettingEntity.getCurrentPrice();
        }
        //USDT账户增加
        BigDecimal multiply = xchNum.multiply(currentPrice);
        MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
        usdt.setTotalBalance(usdt.getTotalBalance().add(multiply));
        usdt.setAvailableBalance(usdt.getAvailableBalance().add(multiply));
        memberWalletCoinDao.updateById(usdt);
        //生成流水记录
        LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "XCH兑换"+multiply+"USDT", xchNum,
                "USDT", 1, 7, memberId);
        return Result.ok("操作成功");
    }
    @Override
    public Result getAgentList(YdAgentDto ydAgentDto) {
        log.info("获取代理级别列表");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 442L;
        Page<AgentVo> page = new Page<>(ydAgentDto.getPageNum(), ydAgentDto.getPageSize());
        YdBasicLevelSettingEntity ydBasicLevelSettingEntity = new YdBasicLevelSettingEntity();
        IPage<AgentVo> list = ydOrderDao.getAgentList(page, ydBasicLevelSettingEntity);
        return Result.ok(list);
    }
    @Override
    @Transactional
    public Result bugAgentLevel(BugAgentLeveldto bugAgentLeveldto) {
        log.info("购买代理级别");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
        /**
         * 获取代理级别(Level字段越小,级别越高)
         *      不能向下购买代理级别
         *      不能购买同级别
         * 获取用户当前USDT余额
         *      减少用户的USDT余额
         *      更新用户的代理级别
         */
        String tradePassword = bugAgentLeveldto.getTradePassword();
        if(StrUtil.isEmpty(tradePassword)){
            return Result.fail("请输入交易密码");
        }
        String tradePasswordOwn = memberEntity.getTradePassword();
        if(StrUtil.isEmpty(tradePasswordOwn)){
            return Result.fail("请设置交易密码");
        }
        String tradePasswords = SecureUtil.md5(tradePassword);
        if(!StrUtil.equals(tradePasswordOwn,tradePasswords)){
            return Result.fail("请输入正确的交易密码");
        }
        Long id = bugAgentLeveldto.getId();
        YdBasicLevelSettingEntity ydBasicLevelSettingEntityTo = ydBasicLevelSettingDao.selectById(id);
        if(ObjectUtil.isEmpty(ydBasicLevelSettingEntityTo)){
            return Result.fail("稍候再试");
        }
        Integer levelTo = ydBasicLevelSettingEntityTo.getLevel();
        //获取当前代理级别
        Integer agentLevel = memberEntity.getAgentLevel();
        BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice();
        Integer levelNow = 0;
        if (agentLevel != null) {
            long agentId = Long.parseLong(agentLevel.toString());
            YdBasicLevelSettingEntity ydBasicLevelSettingEntityNow = ydBasicLevelSettingDao.selectById(agentId);
            if(ObjectUtil.isNotEmpty(ydBasicLevelSettingEntityNow)){
                levelNow = ydBasicLevelSettingEntityNow.getLevel();
                if(levelTo.equals(levelNow)){
                    return Result.fail("不能重复购买当前代理");
                }
                if (levelNow < levelTo) {
                    return Result.fail("不能购买低于当前代理");
                }
            }
            //用户如果已经有等级则减少差价
            if(levelNow != 0){
                salePrice = salePrice.subtract(ydBasicLevelSettingEntityNow.getSalePrice());
            }
        }
        //获取用户当前USDT余额
        MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
        BigDecimal availableBalance = usdt.getAvailableBalance();
        if(salePrice.compareTo(availableBalance) > 0){
            return Result.fail("USDT数量不足");
        }
        BigDecimal totalBalance = usdt.getTotalBalance();
        usdt.setAvailableBalance(availableBalance.subtract(salePrice));
        usdt.setTotalBalance(totalBalance.subtract(salePrice));
        memberWalletCoinDao.updateById(usdt);
        //更新用户的代理级别
        ydOrderDao.updateAgentLevel(memberId,Integer.parseInt(id.toString()));
        YdOrderEntity orderEntity = new YdOrderEntity();
        orderEntity.setType(YdOrderEntity.AGENT_ORDER);
        orderEntity.setMemberId(memberId);
        orderEntity.setProductId(id);
        orderEntity.setAmount(salePrice);
        ydOrderDao.insert(orderEntity);
        LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买代理", salePrice,
                "USDT", 1, 8, memberId);
        memberEntity.setAgentLevel(id.intValue());
        LoginUserUtils.resetAppLoginUser(memberEntity);
        yunDingProducter.sendYunDingUsdtProfit(orderEntity.getId());
        return Result.ok("购买成功");
    }
    @Override
    public Result getXchPrice() {
        log.info("获取XCH当前价");
        BigDecimal xchNewPrices = BigDecimal.ZERO;
        String xchNewPrice = redisUtils.getString("XCH_NEW_PRICE");
        if(StrUtil.isNotEmpty(xchNewPrice)){
            xchNewPrices = new BigDecimal(xchNewPrice);
        }
        return Result.ok(xchNewPrices);
    }
    @Override
    public Result getTeamList(TeamInfoDto teamInfoDto) {
        log.info("获取团队信息");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 444L;
//        MemberEntity memberEntity = memberDao.selectById(memberId);
        /**
         * 获取团队总人数,总购买数
         *      详细列表
         *
         */
        TeamVo teamVo = new TeamVo();
        //团队总人数
        int memberNum = 0;
        String inviteId = memberEntity.getInviteId();
        List<MemberEntity> memberEntityList = ydOrderDao.selectMemberByInviteId(inviteId);
        if(CollUtil.isNotEmpty(memberEntityList)){
            memberNum = memberEntityList.size();
        }
        teamVo.setMemberNum(memberNum);
        //购买总算力
        int allPower =0;
        List<YdOrderEntity> ydOrderEntitys = ydOrderDao.selectListByMemberIdAndElse(inviteId);
        if(CollUtil.isNotEmpty(ydOrderEntitys)){
            for(YdOrderEntity ydOrderEntity : ydOrderEntitys){
                Long productId = ydOrderEntity.getProductId();
                YdProductEntity ydProductEntity = ydProductDao.selectById(productId);
                if("XCH".equals(ydProductEntity.getCoin())){
                    Integer proNum = ydProductEntity.getProNum();
                    Integer quantity = ydOrderEntity.getQuantity();
                    allPower = allPower + proNum*quantity;
                }
            }
        }
        teamVo.setAllPower(allPower);
        //详细列表
        Page<TeamInfoVo> page = new Page<>(teamInfoDto.getPageNum(), teamInfoDto.getPageSize());
        IPage<TeamInfoVo> teamInfoVos = ydOrderDao.getTeamInfoList(page, memberEntity);
        List<TeamInfoVo> records = teamInfoVos.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(TeamInfoVo teamInfoVo : records){
                String phone = teamInfoVo.getInvitephone();
                if(StrUtil.isNotEmpty(phone)){
                    teamInfoVo.setInvitephone(StrUtil.subSufByLength(phone,4));
                }
                //下属团队人数
                int memberNumInvite = 0;
                List<MemberEntity> memberEntityInviteList = ydOrderDao.selectMemberByInviteId(phone);
                if(CollUtil.isNotEmpty(memberEntityInviteList)){
                    memberNumInvite = memberEntityInviteList.size();
                }
                teamInfoVo.setMemberNum(memberNumInvite);
                //下属团队总算力
                int powerNum =0;
                List<YdOrderEntity> ydOrderEntityLevel = ydOrderDao.selectListByMemberIdAndElse(inviteId);
                if(CollUtil.isNotEmpty(ydOrderEntityLevel)){
                    for(YdOrderEntity ydOrderEntity : ydOrderEntityLevel){
                        Long productId = ydOrderEntity.getProductId();
                        YdProductEntity ydProductEntity = ydProductDao.selectById(productId);
                        if("XCH".equals(ydProductEntity.getCoin())){
                            Integer proNum = ydProductEntity.getProNum();
                            Integer quantity = ydOrderEntity.getQuantity();
                            powerNum = powerNum + proNum*quantity;
                        }
                    }
                }
                teamInfoVo.setPowerNum(powerNum);
            }
        }
        teamVo.setTeamInfoVos(records);
        return Result.ok(teamVo);
    }
    /**
     * 去加减币币账户余额,减少产品的剩余数目
     * @param memberId