From 9d54d50c7beb2e6f0baee23ad0d536eb53d89eec Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期一, 25 八月 2025 17:55:06 +0800 Subject: [PATCH] 抽奖活动 --- framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 38 insertions(+), 11 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java index 2da8595..bc0fc1f 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java @@ -8,13 +8,14 @@ import cn.lili.common.utils.StringUtils; import cn.lili.modules.lmk.domain.entity.*; import cn.lili.modules.lmk.domain.query.PrizeRecordTimeQuery; +import cn.lili.modules.lmk.domain.vo.PrizeDetailVO; import cn.lili.modules.lmk.domain.vo.PrizeProbabilityVO; import cn.lili.modules.lmk.domain.vo.PrizeRecordTimeVO; import cn.lili.modules.lmk.enums.general.*; import cn.lili.modules.lmk.service.*; import cn.lili.mybatis.BaseEntity; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; -import cn.lili.rocketmq.tags.CommentTagsEnum; +import cn.lili.utils.COSUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -37,7 +38,6 @@ import java.time.LocalTime; import java.time.ZoneId; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -55,6 +55,7 @@ private final RedissonClient redissonClient; private final RocketmqCustomProperties rocketmqCustomProperties; private final RocketMQTemplate rocketMQTemplate; + private final COSUtil cosUtil; @Override @Transactional(rollbackFor = Exception.class) public Result prize(String prizeId) { @@ -167,20 +168,20 @@ refPrizes = activityRefPrizeService.list(prizeRefQuery); canPrizeMap = refPrizes.stream().filter(item -> { return item.getRemainNum() > 0; - }).collect(Collectors.toMap(ActivityRefPrize::getPrizeId, Function.identity())); + }).collect(Collectors.toMap(ActivityRefPrize::getId, Function.identity())); prizeRecordTimeQuery = new PrizeRecordTimeQuery(); prizeRecordTimeQuery.setStartTime(beginTime); prizeRecordTimeQuery.setEndTime(endTime); prizeRecordTimeQuery.setRecordActivityId(prizeId); prizeRecordListByTime = prizeRecordService.getPrizeRecordListByTime(prizeRecordTimeQuery); prizeRecordListByTime.stream().filter(item->{ - return item.getPrizeId() != null; + return item.getActivityPrizeRefId() != null; }).forEach(item -> { - ActivityRefPrize activityRefPrize = canPrizeMap.get(Long.parseLong(item.getPrizeId())); + ActivityRefPrize activityRefPrize = canPrizeMap.get(item.getActivityPrizeRefId()); if (activityRefPrize != null) { //绉婚櫎褰撴棩涓婇檺鐨勫鍝佸苟涓旀坊鍔犲埌涓嶈兘鎶藉鍟嗗搧涓幓 if (activityRefPrize.getMaxPreDay() <= item.getTotal()) { - canPrizeMap.remove(Long.parseLong(item.getPrizeId())); + canPrizeMap.remove(item.getActivityPrizeRefId()); } } }); @@ -204,7 +205,7 @@ BigDecimal probabilityBegin = BigDecimal.ZERO; for (ActivityRefPrize item : refPrizeList) { PrizeProbabilityVO prizeProbabilityVO = new PrizeProbabilityVO(); - prizeProbabilityVO.setPrizeId(item.getPrizeId()); + prizeProbabilityVO.setActivityPrizeRefId(item.getId()); BigDecimal multiply = item.getPrizeProbability().multiply(BigDecimal.valueOf(100)); BigDecimal[][] position = {{probabilityBegin, multiply.add(probabilityBegin)}}; prizeProbabilityVO.setProbability(position); @@ -217,7 +218,7 @@ BigDecimal minP = prizeProbabilityVO.getProbability()[0][0]; BigDecimal maxP = prizeProbabilityVO.getProbability()[0][1]; if (bigDecimal.compareTo(minP) > 0 && bigDecimal.compareTo(maxP) <= 0) { - prizeWon = prizeProbabilityVO.getPrizeId(); + prizeWon = prizeProbabilityVO.getActivityPrizeRefId(); break; } } @@ -263,7 +264,7 @@ if (!update) { throw new ServiceException("褰撳墠娲诲姩澶伀鐖嗕簡璇风◢鍚庡啀璇�"); } - PrizeDraw prizeDraw = prizeDrawService.getById(prizeWon); + PrizeDraw prizeDraw = prizeDrawService.getById(activityRefPrize.getPrizeId()); //鍐欏叆鎶藉璁板綍 PrizeRecord prizeRecord = new PrizeRecord(); prizeRecord.setUserId(Long.parseLong(userId)); @@ -277,7 +278,7 @@ prizeRecord.setPrizeNumId(Long.parseLong(waitUserPrize.getId())); prizeRecord.setActivityPrizeRefId(Long.parseLong(activityRefPrize.getId())); prizeRecord.setDistributeStatus(PrizeDistributeStatusEnum.WAIT.name()); - prizeRecord.setPrizeId(prizeWon); + prizeRecord.setPrizeId(activityRefPrize.getPrizeId()); prizeRecord.setPrizeName(prizeDraw.getPrizeName()); prizeRecord.setPrizeActivityCover(prizeActivity.getActivityCover()); prizeRecord.setPrizeImg(prizeDraw.getPrizeImg()); @@ -328,6 +329,13 @@ PrizeActivity activity = prizeActivityService.getById(prizeId); if (activity == null) { throw new RuntimeException("褰撳墠娲诲姩涓嶅瓨鍦�"); + } + Date activityEndtime = activity.getEndTime(); + if (new Date().after(activityEndtime)) { + throw new ServiceException("褰撳墠娲诲姩宸茬粡缁撴潫"); + } + if (!PrizeActivityStatusEnum.ON.name().equals(activity.getEnableStatus())) { + throw new ServiceException("娲诲姩杩樻病鏈夊惎鐢�"); } //鑾峰彇鐢ㄦ埛鎶藉娆℃暟 Integer prizeNum = activity.getPrizeNum(); @@ -408,6 +416,25 @@ @Override public Result prizeInfo(String prizeActivityId) { - return null; + if (StringUtils.isBlank(prizeActivityId)) { + return Result.ok().data(0); + } + PrizeDetailVO data = prizeActivityService.prizeInfo(prizeActivityId); + data.getPrizeInfoVOS().forEach(info -> { + String prizeImg = info.getPrizeImg(); + String prizeCover = info.getPrizeCover(); + if (StringUtils.isNotBlank(prizeImg)&&!prizeImg.contains("http")) { + info.setPrizeImg(cosUtil.getPreviewUrl(prizeImg)); + } + if (StringUtils.isNotBlank(prizeCover)&&!prizeCover.contains("http")) { + info.setPrizeCover(cosUtil.getPreviewUrl(prizeCover)); + } + }); + return Result.ok().data(data); + } + + @Override + public Result grantRecord(String prizeActivityId) { + return prizeDrawService.grantRecord(prizeActivityId); } } -- Gitblit v1.8.0