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