master:推广营销返回每一轮可播放的数量;

pull/1121/head
liujiang 2025-11-13 15:13:30 +08:00
parent b4ed317238
commit 90ce29b685
3 changed files with 18 additions and 3 deletions

View File

@ -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:不可购买")

View File

@ -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 = "是否可购买")

View File

@ -66,6 +66,7 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService {
final SysFileMapper fileMapper;
final IAssetService assetService;
final INoticeService noticeService;
final AdvertMapper advertMapper;
// 推广营销位锁 keysymbol + 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())) {