KKSU
2024-03-15 b87c5549fe471167882192944db3f2d6b729476c
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
@@ -7,22 +7,27 @@
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.conversion.TzInfoConversion;
import cc.mrbird.febs.mall.dto.ApiCreateDto;
import cc.mrbird.febs.mall.dto.ApiCreateItemDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.AsyncCjService;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.vo.ApiTzInfoVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@@ -39,25 +44,23 @@
    private final IApiMallMemberService mallMemberService;
    @Override
    public void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao) {
    public void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao
            ,String hong,String lan,String caiqiu,String liugehao,String sangehao) {
        long l = System.currentTimeMillis();
        List<CjItem> cjItems = cjItemMapper.selectListByInfoId(cjInfo.getId());
        if(CollUtil.isEmpty(cjItems)){
            return;
        }
        /**
         * 1-按大小 2-按单双 3-按数字
         */
        BigDecimal perkAmountTotal = BigDecimal.ZERO;//中奖总金额
        ArrayList<CjItem> CjItemUpdateList = new ArrayList<>();
        List<CjItem> CjItemUpdateList = new ArrayList<>();
        //按大小
        List<CjItem> collectDaXiao = cjItems.stream().filter(cjItem -> cjItem.getType() == 1).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectDaXiao)){
            for(CjItem cjItem : collectDaXiao){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(daXiao);
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(daXiao.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
@@ -74,7 +77,7 @@
        if(CollUtil.isNotEmpty(collectDanShuang)){
            for(CjItem cjItem : collectDanShuang){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(danshuang);
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(danshuang.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
@@ -103,6 +106,92 @@
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        //按红
        List<CjItem> collectHong = cjItems.stream().filter(cjItem -> cjItem.getType() == 4).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectHong)){
            for(CjItem cjItem : collectHong){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(hong.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
                    cjItem.setPerkAmount(perkAmount);
                }else{
                    cjItem.setPerkAmount(perkAmount);
                }
                CjItemUpdateList.add(cjItem);
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        //按蓝
        List<CjItem> collectLan = cjItems.stream().filter(cjItem -> cjItem.getType() == 8).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectLan)){
            for(CjItem cjItem : collectLan){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(lan.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
                    cjItem.setPerkAmount(perkAmount);
                }else{
                    cjItem.setPerkAmount(perkAmount);
                }
                CjItemUpdateList.add(cjItem);
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        //按彩球
        List<CjItem> collectCaiQiu = cjItems.stream().filter(cjItem -> cjItem.getType() == 5).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectCaiQiu)){
            for(CjItem cjItem : collectCaiQiu){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(caiqiu.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
                    cjItem.setPerkAmount(perkAmount);
                }else{
                    cjItem.setPerkAmount(perkAmount);
                }
                CjItemUpdateList.add(cjItem);
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        //六个号码为一组
        List<CjItem> collectLiuGeHao = cjItems.stream().filter(cjItem -> cjItem.getType() == 6).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectLiuGeHao)){
            for(CjItem cjItem : collectLiuGeHao){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(liugehao.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
                    cjItem.setPerkAmount(perkAmount);
                }else{
                    cjItem.setPerkAmount(perkAmount);
                }
                CjItemUpdateList.add(cjItem);
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        //三个号码为一组
        List<CjItem> collectSanGeHao = cjItems.stream().filter(cjItem -> cjItem.getType() == 7).collect(Collectors.toList());
        if(CollUtil.isNotEmpty(collectSanGeHao)){
            for(CjItem cjItem : collectSanGeHao){
                String tzCode = cjItem.getTzCode();
                cjItem.setKjNum(kjNum);
                BigDecimal perkAmount = BigDecimal.ZERO;
                if(sangehao.equals(tzCode)){
                    perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
                    cjItem.setPerkAmount(perkAmount);
                }else{
                    cjItem.setPerkAmount(perkAmount);
                }
                CjItemUpdateList.add(cjItem);
                perkAmountTotal = perkAmountTotal.add(perkAmount);
            }
        }
        cjItemMapper.updateBatchById(CjItemUpdateList);//批量更新
        if(perkAmountTotal.compareTo(BigDecimal.ZERO) > 0){
@@ -135,9 +224,8 @@
    }
    @Override
    public void create(ApiCreateDto apiCreateDto) {
    public void create(ApiCreateDto apiCreateDto,Long memberId) {
        long l = System.currentTimeMillis();
        Long memberId = 1L;
        //开启下注
        DataDictionaryCustom noTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.NO_TIME.getType(),
@@ -158,6 +246,12 @@
            if(BigDecimal.ZERO.compareTo(tzAmount) >= 0){
                throw new FebsException("金额必须大于0");
            }
            Long id = apiCreateItemDto.getId();//投注ID
            TzInfo tzInfo = tzInfoMapper.selectById(id);
            if(ObjectUtil.isEmpty(tzInfo)){
                throw new FebsException("参数有误,请刷新页面");
            }
            apiCreateItemDto.setTzInfo(tzInfo);
            totalAmount = totalAmount.add(tzAmount);
        }
        if(mallMemberWallet.getBalance().compareTo(totalAmount) < 0){
@@ -179,7 +273,7 @@
        for(ApiCreateItemDto apiCreateItemDto : items){
            Long id = apiCreateItemDto.getId();//投注ID
            TzInfo tzInfo = tzInfoMapper.selectById(id);
            TzInfo tzInfo = apiCreateItemDto.getTzInfo();
            if(ObjectUtil.isEmpty(tzInfo)){
                throw new FebsException("参数有误,请刷新页面");
            }
@@ -212,4 +306,43 @@
        log.info("结束:{}", (System.currentTimeMillis() - l));
    }
    @Override
    public void tzInfo() {
        Map<String, JSON> linkedHashMap = new LinkedHashMap<>();
        List<TzInfo> tzInfos = tzInfoMapper.selectList(null);
        linkedHashMap.put("daXiao", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 1).collect(Collectors.toList()))));
        linkedHashMap.put("danShuang", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 2).collect(Collectors.toList()))));
        linkedHashMap.put("shuZi", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 3).collect(Collectors.toList()))));
        linkedHashMap.put("hong", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 4).collect(Collectors.toList()))));
        linkedHashMap.put("caiqiu", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 5).collect(Collectors.toList()))));
        linkedHashMap.put("liuHao", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 6).collect(Collectors.toList()))));
        linkedHashMap.put("sanHao", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 7).collect(Collectors.toList()))));
        linkedHashMap.put("lan", JSONUtil.parse(
                TzInfoConversion.INSTANCE.entitysToVo(
                        tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 8).collect(Collectors.toList()))));
        //投注信息
        String tzInfoNoExit = redisUtils.getString(AppContants.TZ_INFO);
        if (StrUtil.isNotBlank(tzInfoNoExit)) {
            redisUtils.del(AppContants.TZ_INFO);
        }
        JSON jsonStr = JSONUtil.parse(linkedHashMap);
        redisUtils.set(AppContants.TZ_INFO, jsonStr);
    }
}