Helius
2021-05-14 a1560583ab4dba589acb64238970fdebdea20233
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -30,8 +30,11 @@
import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
import com.xcong.excoin.modules.yunding.service.YunDingService;
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;
@@ -60,6 +63,8 @@
    private YdBasicLevelSettingDao ydBasicLevelSettingDao;
    @Resource
    private MemberDao memberDao;
    @Autowired
    private YunDingProducter yunDingProducter;
    @Override
    public Result findAllInfo() {
@@ -104,8 +109,6 @@
                if(ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) {
                    ydProductVo.setStatus(2);
                } else {
                    ydProductVo.setStatus(1);
                }
            }
        }
@@ -175,7 +178,7 @@
         */
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 28L;
        String tradePassword = payProductDto.getTradePassword();
        if(StrUtil.isEmpty(tradePassword)){
            return Result.fail("请输入交易密码");
@@ -199,6 +202,10 @@
        YdProductEntity ydProductEntity = ydProductDao.selectById(id);
        if(ObjectUtil.isEmpty(ydProductEntity)){
            return Result.fail("请重新选择产品");
        }
        if (quantity.compareTo(BigDecimal.valueOf(ydProductEntity.getLimitedNum())) < 1) {
            return Result.fail("产品限购" + ydProductEntity.getLimitedNum());
        }
        BigDecimal salePrice = ydProductEntity.getSalePrice();
        //剩余产品数量
@@ -225,6 +232,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);
        //上架天数
@@ -240,6 +248,9 @@
        //生成流水记录
        LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt,
                "USDT", 1, 3, ydOrderEntity.getId());
        yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId());
        yunDingProducter.sendYunDingAutoAgent(ydOrderEntity.getMemberId());
        return Result.ok("支付成功");
    }
@@ -277,6 +288,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){
@@ -290,6 +302,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){
@@ -302,6 +315,7 @@
        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)){
@@ -463,9 +477,6 @@
        log.info("购买代理级别");
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        Long memberId = memberEntity.getId();
//        Long memberId = 442L;
//        MemberEntity memberEntity = memberDao.selectById(memberId);
        /**
         * 获取代理级别(Level字段越小,级别越高)
         *      不能向下购买代理级别
@@ -496,21 +507,29 @@
        Integer levelTo = ydBasicLevelSettingEntityTo.getLevel();
        //获取当前代理级别
        Integer agentLevel = memberEntity.getAgentLevel();
        long agentId = Long.parseLong(agentLevel.toString());
        BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice();
        Integer levelNow = 0;
        YdBasicLevelSettingEntity ydBasicLevelSettingEntityNow = ydBasicLevelSettingDao.selectById(agentId);
        if(ObjectUtil.isNotEmpty(ydBasicLevelSettingEntityNow)){
            levelNow = ydBasicLevelSettingEntityNow.getLevel();
            if(levelTo >= levelNow){
                return Result.fail("无法购买");
        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());
            }
        }
        BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice();
        //用户如果已经有等级则减少差价
        if(levelNow != 0){
            salePrice = salePrice.subtract(ydBasicLevelSettingEntityNow.getSalePrice());
        }
        //获取用户当前USDT余额
        MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
        BigDecimal availableBalance = usdt.getAvailableBalance();
@@ -524,8 +543,19 @@
        //更新用户的代理级别
        ydOrderDao.updateAgentLevel(memberId,Integer.parseInt(id.toString()));
        YdOrderEntity orderEntity = new YdOrderEntity();
        orderEntity.setType(YdOrderEntity.AGENT_ORDER);
        orderEntity.setMemberId(memberId);
        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("购买成功");
    }