From d76af9f8e49adec7b42dac1406685a4cdb12b78e Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 22 Feb 2024 13:13:26 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java |   11 ++-
 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java    |   57 +++++++++++++++++++
 src/main/java/cc/mrbird/febs/common/utils/AppContants.java                |    3 +
 src/main/java/cc/mrbird/febs/mall/service/CJService.java                  |    5 +
 src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java         |   71 ++++++++++++++++++++---
 src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java             |    3 +
 6 files changed, 137 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index 7348c3d..7b23032 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -1,6 +1,9 @@
 package cc.mrbird.febs.common.utils;
 
 public class AppContants {
+
+
+    public static final String TZ_INFO = "TZ_INFO";//投注信息
     /**
      * 两个数据需要一起改
      */
diff --git a/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java b/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
index d6007ad..c513d16 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
@@ -14,4 +14,7 @@
 
     @Async(FebsConstant.ASYNC_POOL)
     void create(ApiCreateDto apiCreateDto);
+
+    @Async(FebsConstant.ASYNC_POOL)
+    void tzInfo();
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/CJService.java b/src/main/java/cc/mrbird/febs/mall/service/CJService.java
index 35647a8..e99517f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/CJService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/CJService.java
@@ -4,7 +4,10 @@
 import cc.mrbird.febs.mall.dto.ApiCreateDto;
 import cc.mrbird.febs.mall.dto.KjRecordDto;
 import cc.mrbird.febs.mall.entity.CjInfo;
+import cn.hutool.json.JSON;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.LinkedHashMap;
 
 public interface CJService extends IService<CjInfo> {
 
@@ -31,4 +34,6 @@
 
     void getOpenPriceMsg(String kjNo, String kjNum);
 
+    LinkedHashMap<String, JSON> getTzInfo();
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
index 2b1907d..a413958 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
@@ -6,15 +6,19 @@
 import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.mall.conversion.MallGoodsConversion;
+import cc.mrbird.febs.mall.conversion.TzInfoConversion;
 import cc.mrbird.febs.mall.dto.*;
 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.IAdminMallGoodsService;
 import cc.mrbird.febs.mall.vo.*;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -25,10 +29,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -48,6 +49,7 @@
     private final CjInfoMapper cjInfoMapper;
     private final TzInfoMapper tzInfoMapper;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+    private final AsyncCjService asyncCjService;
 
     @Override
     public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) {
@@ -549,6 +551,7 @@
                     tzInfo.getIsRecommend()
             );
         }
+        asyncCjService.tzInfo();
         return new FebsResponse().success().message("操作成功");
     }
 
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..85c7498 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,14 +7,20 @@
 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;
@@ -22,7 +28,9 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -212,4 +220,53 @@
         log.info("结束:{}", (System.currentTimeMillis() - l));
     }
 
+    @Override
+    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));
+
+        //投注信息
+        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);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
index 58cc496..de08726 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
@@ -26,6 +26,9 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -38,7 +41,9 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service
@@ -212,16 +217,14 @@
 
     @Override
     public FebsResponse tzInfo() {
-        ArrayList<ApiTzInfoVo> objects = new ArrayList<>();
-
-        List<TzInfo> tzInfos = tzInfoMapper.selectList(null);
-        if(CollUtil.isNotEmpty(tzInfos)){
-            for(TzInfo tzInfo : tzInfos){
-                ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfo);
-                objects.add(apiTzInfoVo);
-            }
+        LinkedHashMap<String, JSON> tzInfo1 = new LinkedHashMap<>();
+        Object tzInfoMap = redisUtils.get(AppContants.TZ_INFO);
+        if(ObjectUtil.isEmpty(tzInfoMap)){
+            tzInfo1 = this.getTzInfo();
+        }else{
+            tzInfo1 = JSONUtil.toBean(JSONUtil.parseObj(tzInfoMap), LinkedHashMap.class);
         }
-        return new FebsResponse().success().data(objects);
+        return new FebsResponse().success().data(tzInfo1);
     }
 
     @Override
@@ -338,6 +341,56 @@
         }
     }
 
+    @Override
+    public LinkedHashMap<String, JSON> getTzInfo() {
+        LinkedHashMap<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));
+
+        //投注信息
+        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);
+        return linkedHashMap;
+    }
+
     /**
      * 取模运算符%来判断该数字是否为偶数。如果余数为0,则该数字为偶数,返回"双数";否则,该数字为奇数,返回"单数"
      * @param num

--
Gitblit v1.9.1