You've already forked FrameTour-BE
- 新增券码批次配置和券码实体 - 实现券码创建、领取、使用等接口 - 添加券码状态和优惠类型枚举 - 优化价格计算逻辑,支持券码优惠 - 新增优惠检测和应用相关功能
62 lines
1.8 KiB
Java
62 lines
1.8 KiB
Java
package com.ycwl.basic.pricing.service;
|
|
|
|
import com.ycwl.basic.pricing.dto.DiscountDetectionContext;
|
|
import com.ycwl.basic.pricing.dto.VoucherInfo;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 券码服务接口
|
|
*/
|
|
public interface IVoucherService {
|
|
|
|
/**
|
|
* 验证并获取券码信息
|
|
* @param voucherCode 券码
|
|
* @param faceId 用户faceId
|
|
* @param scenicId 景区ID
|
|
* @return 券码信息(如果有效)
|
|
*/
|
|
VoucherInfo validateAndGetVoucherInfo(String voucherCode, Long faceId, Long scenicId);
|
|
|
|
/**
|
|
* 获取用户在指定景区的可用券码列表
|
|
* @param faceId 用户faceId
|
|
* @param scenicId 景区ID
|
|
* @return 可用券码列表
|
|
*/
|
|
List<VoucherInfo> getAvailableVouchers(Long faceId, Long scenicId);
|
|
|
|
/**
|
|
* 标记券码为已使用
|
|
* @param voucherCode 券码
|
|
* @param remark 使用备注
|
|
*/
|
|
void markVoucherAsUsed(String voucherCode, String remark);
|
|
|
|
/**
|
|
* 检查用户是否可以在指定景区领取券码
|
|
* @param faceId 用户faceId
|
|
* @param scenicId 景区ID
|
|
* @return 是否可以领取
|
|
*/
|
|
boolean canClaimVoucher(Long faceId, Long scenicId);
|
|
|
|
/**
|
|
* 计算券码优惠金额
|
|
* @param voucherInfo 券码信息
|
|
* @param context 检测上下文
|
|
* @return 优惠金额
|
|
*/
|
|
BigDecimal calculateVoucherDiscount(VoucherInfo voucherInfo, DiscountDetectionContext context);
|
|
|
|
/**
|
|
* 获取最优的券码(如果用户有多个可用券码)
|
|
* @param faceId 用户faceId
|
|
* @param scenicId 景区ID
|
|
* @param context 检测上下文
|
|
* @return 最优券码信息
|
|
*/
|
|
VoucherInfo getBestVoucher(Long faceId, Long scenicId, DiscountDetectionContext context);
|
|
} |