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