feat(voucher): 支持券码重复使用

- 新增VoucherBatchCreateReqV2 请求对象,用于创建支持重复使用的券码批次
- 添加 VoucherUsageController 控制器,实现券码使用记录和统计功能
- 在VoucherInfo 对象中增加与重复使用相关的字段
- 修改 PriceVoucherBatchConfig 和 PriceVoucherCode 实体,支持重复使用相关属性
- 更新 VoucherBatchServiceImpl 和 VoucherServiceImpl,增加处理重复使用逻辑的方法
This commit is contained in:
2025-09-16 01:08:54 +08:00
parent 5531c576e0
commit ce3f7aae1e
17 changed files with 1167 additions and 21 deletions

View File

@@ -0,0 +1,67 @@
package com.ycwl.basic.pricing.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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 分页结果
*/
Page<VoucherUsageRecordResp> getUsageHistory(VoucherUsageHistoryReq req);
/**
* 获取指定券码的使用记录
*
* @param voucherCode 券码
* @return 使用记录列表
*/
List<VoucherUsageRecordResp> getUsageRecordsByCode(String voucherCode);
/**
* 获取用户在指定景区的券码使用记录
*
* @param faceId 用户faceId
* @param scenicId 景区ID
* @return 使用记录列表
*/
List<VoucherUsageRecordResp> getUserUsageRecords(Long faceId, Long scenicId);
/**
* 获取券码使用统计信息
*
* @param voucherCode 券码
* @return 统计信息
*/
VoucherUsageStatsResp getUsageStats(String voucherCode);
/**
* 获取批次券码使用统计信息
*
* @param batchId 批次ID
* @return 统计信息列表
*/
List<VoucherUsageStatsResp> 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);
}