UNPKG

@pisell/pisellos

Version:

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

101 lines (100 loc) 3.57 kB
import { Discount } from "../../modules/Discount/types"; export declare const uniqueById: <T>(arr: T[], key?: string) => T[]; export declare const isNormalProductByDurationSchedule: (item: any) => boolean; export declare const isAllNormalProduct: (items: any[]) => boolean; /** * 获取折扣金额 基于折扣卡类型计算 * 商品券:直接返回商品价格 * 折扣卡:根据折扣卡类型计算 固定金额:直接返回折扣卡金额 百分比:根据折扣卡金额计算 * @param discount * @param total * @param price * @returns */ /** * 获取折扣金额 基于折扣卡类型计算 * 商品券:直接返回商品价格 * 折扣卡:根据折扣卡类型计算 固定金额:直接返回折扣卡金额 百分比:根据折扣卡金额计算 * @param discount * @param total * @param price * @returns */ export declare const getDiscountAmount: (discount: Discount, total: number, price: number) => number; export declare const getDiscountListAmountTotal: (discount: Discount[]) => any; /** * 获取折扣金额 计算每个折扣的金额 * @param discount * @returns */ export declare const getDiscountListAmount: (discount: Discount[]) => any; export interface ScheduleItem { id: number; name: string | { [key: string]: string; }; type: 'standard' | 'time-slots' | 'designation'; start_time: string | null; end_time: string | null; repeat_type: 'none' | 'daily' | 'weekly'; repeat_rule: { end: { type: 'never' | 'date' | 'occurrence'; end_date: string | null; occurrence: number | null; }; frequency: number; excluded_date: Array<{ start: string; end: string; }>; included_date: Array<{ start: string; end: string; }>; frequency_date: number[]; } | null; designation: Array<{ start_date: string; start_time: string; end_date: string; end_time: string; }> | null; is_all: number; time_slot: Array<{ start_time: string; end_time: string; }>; } export declare const getDateIsInSchedule: (dateTime: string, scheduleList: ScheduleItem[]) => boolean; /** * 根据预约时间过滤优惠券列表 * @param discountList 优惠券列表 * @param bookingTime 预约时间 (格式: YYYY-MM-DD HH:mm:ss) * @returns 过滤后的优惠券列表 */ export declare const filterDiscountListByBookingTime: (discountList: Discount[], bookingTime: string | null) => Discount[]; /** * 判断是否是订单级别的固定金额折扣卡 * @param discount 折扣 * @returns 是否是订单级别的固定金额折扣卡 */ export declare const isOrderLevelFixedAmountDiscount: (discount: Discount) => boolean; /** * 计算订单级别固定金额折扣卡的分摊结果 * @param discount 折扣卡 * @param applicableProducts 适用商品列表 { productId, amount, quantity, parentQuantity } * @returns 分摊结果 Map<productId, { discountAmount, difference }> * 注意: * - discountAmount 是单价折扣金额(不是总折扣金额) * - difference(总差值)优先直接加到数量为1的单商品折扣上,如果没有则存储在metadata中 */ export declare const calculateOrderLevelDiscountAllocation: (discount: Discount, applicableProducts: Array<{ productId: string | number; amount: number; quantity: number; parentQuantity?: number; }>) => Map<string | number, { discountAmount: number; difference: number; }>;