UNPKG

@pisell/pisellos

Version:

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

88 lines (87 loc) 2.81 kB
import { Module, ModuleOptions, PisellCore } from '../../../types'; import { BaseModule } from '../../../modules/BaseModule'; import type { RouteDefinition } from '../../types'; import { OrderData, OrderId } from './types'; /** * Order 模块 - 基础框架 */ export declare class OrderModule extends BaseModule implements Module { protected defaultName: string; protected defaultVersion: string; private store; private dbManager; private orderDataSource; private pendingSyncMessages; private syncTimer?; private readonly ORDER_SYNC_DEBOUNCE_MS; private resourceIdIndex; private logger; private storage; constructor(name?: string, version?: string); initialize(core: PisellCore, options?: ModuleOptions): Promise<void>; /** * 记录信息日志 * @param title 日志标题 * @param metadata 日志元数据 */ private logInfo; /** * 记录错误日志 * @param title 日志标题 * @param metadata 日志元数据 */ private logError; preload(): Promise<void>; getOrders(): OrderData[]; getOrderById(id: OrderId): OrderData | undefined; /** 按 order_id 查询(推荐) */ getOrderByOrderId(orderId: OrderId): OrderData | undefined; loadOrdersByServer(): Promise<OrderData[]>; getOrdersByResourceId(resourceId: string | number): OrderData[]; getRoutes(): RouteDefinition[]; destroy(): void; private syncOrdersMap; private extractResourceIds; private getOrderDateKey; /** * 初始化 OrderDataSource 实例 */ private initOrderDataSource; /** * 初始化 pubsub 订阅,监听订单变更 */ private setupOrderSync; /** * 处理防抖后的同步消息批次 * * 后端统一发送 change 消息,不再区分新增/编辑/删除。 * - 单条(id/order_id):若携带 body/data 则直接 upsert 到本地 * - 批量(ids):通过 HTTP 按 ids 增量拉取,再 merge 到本地 */ private processOrderSyncMessages; /** * 通过 HTTP 按 ids 增量拉取订单 */ private fetchOrdersByHttp; /** * 将增量订单合并到 store */ private mergeOrdersToStore; private normalizeOrderSyncMessage; private normalizeOrderSyncPayload; private uniqueOrderIds; private getIdKey; /** * 当前订单拉取窗口: * - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化) * - 无法解析时退化为自然日窗口 */ private getCurrentPullWindow; private hasPulledOrdersToday; private markOrderPulledAtNow; private getStorageItem; private setStorageItem; private loadOrdersFromSQLite; private saveOrdersToSQLite; clear(): Promise<void>; }