From 3f7956fa7435a2b581336dc067cf8f25c1719e1c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 01 Mar 2024 10:44:22 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java |  174 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 125 insertions(+), 49 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 85c7498..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
@@ -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);

--
Gitblit v1.9.1