@pisell/pisellos
Version:
一个可扩展的前端模块化SDK框架,支持插件系统
60 lines (59 loc) • 2.34 kB
TypeScript
import { Module, PisellCore, ModuleOptions } from '../../types';
import { BaseModule } from '../BaseModule';
import { Rules, RulesModuleAPI, DiscountResult, UnavailableReason } from './types';
import { Discount } from '../Discount/types';
import { SetDiscountSelectedParams } from '../../solution/ShopDiscount/types';
import { WindowPlugin } from '../../plugins';
export declare class RulesModule extends BaseModule implements Module, RulesModuleAPI {
protected defaultName: string;
protected defaultVersion: string;
private store;
window: WindowPlugin;
private hooks;
constructor(name?: string, version?: string);
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
setRulesList(rulesList: Rules[]): Promise<void>;
getRulesList(): Rules[];
getWalletPassEvaluator(): import("../..").WalletPassEvaluator | undefined;
private checkHolderMatch;
isDiscountListAvailable({ oldDiscountList, newDiscountList, productList, orderTotalAmount, holders, isFormSubject, }: {
oldDiscountList: Discount[];
newDiscountList: Discount[];
productList: any[];
orderTotalAmount: number;
holders: {
form_record_id: number;
}[];
isFormSubject: boolean;
}): {
isAvailable: boolean;
discountList: Discount[];
productList: any[];
unavailableReason?: UnavailableReason;
};
filterDiscountListByType(discountList: Discount[], type: string): Discount[];
private getUnavailableReason;
calcDiscount({ discountList, productList, holders, isFormSubject, orderTotalAmount }: {
discountList: Discount[];
productList: any[];
holders: {
form_record_id: number;
}[];
isFormSubject: boolean;
orderTotalAmount: number;
}, options?: {
isSelected?: boolean;
discountId?: number;
selectedList?: SetDiscountSelectedParams[];
scan?: boolean;
}): DiscountResult;
/**
* 检查优惠是否符合 PackageSubItemUsageRules 配置
* @param discount 优惠券
* @param flatItem 扁平化后的商品项(可能是主商品或bundle子商品)
* @returns 是否可用
*/
private checkPackageSubItemUsageRules;
destroy(): Promise<void>;
clear(): Promise<void>;
}