KKSU
2024-03-15 b87c5549fe471167882192944db3f2d6b729476c
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
@@ -27,10 +27,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@@ -47,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);
@@ -82,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);
@@ -111,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){
@@ -143,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(),
@@ -166,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){
@@ -187,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("参数有误,请刷新页面");
            }
@@ -224,41 +310,31 @@
    public void tzInfo() {
        Map<String, JSON> linkedHashMap = new LinkedHashMap<>();
        ArrayList<ApiTzInfoVo> objectDaxiao = new ArrayList<>();
        QueryWrapper<TzInfo> daxiaoQueryWrapper = new QueryWrapper<>();
        daxiaoQueryWrapper.eq("type",1);
        List<TzInfo> daXiaos = tzInfoMapper.selectList(daxiaoQueryWrapper);
        if(CollUtil.isNotEmpty(daXiaos)){
            for(TzInfo tzInfoRedis : daXiaos){
                ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
                objectDaxiao.add(apiTzInfoVo);
            }
        }
        linkedHashMap.put("daXiao", JSONUtil.parse(objectDaxiao));
        ArrayList<ApiTzInfoVo> objectDanshuang = new ArrayList<>();
        QueryWrapper<TzInfo> danshuangQueryWrapper = new QueryWrapper<>();
        danshuangQueryWrapper.eq("type",2);
        List<TzInfo> danShuangs = tzInfoMapper.selectList(danshuangQueryWrapper);
        if(CollUtil.isNotEmpty(danShuangs)){
            for(TzInfo tzInfoRedis : danShuangs){
                ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
                objectDanshuang.add(apiTzInfoVo);
            }
        }
        linkedHashMap.put("danShuang",JSONUtil.parse(objectDanshuang));
        ArrayList<ApiTzInfoVo> objectShuZi = new ArrayList<>();
        QueryWrapper<TzInfo> shuZiQueryWrapper = new QueryWrapper<>();
        shuZiQueryWrapper.eq("type",3);
        List<TzInfo> shuZis = tzInfoMapper.selectList(shuZiQueryWrapper);
        if(CollUtil.isNotEmpty(shuZis)){
            for(TzInfo tzInfoRedis : shuZis){
                ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
                objectShuZi.add(apiTzInfoVo);
            }
        }
        linkedHashMap.put("shuZi",JSONUtil.parse(objectShuZi));
        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);