feat(VideoRepository): 增加凭证检测逻辑

- 在判断视频是否购买的逻辑中添加了凭证检测
- 使用 DiscountDetectionContext 和 IVoucherService 来获取用户凭证信息
- 如果用户拥有全场免费的凭证,则认为已购买视频
This commit is contained in:
2025-08-23 14:34:34 +08:00
parent dc8d9448e6
commit a04e7b5183

View File

@@ -3,6 +3,10 @@ package com.ycwl.basic.repository;
import com.ycwl.basic.biz.PriceBiz;
import com.ycwl.basic.model.mobile.order.IsBuyBatchRespVO;
import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
import com.ycwl.basic.pricing.dto.DiscountDetectionContext;
import com.ycwl.basic.pricing.dto.VoucherInfo;
import com.ycwl.basic.pricing.enums.VoucherDiscountType;
import com.ycwl.basic.pricing.service.IVoucherService;
import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.mapper.VideoMapper;
import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity;
@@ -15,6 +19,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Component
@@ -29,6 +34,8 @@ public class VideoRepository {
@Autowired
@Lazy
private PriceBiz priceBiz;
@Autowired
private IVoucherService iVoucherService;
public VideoEntity getVideo(Long videoId) {
if (redisTemplate.hasKey(String.format(VIDEO_CACHE_KEY, videoId))) {
@@ -106,6 +113,14 @@ public class VideoRepository {
if (buy.isBuy()) {
return true;
}
// 确认人员faceId是否有券码
List<VoucherInfo> voucherDetails = iVoucherService.getVoucherDetails(memberVideo.getFaceId(), memberVideo.getScenicId());
if (voucherDetails != null && !voucherDetails.isEmpty()) {
VoucherInfo voucherInfo = voucherDetails.getFirst();
if (voucherInfo.getDiscountType().equals(VoucherDiscountType.FREE_ALL)) {
isBuy = true;
}
}
return isBuy;
}