From b87c5549fe471167882192944db3f2d6b729476c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 15 Mar 2024 14:13:55 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java |  157 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 145 insertions(+), 12 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
index 0b206fe..8bb6b34 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
+++ b/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);
+    }
+
 }

--
Gitblit v1.9.1