Helius
2021-05-20 0469ade9be848d97eefb92f3e584441d89e6b69d
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -1,7 +1,6 @@
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;
@@ -42,7 +41,6 @@
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Slf4j
@@ -65,6 +63,8 @@
    private MemberDao memberDao;
    @Autowired
    private YunDingProducter yunDingProducter;
    @Autowired
    private RedisUtils redisUtils;
    @Override
    public Result findAllInfo() {
@@ -107,10 +107,8 @@
            for(YdProductVo ydProductVo : records){
                ydProductVo.setProfitT(prifitT);
                if(ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) {
                if(ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) {
                    ydProductVo.setStatus(2);
                } else {
                    ydProductVo.setStatus(1);
                }
            }
        }
@@ -148,10 +146,8 @@
        Date endTime = DateUtil.offsetDay(workTime, proCycle);
        ydProductVo.setEndTime(endTime);
        if (ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) {
        if (ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) {
            ydProductVo.setStatus(2);
        } else {
            ydProductVo.setStatus(1);
        }
        return Result.ok(ydProductVo);
    }
@@ -180,7 +176,7 @@
         */
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 28L;
        String tradePassword = payProductDto.getTradePassword();
        if(StrUtil.isEmpty(tradePassword)){
            return Result.fail("请输入交易密码");
@@ -205,6 +201,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();
@@ -230,6 +260,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);
        //上架天数
@@ -247,7 +278,6 @@
                "USDT", 1, 3, ydOrderEntity.getId());
        yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId());
        yunDingProducter.sendYunDingAutoAgent(ydOrderEntity.getMemberId());
        return Result.ok("支付成功");
    }
@@ -285,6 +315,7 @@
        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){
@@ -298,6 +329,7 @@
        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){
@@ -310,10 +342,11 @@
        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(powerReradyQuery);
        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;
            }
@@ -537,15 +570,83 @@
        //更新用户的代理级别
        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.sendYunDingAutoAgent(memberId);
        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 = ydOrderDao.selectAllPowerByMemberIdAndElse(inviteId);
        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 = ydOrderDao.selectAllPowerByMemberIdAndElse(phone);
                teamInfoVo.setPowerNum(powerNum);
            }
        }
        teamVo.setTeamInfoVos(records);
        return Result.ok(teamVo);
    }
    /**
     * 去加减币币账户余额,减少产品的剩余数目