UNPKG

@pisell/pisellos

Version:

一个可扩展的前端模块化SDK框架,支持插件系统

85 lines (84 loc) 2.84 kB
import { StrategyConfig } from '../../type'; import { Voucher, Product, VoucherEvaluationResult, EvaluatorInput } from './type'; /** * Wallet Pass 评估器 * 用于评估哪些 voucher 可以在当前订单中使用 */ export declare class WalletPassEvaluator { private engine; private strategyConfigs; private locale; constructor(); setStrategyConfigs(strategyConfigs: StrategyConfig[]): void; getStrategyConfigs(): StrategyConfig[]; setLocale(locale: string): void; getText(key: string): string; /** * 搜索券的格式 * @param input 输入 * @returns 返回搜索券的格式 */ searchVoucherFormat(input: EvaluatorInput): Voucher[]; /** * 评估可用的 vouchers */ evaluate(input: EvaluatorInput): VoucherEvaluationResult[]; /** 检查代金券/折扣卡是否可用 并返回config */ checkVoucherAvailability(input: EvaluatorInput): { isAvailable: boolean; config: { [x: string]: any; }; }; /** * 获取推荐券 * @param input 输入 * @returns 返回推荐券列表 */ getRecommendedVouchers(input: EvaluatorInput): { recommendedAmount: any; recommended: any[]; transformList: any[]; noApplicableVoucher: Voucher[]; }; enhanceWithReason(voucher: any): any; /** * 优惠券处理函数 * @param applicableVouchers 可用的券列表 * @param orderTotalAmount 订单总金额 * @param products 订单商品列表 * @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status */ processVouchers(vouchers: Voucher[], orderTotalAmount: number, products: Product[]): { recommended: any[]; transformList: any[]; }; /** * 重新计算优惠券状态(基于已选券的增量计算) * @param allVouchers 所有原始券列表 * @param selectedVouchers 已选中的券列表(按选中顺序) * @param orderTotalAmount 订单总金额 * @param products 订单商品列表 * @returns 返回更新后的所有券列表和已选券的详细抵扣信息 */ recalculateVouchers(allVouchers: any[], selectedVouchers: any[], orderTotalAmount: number, products: any[]): { allWithUpdatedStatus: any[]; selectedWithDetails: any[]; }; /** * 查找适用于指定 voucher 的策略配置 */ private findApplicableStrategies; /** * 检查策略中是否包含指定的 voucher ID */ private checkVoucherInStrategy; /** * 递归检查条件组中是否包含 voucher ID */ private checkVoucherInConditionGroup; /** * 计算适用商品的总金额和数量 */ private calculateApplicableProducts; }