package com.ycwl.basic.pricing.service; import com.github.pagehelper.PageInfo; import com.ycwl.basic.pricing.dto.req.VoucherUsageHistoryReq; import com.ycwl.basic.pricing.dto.resp.VoucherUsageRecordResp; import com.ycwl.basic.pricing.dto.resp.VoucherUsageStatsResp; import java.util.List; /** * 券码使用记录服务接口 */ public interface IVoucherUsageService { /** * 分页查询券码使用记录 * * @param req 查询请求 * @return 分页结果 */ PageInfo getUsageHistory(VoucherUsageHistoryReq req); /** * 获取指定券码的使用记录 * * @param voucherCode 券码 * @return 使用记录列表 */ List getUsageRecordsByCode(String voucherCode); /** * 获取用户在指定景区的券码使用记录 * * @param faceId 用户faceId * @param scenicId 景区ID * @return 使用记录列表 */ List getUserUsageRecords(Long faceId, Long scenicId); /** * 获取券码使用统计信息 * * @param voucherCode 券码 * @return 统计信息 */ VoucherUsageStatsResp getUsageStats(String voucherCode); /** * 获取批次券码使用统计信息 * * @param batchId 批次ID * @return 统计信息列表 */ List getBatchUsageStats(Long batchId); /** * 记录券码使用(内部方法,由VoucherService调用) * * @param voucherCode 券码 * @param faceId 用户faceId * @param orderId 订单ID * @param discountAmount 优惠金额 * @param remark 备注 */ void recordVoucherUsage(String voucherCode, Long faceId, String orderId, java.math.BigDecimal discountAmount, String remark); }