@pisell/pisellos 2.1.41 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/core/index.d.ts +8 -1
  2. package/dist/core/index.js +116 -42
  3. package/dist/modules/Customer/index.js +1 -1
  4. package/dist/modules/Order/index.js +4 -4
  5. package/dist/modules/Order/types.d.ts +0 -1
  6. package/dist/modules/Product/types.d.ts +19 -0
  7. package/dist/modules/ProductList/index.js +3 -11
  8. package/dist/modules/Schedule/types.d.ts +2 -0
  9. package/dist/plugins/request.d.ts +19 -1
  10. package/dist/plugins/request.js +11 -0
  11. package/dist/server/index.d.ts +152 -0
  12. package/dist/server/index.js +946 -0
  13. package/dist/server/modules/index.d.ts +16 -0
  14. package/dist/server/modules/index.js +21 -0
  15. package/dist/server/modules/menu/index.d.ts +63 -0
  16. package/dist/server/modules/menu/index.js +476 -0
  17. package/dist/server/modules/menu/types.d.ts +68 -0
  18. package/dist/server/modules/menu/types.js +16 -0
  19. package/dist/server/modules/products/index.d.ts +141 -0
  20. package/dist/server/modules/products/index.js +774 -0
  21. package/dist/server/modules/products/types.d.ts +94 -0
  22. package/dist/server/modules/products/types.js +43 -0
  23. package/dist/server/modules/quotation/index.d.ts +47 -0
  24. package/dist/server/modules/quotation/index.js +367 -0
  25. package/dist/server/modules/quotation/types.d.ts +50 -0
  26. package/dist/server/modules/quotation/types.js +20 -0
  27. package/dist/server/modules/schedule/index.d.ts +62 -0
  28. package/dist/server/modules/schedule/index.js +431 -0
  29. package/dist/server/modules/schedule/types.d.ts +1 -0
  30. package/dist/server/modules/schedule/types.js +2 -0
  31. package/dist/server/modules/schedule/utils.d.ts +32 -0
  32. package/dist/server/modules/schedule/utils.js +747 -0
  33. package/dist/server/types.d.ts +64 -0
  34. package/dist/server/types.js +1 -0
  35. package/dist/server/utils/index.d.ts +5 -0
  36. package/dist/server/utils/index.js +6 -0
  37. package/dist/server/utils/product.d.ts +18 -0
  38. package/dist/server/utils/product.js +339 -0
  39. package/dist/server/utils/schedule.d.ts +14 -0
  40. package/dist/server/utils/schedule.js +108 -0
  41. package/dist/server/utils/time.d.ts +18 -0
  42. package/dist/server/utils/time.js +53 -0
  43. package/dist/solution/BookingByStep/index.d.ts +2 -22
  44. package/dist/solution/BookingByStep/index.js +29 -502
  45. package/dist/solution/BookingByStep/utils/capacity.d.ts +2 -7
  46. package/dist/solution/BookingByStep/utils/capacity.js +8 -24
  47. package/dist/solution/BookingTicket/index.d.ts +8 -0
  48. package/dist/solution/BookingTicket/index.js +105 -71
  49. package/dist/solution/ShopDiscount/index.js +9 -27
  50. package/dist/solution/index.d.ts +0 -1
  51. package/dist/solution/index.js +0 -1
  52. package/dist/types/index.d.ts +26 -0
  53. package/lib/core/index.d.ts +8 -1
  54. package/lib/core/index.js +48 -1
  55. package/lib/modules/Customer/index.js +1 -1
  56. package/lib/modules/Order/index.js +2 -5
  57. package/lib/modules/Order/types.d.ts +0 -1
  58. package/lib/modules/Product/types.d.ts +19 -0
  59. package/lib/modules/ProductList/index.js +2 -10
  60. package/lib/modules/Schedule/types.d.ts +2 -0
  61. package/lib/plugins/request.d.ts +19 -1
  62. package/lib/plugins/request.js +11 -1
  63. package/lib/server/index.d.ts +152 -0
  64. package/lib/server/index.js +555 -0
  65. package/lib/server/modules/index.d.ts +16 -0
  66. package/lib/server/modules/index.js +47 -0
  67. package/lib/server/modules/menu/index.d.ts +63 -0
  68. package/lib/server/modules/menu/index.js +234 -0
  69. package/lib/server/modules/menu/types.d.ts +68 -0
  70. package/lib/server/modules/menu/types.js +33 -0
  71. package/lib/server/modules/products/index.d.ts +141 -0
  72. package/lib/server/modules/products/index.js +442 -0
  73. package/lib/server/modules/products/types.d.ts +94 -0
  74. package/lib/server/modules/products/types.js +35 -0
  75. package/lib/server/modules/quotation/index.d.ts +47 -0
  76. package/lib/server/modules/quotation/index.js +177 -0
  77. package/lib/server/modules/quotation/types.d.ts +50 -0
  78. package/lib/server/modules/quotation/types.js +33 -0
  79. package/lib/server/modules/schedule/index.d.ts +62 -0
  80. package/lib/server/modules/schedule/index.js +231 -0
  81. package/lib/server/modules/schedule/types.d.ts +1 -0
  82. package/lib/server/modules/schedule/types.js +23 -0
  83. package/lib/server/modules/schedule/utils.d.ts +32 -0
  84. package/lib/server/modules/schedule/utils.js +451 -0
  85. package/lib/server/types.d.ts +64 -0
  86. package/lib/server/types.js +17 -0
  87. package/lib/server/utils/index.d.ts +5 -0
  88. package/lib/server/utils/index.js +25 -0
  89. package/lib/server/utils/product.d.ts +18 -0
  90. package/lib/server/utils/product.js +262 -0
  91. package/lib/server/utils/schedule.d.ts +14 -0
  92. package/lib/server/utils/schedule.js +88 -0
  93. package/lib/server/utils/time.d.ts +18 -0
  94. package/lib/server/utils/time.js +70 -0
  95. package/lib/solution/BookingByStep/index.d.ts +2 -22
  96. package/lib/solution/BookingByStep/index.js +42 -321
  97. package/lib/solution/BookingByStep/utils/capacity.d.ts +2 -7
  98. package/lib/solution/BookingByStep/utils/capacity.js +8 -21
  99. package/lib/solution/BookingTicket/index.d.ts +8 -0
  100. package/lib/solution/BookingTicket/index.js +13 -0
  101. package/lib/solution/ShopDiscount/index.js +0 -9
  102. package/lib/solution/index.d.ts +0 -1
  103. package/lib/solution/index.js +0 -2
  104. package/lib/types/index.d.ts +26 -0
  105. package/package.json +2 -2
  106. package/dist/solution/RegisterAndLogin/config.d.ts +0 -87
  107. package/dist/solution/RegisterAndLogin/config.js +0 -792
  108. package/dist/solution/RegisterAndLogin/index.d.ts +0 -189
  109. package/dist/solution/RegisterAndLogin/index.js +0 -2667
  110. package/dist/solution/RegisterAndLogin/types.d.ts +0 -444
  111. package/dist/solution/RegisterAndLogin/types.js +0 -231
  112. package/dist/solution/RegisterAndLogin/utils.d.ts +0 -95
  113. package/dist/solution/RegisterAndLogin/utils.js +0 -322
  114. package/lib/solution/RegisterAndLogin/config.d.ts +0 -87
  115. package/lib/solution/RegisterAndLogin/config.js +0 -594
  116. package/lib/solution/RegisterAndLogin/index.d.ts +0 -189
  117. package/lib/solution/RegisterAndLogin/index.js +0 -1593
  118. package/lib/solution/RegisterAndLogin/types.d.ts +0 -444
  119. package/lib/solution/RegisterAndLogin/types.js +0 -78
  120. package/lib/solution/RegisterAndLogin/utils.d.ts +0 -95
  121. package/lib/solution/RegisterAndLogin/utils.js +0 -279
@@ -104,8 +104,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
104
104
  schedule_date: "",
105
105
  is_deposit: 0,
106
106
  relation_products: [],
107
- relation_forms: [],
108
- ...(params == null ? void 0 : params.extraData) || {}
107
+ relation_forms: []
109
108
  };
110
109
  let is_deposit = 0;
111
110
  if (params.cartItems.length > 0) {
@@ -121,9 +120,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
121
120
  order.relation_forms.push(...relationForms);
122
121
  delete item._origin.relation_forms;
123
122
  } else {
124
- const relationForms = (0, import_utils.mergeRelationForms)(
125
- item._origin.relation_forms || []
126
- );
123
+ const relationForms = (0, import_utils.mergeRelationForms)(item._origin.relation_forms || []);
127
124
  item._origin.relation_forms = relationForms;
128
125
  order.bookings.push(item._origin);
129
126
  }
@@ -16,7 +16,6 @@ export interface CommitOrderParams {
16
16
  cartItems: CartItem[];
17
17
  type: 'virtual' | 'appointment_booking';
18
18
  platform?: 'pc' | 'h5';
19
- extraData?: Record<string, any>;
20
19
  };
21
20
  }
22
21
  /**
@@ -1,3 +1,14 @@
1
+ /**
2
+ * 商品集合接口
3
+ */
4
+ export interface ProductCollection {
5
+ /** 商品集合id */
6
+ id: number;
7
+ /** 商品集合名称 */
8
+ title: string;
9
+ /** 商品集合封面 */
10
+ cover: string;
11
+ }
1
12
  /**
2
13
  * 商品基本信息接口
3
14
  */
@@ -8,6 +19,8 @@ export interface ProductData {
8
19
  id: number;
9
20
  /** 商品所属账户id */
10
21
  account_id: number | string;
22
+ /** 商品集合 */
23
+ collection?: ProductCollection[];
11
24
  /** 扩展类型id */
12
25
  extension_id: number;
13
26
  /** 扩展类型 */
@@ -189,6 +202,12 @@ export interface ProductData {
189
202
  };
190
203
  /** 购物车行键,用于唯一标识购物车中的商品,用于相同 SKU商品合并 */
191
204
  rowKey?: string;
205
+ /** 套餐组数量 */
206
+ bundle_group_count: number;
207
+ /** 选项组数量 */
208
+ option_group_count: number;
209
+ /** 服务时长 */
210
+ service_times?: any;
192
211
  }
193
212
  /**
194
213
  * 商品媒体信息接口
@@ -95,21 +95,13 @@ var ProductList = class extends import_BaseModule.BaseModule {
95
95
  with_count,
96
96
  // client_schedule_ids: schedule_ids,
97
97
  schedule_date,
98
- application_code: (_b = this.otherParams) == null ? void 0 : _b.channel,
99
98
  with_schedule,
100
99
  schedule_datetime,
101
- is_eject: 1
100
+ application_code: (_b = this.otherParams) == null ? void 0 : _b.channel
102
101
  },
103
- { useCache: true }
102
+ { osServer: true }
104
103
  );
105
104
  const sortedList = (productsData.data.list || []).slice().sort((a, b) => Number(b.sort) - Number(a.sort));
106
- if (sortedList.length) {
107
- sortedList.forEach((n) => {
108
- if (n.is_eject !== 1 && n["schedule.ids"] && n["schedule.ids"].length) {
109
- n.is_eject = 1;
110
- }
111
- });
112
- }
113
105
  this.addProduct(sortedList);
114
106
  return sortedList;
115
107
  }
@@ -1,6 +1,8 @@
1
1
  import dayjs from 'dayjs';
2
2
  export interface ScheduleState {
3
3
  scheduleList: ScheduleItem[];
4
+ /** 日程 Map 缓存(以 id 为 key,加速查询) */
5
+ map: Map<number, ScheduleItem>;
4
6
  availabilityDateList: ScheduleAvailabilityDateItem[];
5
7
  otherProductsIds: number[];
6
8
  }
@@ -35,6 +35,23 @@ export interface RequestPlugin extends Plugin {
35
35
  */
36
36
  request: <T = any>(options: RequestOptions) => Promise<T>;
37
37
  }
38
+ export declare enum RequestModeENUM {
39
+ LOCAL = "local",
40
+ REMOTE = "remote",
41
+ LOCAL_REMOTE = "local_remote",
42
+ REMOTE_LOCAL = "remote_local",
43
+ OS_SERVER = "os_server"
44
+ }
45
+ export type RequestModeType = RequestModeENUM.LOCAL | RequestModeENUM.REMOTE | RequestModeENUM.LOCAL_REMOTE | RequestModeENUM.REMOTE_LOCAL | RequestModeENUM.OS_SERVER;
46
+ export type CacheType = 'memory' | 'storage' | 'indexDB';
47
+ export interface CacheProps {
48
+ key?: string;
49
+ type?: CacheType;
50
+ updateCache?: boolean;
51
+ cacheUpdateChange?: (data: any) => void;
52
+ mode?: RequestModeType;
53
+ cacheKeyData?: any;
54
+ }
38
55
  /**
39
56
  * 请求配置
40
57
  */
@@ -49,7 +66,8 @@ export interface RequestOptions {
49
66
  responseType?: 'json' | 'text' | 'arraybuffer' | 'blob';
50
67
  withCredentials?: boolean;
51
68
  useCache?: boolean;
52
- customToast?: () => void;
69
+ cache?: CacheProps;
70
+ osServer?: boolean;
53
71
  }
54
72
  /**
55
73
  * 响应接口
@@ -20,9 +20,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var request_exports = {};
21
21
  __export(request_exports, {
22
22
  RequestError: () => RequestError,
23
+ RequestModeENUM: () => RequestModeENUM,
23
24
  default: () => request_default
24
25
  });
25
26
  module.exports = __toCommonJS(request_exports);
27
+ var RequestModeENUM = /* @__PURE__ */ ((RequestModeENUM2) => {
28
+ RequestModeENUM2["LOCAL"] = "local";
29
+ RequestModeENUM2["REMOTE"] = "remote";
30
+ RequestModeENUM2["LOCAL_REMOTE"] = "local_remote";
31
+ RequestModeENUM2["REMOTE_LOCAL"] = "remote_local";
32
+ RequestModeENUM2["OS_SERVER"] = "os_server";
33
+ return RequestModeENUM2;
34
+ })(RequestModeENUM || {});
26
35
  var RequestError = class extends Error {
27
36
  constructor(message, config, request, response) {
28
37
  super(message);
@@ -314,5 +323,6 @@ var RequestPluginImpl = class {
314
323
  var request_default = new RequestPluginImpl();
315
324
  // Annotate the CommonJS export names for ESM import in node:
316
325
  0 && (module.exports = {
317
- RequestError
326
+ RequestError,
327
+ RequestModeENUM
318
328
  });
@@ -0,0 +1,152 @@
1
+ import { ProductsModule } from './modules/products';
2
+ import { MenuModule } from './modules/menu';
3
+ import { QuotationModule } from './modules/quotation';
4
+ import { ScheduleModuleEx } from './modules/schedule';
5
+ import { PisellCore, ServerModuleConfig, InitializeServerOptions } from '../types';
6
+ import type { RouteHandler, HttpMethod, RouteDefinition, Router, ModuleRegistryConfig, RequestSetting } from './types';
7
+ export type { RouteHandler, HttpMethod, RouteDefinition, Router, ModuleRegistryConfig, };
8
+ /**
9
+ * Server 类
10
+ * 用于注册和管理服务端模块
11
+ */
12
+ declare class Server {
13
+ private core;
14
+ products?: ProductsModule;
15
+ menu?: MenuModule;
16
+ quotation?: QuotationModule;
17
+ schedule?: ScheduleModuleEx;
18
+ router: Router;
19
+ private moduleRegistry;
20
+ constructor(core: PisellCore);
21
+ /**
22
+ * 注册路由
23
+ * @param routes 路由定义数组
24
+ */
25
+ private registerRoutes;
26
+ /**
27
+ * 注册单个模块并自动注册其路由
28
+ * @param module 模块实例
29
+ * @param options 模块配置
30
+ * @param moduleName 模块名称(用于日志)
31
+ */
32
+ private registerModuleWithRoutes;
33
+ /**
34
+ * 根据模块名称注册单个模块
35
+ * @param moduleConfig 模块配置(可以是字符串或配置对象)
36
+ */
37
+ private registerModuleByName;
38
+ /**
39
+ * 注册指定的服务端模块
40
+ * @param moduleConfigs 要注册的模块配置数组(模块名称或配置对象)
41
+ */
42
+ registerModules(moduleConfigs?: (string | ServerModuleConfig)[]): Promise<{
43
+ module: any;
44
+ config: ModuleRegistryConfig;
45
+ shouldPreload: boolean;
46
+ }[]>;
47
+ /**
48
+ * 预加载指定模块的数据
49
+ * @param registeredModules 已注册的模块信息
50
+ */
51
+ preloadModulesData(registeredModules: Array<{
52
+ module: any;
53
+ config: ModuleRegistryConfig;
54
+ shouldPreload: boolean;
55
+ }>, options?: InitializeServerOptions): Promise<void>;
56
+ /**
57
+ * 初始化 Server(注册模块并预加载数据)
58
+ * @param moduleConfigs 要注册的模块配置
59
+ * @param autoPreload 是否自动预加载数据
60
+ */
61
+ initialize(moduleConfigs?: (string | ServerModuleConfig)[], autoPreload?: boolean, options?: InitializeServerOptions): Promise<{
62
+ module: any;
63
+ config: ModuleRegistryConfig;
64
+ shouldPreload: boolean;
65
+ }[]>;
66
+ /**
67
+ * 获取 Products 模块实例
68
+ */
69
+ getProducts(): ProductsModule | undefined;
70
+ /**
71
+ * 获取 Menu 模块实例
72
+ */
73
+ getMenu(): MenuModule | undefined;
74
+ /**
75
+ * 获取 Quotation 模块实例
76
+ */
77
+ getQuotation(): QuotationModule | undefined;
78
+ /**
79
+ * 获取 Schedule 模块实例
80
+ */
81
+ getSchedule(): ScheduleModuleEx | undefined;
82
+ /**
83
+ * 获取所有已注册的模块列表
84
+ */
85
+ getRegisteredModules(): string[];
86
+ /**
87
+ * 清空所有server模块的IndexedDB缓存
88
+ * @returns Promise<void>
89
+ */
90
+ clearAllIndexDB(): Promise<void>;
91
+ /**
92
+ * 获取所有注册的路由
93
+ */
94
+ getRoutes(): Router;
95
+ /**
96
+ * 根据方法和路径获取路由处理函数
97
+ * @param method HTTP 方法
98
+ * @param path 路径
99
+ */
100
+ getRouteHandler(method: HttpMethod, path: string): RouteHandler | undefined;
101
+ /**
102
+ * 检查路由是否存在
103
+ * @param method HTTP 方法
104
+ * @param path 路径
105
+ */
106
+ hasRoute(method: HttpMethod, path: string): boolean;
107
+ /**
108
+ * 执行路由处理函数
109
+ * @param method HTTP 方法
110
+ * @param path 路径
111
+ * @param params 请求参数
112
+ */
113
+ handleRoute(method: HttpMethod, path: string, params: {
114
+ url: string;
115
+ method: HttpMethod;
116
+ data?: any;
117
+ config?: RequestSetting;
118
+ }): Promise<any>;
119
+ /**
120
+ * 获取所有路由列表(用于调试和文档)
121
+ */
122
+ getAllRoutes(): Array<{
123
+ method: HttpMethod;
124
+ path: string;
125
+ }>;
126
+ /**
127
+ * 注册 Server 层的业务路由
128
+ * 这些路由需要编排多个模块的数据
129
+ * @private
130
+ */
131
+ private registerServerRoutes;
132
+ /**
133
+ * 处理商品查询请求(编排 Products、Menu、Schedule 模块)
134
+ * 这是一个业务编排方法,协调多个模块完成复杂的业务需求
135
+ */
136
+ private handleProductQuery;
137
+ /**
138
+ * 根据餐牌配置过滤商品
139
+ * @param products 所有商品列表
140
+ * @param activeMenuList 生效的餐牌列表
141
+ * @returns 过滤后的商品列表
142
+ * @private
143
+ */
144
+ private filterProductsByMenuConfig;
145
+ /**
146
+ * 处理获取日程时间段点的请求
147
+ * 通过餐牌ID列表获取所有相关日程的时间段点
148
+ */
149
+ private handleGetScheduleTimePoints;
150
+ }
151
+ export default Server;
152
+ export * from './modules';