From 90ce29b685fded7b7ac3657b76e798b10e218027 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 13 Nov 2025 15:13:30 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E6=8E=A8=E5=B9=BF=E8=90=A5?= =?UTF-8?q?=E9=94=80=E8=BF=94=E5=9B=9E=E6=AF=8F=E4=B8=80=E8=BD=AE=E5=8F=AF?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E7=9A=84=E6=95=B0=E9=87=8F=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/advertRound/AdRoundTypeRoundResVO.java | 2 ++ .../dto/advertRound/AdRoundTypeRoundResDTO.java | 2 ++ .../service/impl/AdvertRoundServiceImpl.java | 17 ++++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRound/AdRoundTypeRoundResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRound/AdRoundTypeRoundResVO.java index bc920b8c3..bc113d76e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRound/AdRoundTypeRoundResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRound/AdRoundTypeRoundResVO.java @@ -21,6 +21,8 @@ public class AdRoundTypeRoundResVO { private Long advertId; @ApiModelProperty(value = "广告轮次ID") private Integer roundId; + @ApiModelProperty(value = "播放数量") + private Integer playNum; @ApiModelProperty(value = "每个档口可以购买当前广告位数量限制") private Integer storeBuyLimit; @ApiModelProperty(value = "是否可购买 true:可购买 false:不可购买") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/advertRound/AdRoundTypeRoundResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRound/AdRoundTypeRoundResDTO.java index dae0264f0..23db75fa6 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/advertRound/AdRoundTypeRoundResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRound/AdRoundTypeRoundResDTO.java @@ -23,6 +23,8 @@ public class AdRoundTypeRoundResDTO { private Long advertId; @ApiModelProperty(value = "广告轮次ID") private Integer roundId; + @ApiModelProperty(value = "播放数量") + private Integer playNum; @ApiModelProperty(value = "每个档口可以购买当前广告位数量限制") private Integer storeBuyLimit; @ApiModelProperty(value = "是否可购买") diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java index 53a8dfd17..9a626ddfa 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java @@ -66,6 +66,7 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService { final SysFileMapper fileMapper; final IAssetService assetService; final INoticeService noticeService; + final AdvertMapper advertMapper; // 推广营销位锁 key:symbol + roundId 或者 symbol + roundId + position 。value都是new Object() @@ -234,13 +235,18 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService { .findFirst().orElse(currentRoundList.get(0)); // 获取档口能够购买的推广数量 Advert advert = redisCache.getCacheObject(CacheConstants.ADVERT_KEY + advertRound.getAdvertId()); + if (ObjectUtils.isEmpty(advert)) { + advert = Optional.ofNullable(this.advertMapper.selectById(advertRound.getAdvertId())) + .orElseThrow(() -> new ServiceException("推广营销不存在!", HttpStatus.ERROR)); + redisCache.setCacheObject(CacheConstants.ADVERT_KEY + advertRound.getAdvertId(), advert); + } Integer durationDay = calculateDurationDay(advertRound.getStartTime(), advertRound.getEndTime(), Boolean.TRUE); AdRoundTypeRoundResDTO typeRoundResDTO = new AdRoundTypeRoundResDTO().setAdvertId(advertRound.getAdvertId()).setRoundId(advertRound.getRoundId()) .setSymbol(advertRound.getSymbol()).setLaunchStatus(advertRound.getLaunchStatus()).setStartTime(advertRound.getStartTime()) .setEndTime(advertRound.getEndTime()).setStartWeekDay(getDayOfWeek(advertRound.getStartTime())).setDurationDay(durationDay) // 设置是否可以购买当前推广位 - .setCanPurchased(this.setRoundCanPurchased(advertRound, storeId, currentRoundList)) - .setEndWeekDay(getDayOfWeek(advertRound.getEndTime())).setStoreBuyLimit(ObjectUtils.isEmpty(advert) ? 1 : advert.getStoreBuyLimit()) + .setCanPurchased(this.setRoundCanPurchased(advertRound, storeId, currentRoundList)).setPlayNum(advert.getPlayNum()) + .setEndWeekDay(getDayOfWeek(advertRound.getEndTime())).setStoreBuyLimit(advert.getStoreBuyLimit()) .setShowType(advertRound.getShowType()).setPosition(advertRound.getPosition()) .setUploadDeadline(redisCache.getCacheObject(ADVERT_UPLOAD_FILTER_TIME_KEY + advertRound.getSymbol())); // 如果是播放轮,则播放开始时间展示为当天,因为有可能是播放的中间某一天 @@ -535,6 +541,12 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService { store = Optional.ofNullable(this.storeMapper.selectById(createDTO.getStoreId())).orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); redisCache.setCacheObject(CacheConstants.STORE_KEY + createDTO.getStoreId(), store); } + Advert advert = redisCache.getCacheObject(CacheConstants.ADVERT_KEY + createDTO.getAdvertId()); + if (ObjectUtils.isEmpty(advert)) { + advert = Optional.ofNullable(this.advertMapper.selectById(createDTO.getAdvertId())) + .orElseThrow(() -> new ServiceException("推广营销不存在!", HttpStatus.ERROR)); + redisCache.setCacheObject(CacheConstants.ADVERT_KEY + createDTO.getAdvertId(), advert); + } // 购买推广前置校验 this.advertPreBuyCheck(createDTO); // 当前营销推广位的锁 @@ -561,7 +573,6 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService { if (createDTO.getPayPrice().compareTo(ObjectUtils.defaultIfNull(minPriceAdvert.getPayPrice(), BigDecimal.ZERO)) <= 0) { throw new ServiceException("已经有档口出价更高了噢,请重新出价!", HttpStatus.ERROR); } - Advert advert = redisCache.getCacheObject(CacheConstants.ADVERT_KEY + createDTO.getAdvertId()); final String position = Objects.equals(minPriceAdvert.getShowType(), AdShowType.TIME_RANGE.getValue()) ? "" : minPriceAdvert.getPosition(); // storeId不为空,表明之前有其他的档口竞价 if (ObjectUtils.isNotEmpty(minPriceAdvert.getStoreId())) {