@pisell/pisellos
Version:
一个可扩展的前端模块化SDK框架,支持插件系统
85 lines (84 loc) • 2.84 kB
TypeScript
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;
}