@pisell/pisellos 0.0.44 → 0.0.46

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 (127) hide show
  1. package/dist/modules/Account/index.d.ts +2 -6
  2. package/dist/modules/Account/index.js +21 -103
  3. package/dist/modules/Account/types.d.ts +12 -1
  4. package/dist/modules/AccountList/index.d.ts +20 -1
  5. package/dist/modules/AccountList/index.js +243 -75
  6. package/dist/modules/AccountList/types.d.ts +33 -1
  7. package/dist/modules/AccountList/types.js +8 -0
  8. package/dist/modules/AccountList/utils.d.ts +9 -0
  9. package/dist/modules/AccountList/utils.js +25 -0
  10. package/dist/modules/BaseModule.d.ts +2 -2
  11. package/dist/modules/BaseModule.js +1 -1
  12. package/dist/modules/Cart/index.d.ts +5 -5
  13. package/dist/modules/Cart/index.js +33 -19
  14. package/dist/modules/Cart/types.d.ts +21 -7
  15. package/dist/modules/Cart/utils.d.ts +29 -5
  16. package/dist/modules/Cart/utils.js +72 -26
  17. package/dist/modules/Date/index.d.ts +6 -6
  18. package/dist/modules/Date/index.js +41 -55
  19. package/dist/modules/Date/types.d.ts +22 -6
  20. package/dist/modules/Date/utils.d.ts +4 -3
  21. package/dist/modules/Date/utils.js +74 -23
  22. package/dist/modules/Discount/index.d.ts +4 -4
  23. package/dist/modules/Discount/index.js +11 -11
  24. package/dist/modules/Order/index.d.ts +10 -5
  25. package/dist/modules/Order/index.js +32 -16
  26. package/dist/modules/Order/types.d.ts +10 -3
  27. package/dist/modules/Product/index.d.ts +4 -1
  28. package/dist/modules/Product/index.js +22 -0
  29. package/dist/modules/Product/types.d.ts +7 -3
  30. package/dist/modules/ProductList/index.js +11 -5
  31. package/dist/modules/Resource/utils.js +1 -1
  32. package/dist/modules/Rules/index.d.ts +4 -4
  33. package/dist/modules/Rules/index.js +11 -11
  34. package/dist/modules/Rules/types.d.ts +1 -1
  35. package/dist/modules/Schedule/index.d.ts +8 -3
  36. package/dist/modules/Schedule/index.js +45 -5
  37. package/dist/modules/Schedule/type.d.ts +7 -7
  38. package/dist/modules/Schedule/types.d.ts +8 -8
  39. package/dist/modules/Schedule/utils.d.ts +9 -3
  40. package/dist/modules/Schedule/utils.js +77 -48
  41. package/dist/modules/Step/index.d.ts +14 -3
  42. package/dist/modules/Step/index.js +54 -2
  43. package/dist/modules/Summary/index.d.ts +5 -5
  44. package/dist/modules/Summary/index.js +7 -7
  45. package/dist/modules/Summary/types.d.ts +2 -2
  46. package/dist/modules/Summary/utils.d.ts +4 -4
  47. package/dist/modules/Summary/utils.js +3 -3
  48. package/dist/plugins/index.d.ts +3 -3
  49. package/dist/plugins/request.d.ts +3 -3
  50. package/dist/plugins/request.js +30 -30
  51. package/dist/plugins/shopStore.d.ts +1 -1
  52. package/dist/solution/BookingByStep/index.d.ts +71 -16
  53. package/dist/solution/BookingByStep/index.js +643 -227
  54. package/dist/solution/BookingByStep/types.d.ts +2 -2
  55. package/dist/solution/BookingByStep/types.js +9 -9
  56. package/dist/solution/BookingByStep/utils/products.d.ts +1 -1
  57. package/dist/solution/BookingByStep/utils/products.js +3 -0
  58. package/dist/solution/BookingByStep/utils/resources.d.ts +6 -5
  59. package/dist/solution/BookingByStep/utils/resources.js +37 -19
  60. package/dist/solution/ShopDiscount/index.d.ts +4 -4
  61. package/dist/solution/ShopDiscount/index.js +16 -16
  62. package/dist/solution/ShopDiscount/types.d.ts +2 -2
  63. package/dist/solution/ShopDiscount/utils.js +1 -1
  64. package/lib/core/index.js +7 -2
  65. package/lib/modules/Account/index.d.ts +2 -6
  66. package/lib/modules/Account/index.js +15 -30
  67. package/lib/modules/Account/types.d.ts +12 -1
  68. package/lib/modules/AccountList/index.d.ts +20 -1
  69. package/lib/modules/AccountList/index.js +122 -13
  70. package/lib/modules/AccountList/types.d.ts +33 -1
  71. package/lib/modules/AccountList/utils.d.ts +9 -0
  72. package/lib/modules/AccountList/utils.js +39 -0
  73. package/lib/modules/BaseModule.d.ts +2 -2
  74. package/lib/modules/BaseModule.js +14 -3
  75. package/lib/modules/Cart/index.d.ts +5 -5
  76. package/lib/modules/Cart/index.js +28 -6
  77. package/lib/modules/Cart/types.d.ts +21 -7
  78. package/lib/modules/Cart/utils.d.ts +29 -5
  79. package/lib/modules/Cart/utils.js +47 -3
  80. package/lib/modules/Date/index.d.ts +6 -6
  81. package/lib/modules/Date/index.js +6 -6
  82. package/lib/modules/Date/types.d.ts +22 -6
  83. package/lib/modules/Date/utils.d.ts +4 -3
  84. package/lib/modules/Date/utils.js +37 -6
  85. package/lib/modules/Discount/index.d.ts +4 -4
  86. package/lib/modules/Discount/index.js +9 -2
  87. package/lib/modules/Guests/index.js +4 -1
  88. package/lib/modules/Order/index.d.ts +10 -5
  89. package/lib/modules/Order/index.js +11 -1
  90. package/lib/modules/Order/types.d.ts +10 -3
  91. package/lib/modules/Payment/index.js +1 -6
  92. package/lib/modules/Product/index.d.ts +4 -1
  93. package/lib/modules/Product/index.js +16 -0
  94. package/lib/modules/Product/types.d.ts +7 -3
  95. package/lib/modules/ProductList/index.js +21 -7
  96. package/lib/modules/Resource/index.js +4 -1
  97. package/lib/modules/Resource/utils.js +7 -4
  98. package/lib/modules/Rules/index.d.ts +4 -4
  99. package/lib/modules/Rules/types.d.ts +1 -1
  100. package/lib/modules/Schedule/index.d.ts +8 -3
  101. package/lib/modules/Schedule/index.js +33 -2
  102. package/lib/modules/Schedule/type.d.ts +7 -7
  103. package/lib/modules/Schedule/types.d.ts +8 -8
  104. package/lib/modules/Schedule/utils.d.ts +9 -3
  105. package/lib/modules/Schedule/utils.js +32 -4
  106. package/lib/modules/Step/index.d.ts +14 -3
  107. package/lib/modules/Step/index.js +38 -1
  108. package/lib/modules/Summary/index.d.ts +5 -5
  109. package/lib/modules/Summary/types.d.ts +2 -2
  110. package/lib/modules/Summary/utils.d.ts +4 -4
  111. package/lib/plugins/index.d.ts +3 -3
  112. package/lib/plugins/request.d.ts +3 -3
  113. package/lib/plugins/request.js +48 -11
  114. package/lib/plugins/shopStore.d.ts +1 -1
  115. package/lib/solution/BookingByStep/index.d.ts +71 -16
  116. package/lib/solution/BookingByStep/index.js +396 -48
  117. package/lib/solution/BookingByStep/types.d.ts +2 -2
  118. package/lib/solution/BookingByStep/types.js +36 -9
  119. package/lib/solution/BookingByStep/utils/products.d.ts +1 -1
  120. package/lib/solution/BookingByStep/utils/products.js +3 -0
  121. package/lib/solution/BookingByStep/utils/resources.d.ts +6 -5
  122. package/lib/solution/BookingByStep/utils/resources.js +128 -58
  123. package/lib/solution/BuyTickets/index.js +34 -20
  124. package/lib/solution/ShopDiscount/index.d.ts +4 -4
  125. package/lib/solution/ShopDiscount/index.js +10 -2
  126. package/lib/solution/ShopDiscount/types.d.ts +2 -2
  127. package/package.json +4 -2
@@ -1,4 +1,4 @@
1
- import { ProductList, CartModule, Product, AccountModule, AccountListModule, DateModule, GuestListModule, OrderModule, PaymentModule, ResourceListModule, StepModule, SummaryModule, ScheduleModule } from "../../modules";
1
+ import { ProductList, CartModule, Product, AccountModule, AccountListModule, DateModule, GuestListModule, OrderModule, PaymentModule, ResourceListModule, StepModule, SummaryModule, ScheduleModule } from '../../modules';
2
2
  export interface BookingByStepState {
3
3
  cart: CartModule;
4
4
  summary: SummaryModule;
@@ -11,7 +11,7 @@ export interface BookingByStepState {
11
11
  accountList: AccountListModule;
12
12
  order: OrderModule;
13
13
  payment: PaymentModule;
14
- currentProduct: Product;
14
+ currentProduct?: Product;
15
15
  schedule: ScheduleModule;
16
16
  }
17
17
  export declare function createModule<T extends keyof BookingByStepState>(moduleName: T, solutionName: string, name?: string, version?: string): BookingByStepState[T];
@@ -1,23 +1,23 @@
1
1
  import { ProductList, CartModule, AccountListModule, DateModule, OrderModule, PaymentModule, StepModule, SummaryModule, ScheduleModule } from "../../modules";
2
2
  export function createModule(moduleName, solutionName, name, version) {
3
3
  switch (moduleName) {
4
- case "cart":
4
+ case 'cart':
5
5
  return new CartModule("".concat(solutionName, "_").concat(name || moduleName), version);
6
- case "summary":
6
+ case 'summary':
7
7
  return new SummaryModule("".concat(solutionName, "_").concat(name || moduleName), version);
8
- case "step":
8
+ case 'step':
9
9
  return new StepModule("".concat(solutionName, "_").concat(name || moduleName), version);
10
- case "products":
10
+ case 'products':
11
11
  return new ProductList("".concat(solutionName, "_").concat(name || moduleName), version);
12
- case "date":
12
+ case 'date':
13
13
  return new DateModule("".concat(solutionName, "_").concat(name || moduleName), version);
14
- case "accountList":
14
+ case 'accountList':
15
15
  return new AccountListModule("".concat(solutionName, "_").concat(name || moduleName), version);
16
- case "order":
16
+ case 'order':
17
17
  return new OrderModule("".concat(solutionName, "_").concat(name || moduleName), version);
18
- case "payment":
18
+ case 'payment':
19
19
  return new PaymentModule("".concat(solutionName, "_").concat(name || moduleName), version);
20
- case "schedule":
20
+ case 'schedule':
21
21
  return new ScheduleModule("".concat(solutionName, "_").concat(name || moduleName), version);
22
22
  default:
23
23
  throw new Error("Unknown module type: ".concat(moduleName));
@@ -1,4 +1,4 @@
1
- import { ProductData, ProductResourceItem } from "../../../modules";
1
+ import { ProductData, ProductResourceItem } from '../../../modules';
2
2
  /**
3
3
  * 获取商品的可用资源
4
4
  * @param product 商品数据
@@ -37,6 +37,9 @@ export var getAvailableProductResources = function getAvailableProductResources(
37
37
  if (tempResourceIds) {
38
38
  rule.resourceFormIds = _toConsumableArray(new Set(tempResourceIds));
39
39
  }
40
+ if (product !== null && product !== void 0 && product._schedule) {
41
+ rule.schedule = product === null || product === void 0 ? void 0 : product._schedule;
42
+ }
40
43
  rules.push(rule);
41
44
  });
42
45
  return {
@@ -27,7 +27,7 @@ interface BookingItem {
27
27
  * @return {*}
28
28
  * @Author: zhiwei.Wang
29
29
  */
30
- export declare const getIsUsableByTimeItem: ({ timeSlice, time, resource, currentCount }: {
30
+ export declare const getIsUsableByTimeItem: ({ timeSlice, time, resource, currentCount, }: {
31
31
  timeSlice: TimeSliceItem;
32
32
  time: any;
33
33
  resource: ResourceItem;
@@ -36,6 +36,7 @@ export declare const getIsUsableByTimeItem: ({ timeSlice, time, resource, curren
36
36
  afterToDay: boolean;
37
37
  capacity: boolean;
38
38
  usable: boolean;
39
+ remainingCapacity: number;
39
40
  };
40
41
  /**
41
42
  * @title: 获取商品下绑定的资源列表
@@ -53,7 +54,7 @@ export declare const getResourcesByProduct: (resourcesMap: Record<string, Resour
53
54
  * @Author: zhiwei.Wang
54
55
  * @Date: 2024-01-09 13:38
55
56
  */
56
- export declare const formatResources: ({ booking, resources }: {
57
+ export declare const formatResources: ({ booking, resources, }: {
57
58
  booking: BookingItem;
58
59
  resources: ResourceItem[];
59
60
  }) => {
@@ -66,7 +67,7 @@ export declare const formatResources: ({ booking, resources }: {
66
67
  * @return {*}
67
68
  * @Author: zhiwei.Wang
68
69
  */
69
- export declare const getTimeSlicesByResource: ({ resource, duration, split, currentDate, capacity }: {
70
+ export declare const getTimeSlicesByResource: ({ resource, duration, split, currentDate, capacity, }: {
70
71
  resource: ResourceItem;
71
72
  duration: number;
72
73
  split: number;
@@ -100,7 +101,7 @@ export declare const getResourcesByIds: (resourcesMap: Record<string, ResourceIt
100
101
  * @return {*}
101
102
  * @Author: zhiwei.Wang
102
103
  */
103
- export declare const getTimeSlicesByResources: ({ resourceIds, resourcesMap, duration, currentDate, split, capacity }: {
104
+ export declare const getTimeSlicesByResources: ({ resourceIds, resourcesMap, duration, currentDate, split, capacity, }: {
104
105
  resourceIds: number[];
105
106
  resourcesMap: any;
106
107
  duration: number;
@@ -129,7 +130,7 @@ interface CapacityItem {
129
130
  * @return {*}
130
131
  * @Author: zhiwei.Wang
131
132
  */
132
- export declare const formatDefaultCapacitys: ({ capacity, product_bundle }: any) => CapacityItem[];
133
+ export declare const formatDefaultCapacitys: ({ capacity, product_bundle, }: any) => CapacityItem[];
133
134
  /**
134
135
  * @title: 获取总容量
135
136
  * @description:
@@ -17,12 +17,12 @@ import dayjs from 'dayjs';
17
17
  * 1. 获取资源列表
18
18
  * 2. 根据当前选择的商品过滤出来对应的资源列表 getResourcesByProduct
19
19
  * 3. 格式化资源相关 格式化资源列表 --> 格式化资源 --> 获取时间切片列表 --> 判断单个时间切片是否可用 formatResources
20
- *
20
+ *
21
21
  */
22
22
 
23
23
  /**
24
24
  * @title: 获取重叠剩余量
25
- * @description:
25
+ * @description:
26
26
  * @param {any} eventList
27
27
  * @param {number} current
28
28
  * @return {*}
@@ -36,7 +36,7 @@ var getUseableEventCount = function getUseableEventCount(eventList, current) {
36
36
 
37
37
  /**
38
38
  * @title: 判断两个时间段是否有重叠
39
- * @description:
39
+ * @description:
40
40
  * @param {object} event
41
41
  * @param {object} current
42
42
  * @return {*}
@@ -61,7 +61,7 @@ var isConflict = function isConflict(event, current) {
61
61
 
62
62
  /**
63
63
  * @title: 判断传入日期是否在当前日期之后
64
- * @description:
64
+ * @description:
65
65
  * @param {any} date
66
66
  * @param {any} today
67
67
  * @return {*}
@@ -99,7 +99,7 @@ var formatResource = function formatResource(resourceItem, booking) {
99
99
 
100
100
  /**
101
101
  * @title: 判断资源容量是否可用
102
- * @description:
102
+ * @description:
103
103
  * @param {object} param1
104
104
  * @return {*}
105
105
  * @Author: zhiwei.Wang
@@ -111,7 +111,10 @@ var checkCapacity = function checkCapacity(_ref) {
111
111
  _ref$currentCount = _ref.currentCount,
112
112
  currentCount = _ref$currentCount === void 0 ? 1 : _ref$currentCount;
113
113
  if (currentCount > resource.capacity) {
114
- return false;
114
+ return {
115
+ status: false,
116
+ capacity: resource.capacity
117
+ };
115
118
  }
116
119
  var conflict = (event_list || []).filter(function (d) {
117
120
  return isConflict({
@@ -127,9 +130,15 @@ var checkCapacity = function checkCapacity(_ref) {
127
130
  if (resource.resourceType === 'single') {
128
131
  // 0代表着不重叠,则满足条件
129
132
  if (conflict.length === 0) {
130
- return true;
133
+ return {
134
+ status: true,
135
+ capacity: 1
136
+ };
131
137
  } else {
132
- return false;
138
+ return {
139
+ status: false,
140
+ capacity: 1
141
+ };
133
142
  }
134
143
  } else {
135
144
  // 减去重叠的总量
@@ -137,9 +146,15 @@ var checkCapacity = function checkCapacity(_ref) {
137
146
 
138
147
  // 当前预约量 <= 总剩余容量
139
148
  if (currentCount <= conflictCount) {
140
- return true;
149
+ return {
150
+ status: true,
151
+ capacity: conflictCount
152
+ };
141
153
  } else {
142
- return false;
154
+ return {
155
+ status: false,
156
+ capacity: conflictCount
157
+ };
143
158
  }
144
159
  }
145
160
  };
@@ -160,7 +175,8 @@ export var getIsUsableByTimeItem = function getIsUsableByTimeItem(_ref2) {
160
175
  var status = {
161
176
  afterToDay: false,
162
177
  capacity: false,
163
- usable: false
178
+ usable: false,
179
+ remainingCapacity: 0 // 剩余容量
164
180
  };
165
181
  // 最早可预约时间为 当前日期之后并且提前量之后
166
182
  var earliest = dayjs();
@@ -170,14 +186,16 @@ export var getIsUsableByTimeItem = function getIsUsableByTimeItem(_ref2) {
170
186
  return status;
171
187
  }
172
188
  status.afterToDay = true;
173
- if (!checkCapacity({
189
+ var checkCapacityResult = checkCapacity({
174
190
  event_list: time === null || time === void 0 ? void 0 : time.event_list,
175
191
  timeSlice: timeSlice,
176
192
  resource: resource,
177
193
  currentCount: currentCount
178
- })) {
194
+ });
195
+ if (!checkCapacityResult.status) {
179
196
  return status;
180
197
  }
198
+ status.remainingCapacity = checkCapacityResult.capacity;
181
199
  status.capacity = true;
182
200
  status.usable = true;
183
201
  return status;
@@ -185,7 +203,7 @@ export var getIsUsableByTimeItem = function getIsUsableByTimeItem(_ref2) {
185
203
 
186
204
  /**
187
205
  * @title: 获取商品下绑定的资源列表
188
- * @description:
206
+ * @description:
189
207
  * @param {any} resourcesMap
190
208
  * @param {any} product
191
209
  * @return {*}
@@ -312,7 +330,7 @@ export var formatResources = function formatResources(_ref3) {
312
330
 
313
331
  /**
314
332
  * @title: 获取资源的时间切片列表
315
- * @description:
333
+ * @description:
316
334
  * @return {*}
317
335
  * @Author: zhiwei.Wang
318
336
  */
@@ -457,7 +475,7 @@ export var getTimeSlicesByResources = function getTimeSlicesByResources(_ref5) {
457
475
 
458
476
  /**
459
477
  * @title: 获取其他人的已选资源
460
- * @description:
478
+ * @description:
461
479
  * @param {CartItem[]} cartItems
462
480
  * @param {number | string} accountId
463
481
  * @return {*}
@@ -498,7 +516,7 @@ export var getOthersSelectedResources = function getOthersSelectedResources(cart
498
516
  };
499
517
  /**
500
518
  * @title: 基于选择的商品格式化容量
501
- * @description:
519
+ * @description:
502
520
  * @param {any} param1
503
521
  * @return {*}
504
522
  * @Author: zhiwei.Wang
@@ -539,7 +557,7 @@ export var formatDefaultCapacitys = function formatDefaultCapacitys(_ref6) {
539
557
 
540
558
  /**
541
559
  * @title: 获取总容量
542
- * @description:
560
+ * @description:
543
561
  * @param {object} capacity 为 formatDefaultCapacitys()的结果
544
562
  * @return {*}
545
563
  * @Author: zhiwei.Wang
@@ -564,7 +582,7 @@ export var getSumCapacity = function getSumCapacity(_ref7) {
564
582
 
565
583
  /**
566
584
  * @title: 传入资源,如果有子资源,会根据组合资源的 capacity 计算修改子资源的 capacity
567
- * @description:
585
+ * @description:
568
586
  * @param {object} resource
569
587
  * @return {*}
570
588
  * @Author: jinglin.tan
@@ -1,7 +1,7 @@
1
- import { Module, PisellCore } from "../../types";
2
- import { BaseModule } from "../../modules/BaseModule";
3
- import { Customer } from "./types";
4
- import { Discount } from "../../modules/Discount/types";
1
+ import { Module, PisellCore } from '../../types';
2
+ import { BaseModule } from '../../modules/BaseModule';
3
+ import { Customer } from './types';
4
+ import { Discount } from '../../modules/Discount/types';
5
5
  export declare class ShopDiscountImpl extends BaseModule implements Module {
6
6
  protected defaultName: string;
7
7
  protected defaultVersion: string;
@@ -39,8 +39,8 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
39
39
  _classCallCheck(this, ShopDiscountImpl);
40
40
  _this = _super.call(this, name, version);
41
41
  // 初始化所有必要的状态属性
42
- _defineProperty(_assertThisInitialized(_this), "defaultName", "shopDiscount");
43
- _defineProperty(_assertThisInitialized(_this), "defaultVersion", "1.0.0");
42
+ _defineProperty(_assertThisInitialized(_this), "defaultName", 'shopDiscount');
43
+ _defineProperty(_assertThisInitialized(_this), "defaultVersion", '1.0.0');
44
44
  _defineProperty(_assertThisInitialized(_this), "isSolution", true);
45
45
  _defineProperty(_assertThisInitialized(_this), "request", void 0);
46
46
  _defineProperty(_assertThisInitialized(_this), "window", void 0);
@@ -66,7 +66,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
66
66
  this.core = core;
67
67
  this.options = options;
68
68
  this.store = _objectSpread(_objectSpread({}, this.store), options.store || {});
69
- console.log("[ShopDiscount] 初始化完成");
69
+ console.log('[ShopDiscount] 初始化完成');
70
70
 
71
71
  // 获取依赖的插件
72
72
  this.initializePlugins();
@@ -103,7 +103,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
103
103
  _context2.next = 7;
104
104
  return this.core.effects.emit(ShopDiscountHooks.onDestroy, {});
105
105
  case 7:
106
- console.log("[ShopDiscount] 已销毁");
106
+ console.log('[ShopDiscount] 已销毁');
107
107
  case 8:
108
108
  case "end":
109
109
  return _context2.stop();
@@ -127,7 +127,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
127
127
  this.store.customer = null;
128
128
  (_this$store$discount2 = this.store.discount) === null || _this$store$discount2 === void 0 || _this$store$discount2.clear();
129
129
  (_this$store$rules2 = this.store.rules) === null || _this$store$rules2 === void 0 || _this$store$rules2.clear();
130
- console.log("[ShopDiscount] clear");
130
+ console.log('[ShopDiscount] clear');
131
131
  case 5:
132
132
  case "end":
133
133
  return _context3.stop();
@@ -142,13 +142,13 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
142
142
  }, {
143
143
  key: "initializePlugins",
144
144
  value: function initializePlugins() {
145
- this.request = this.core.getPlugin("request");
146
- this.window = this.core.getPlugin("window");
145
+ this.request = this.core.getPlugin('request');
146
+ this.window = this.core.getPlugin('window');
147
147
  if (!this.request) {
148
- throw new Error("ShopDiscount需要 request 插件支持");
148
+ throw new Error('ShopDiscount需要 request 插件支持');
149
149
  }
150
150
  if (!this.window) {
151
- throw new Error("ShopDiscount需要 window 插件支持");
151
+ throw new Error('ShopDiscount需要 window 插件支持');
152
152
  }
153
153
  }
154
154
  }, {
@@ -196,7 +196,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
196
196
  }
197
197
  _this2.loadPrepareConfig({
198
198
  customerId: customer.id,
199
- action: "create",
199
+ action: 'create',
200
200
  with_good_pass: 1
201
201
  });
202
202
  });
@@ -363,7 +363,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
363
363
  case 21:
364
364
  _context5.prev = 21;
365
365
  _context5.t1 = _context5["catch"](0);
366
- console.error("[ShopDiscount] 扫码出错:", _context5.t1);
366
+ console.error('[ShopDiscount] 扫码出错:', _context5.t1);
367
367
  return _context5.abrupt("return", {
368
368
  isAvailable: false,
369
369
  productList: this.store.productList || [],
@@ -453,7 +453,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
453
453
  });
454
454
  var newDiscountList = uniqueById([].concat(editModeDiscountList, _toConsumableArray(discountList.filter(function (item) {
455
455
  return !item.isDisabled;
456
- }))), "product_id");
456
+ }))), 'product_id');
457
457
  (_this$store$discount5 = this.store.discount) === null || _this$store$discount5 === void 0 || _this$store$discount5.setDiscountList(newDiscountList);
458
458
  this.emitDiscountListChange(newDiscountList);
459
459
  return newDiscountList;
@@ -479,7 +479,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
479
479
  _context7.prev = 0;
480
480
  _context7.next = 3;
481
481
  return this.request.get("/customer/info/wallet/".concat(id), {
482
- wallet_pass_tags: ["good_pass"]
482
+ wallet_pass_tags: ['good_pass']
483
483
  });
484
484
  case 3:
485
485
  result = _context7.sent;
@@ -492,7 +492,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
492
492
  case 7:
493
493
  _context7.prev = 7;
494
494
  _context7.t0 = _context7["catch"](0);
495
- console.error("[ShopDiscount] 获取客户钱包信息出错:", _context7.t0);
495
+ console.error('[ShopDiscount] 获取客户钱包信息出错:', _context7.t0);
496
496
  case 10:
497
497
  case "end":
498
498
  return _context7.stop();
@@ -519,7 +519,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
519
519
  _context8.next = 4;
520
520
  return (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 ? void 0 : _this$store$discount7.loadPrepareConfig({
521
521
  customer_id: customerId,
522
- action: "create",
522
+ action: 'create',
523
523
  with_good_pass: 1
524
524
  });
525
525
  case 4:
@@ -545,7 +545,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
545
545
  case 16:
546
546
  _context8.prev = 16;
547
547
  _context8.t0 = _context8["catch"](0);
548
- console.error("[ShopDiscount] 加载准备配置出错:", _context8.t0);
548
+ console.error('[ShopDiscount] 加载准备配置出错:', _context8.t0);
549
549
  case 19:
550
550
  case "end":
551
551
  return _context8.stop();
@@ -1,5 +1,5 @@
1
- import { DiscountModule } from "../../modules/Discount";
2
- import { RulesModule } from "../../modules/Rules";
1
+ import { DiscountModule } from '../../modules/Discount';
2
+ import { RulesModule } from '../../modules/Rules';
3
3
  export declare enum ShopDiscountHooks {
4
4
  onInited = "shopDiscount:onInited",
5
5
  onDestroy = "shopDiscount:onDestroy",
@@ -1,5 +1,5 @@
1
1
  export var uniqueById = function uniqueById(arr) {
2
- var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
2
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id';
3
3
  var seen = new Set();
4
4
  return arr.filter(function (item) {
5
5
  return !seen.has(item[key]) && seen.add(item[key]);
package/lib/core/index.js CHANGED
@@ -116,7 +116,9 @@ var PisellOSCore = class {
116
116
  if (options == null ? void 0 : options.plugins) {
117
117
  for (const plugin of options.plugins) {
118
118
  if (!this.plugins.has(plugin)) {
119
- throw new Error(`注册模块 ${module2.name} 失败:缺少依赖插件 ${plugin}`);
119
+ throw new Error(
120
+ `注册模块 ${module2.name} 失败:缺少依赖插件 ${plugin}`
121
+ );
120
122
  }
121
123
  }
122
124
  }
@@ -193,7 +195,10 @@ var PisellOSCore = class {
193
195
  for (const rule of config.validations) {
194
196
  const value = this.context[rule.name];
195
197
  if (rule.required && (value === void 0 || value === null)) {
196
- this.log(`模块 ${config.name} 缺少必需的上下文参数: ${rule.name}`, "error");
198
+ this.log(
199
+ `模块 ${config.name} 缺少必需的上下文参数: ${rule.name}`,
200
+ "error"
201
+ );
197
202
  return false;
198
203
  }
199
204
  if (rule.validate && value !== void 0 && value !== null) {
@@ -1,8 +1,8 @@
1
1
  import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
- import { Account, AccountModuleAPI } from './types';
3
+ import { Account } from './types';
4
4
  export * from './types';
5
- export declare class AccountModule extends BaseModule implements Module, AccountModuleAPI {
5
+ export declare class AccountModule extends BaseModule implements Module {
6
6
  protected defaultName: string;
7
7
  protected defaultVersion: string;
8
8
  isGuest: boolean;
@@ -14,13 +14,9 @@ export declare class AccountModule extends BaseModule implements Module, Account
14
14
  username: string;
15
15
  password: string;
16
16
  }): Promise<void>;
17
- logout(): Promise<void>;
18
- register(account: Omit<Account, 'id'>): Promise<void>;
19
17
  getCurrentAccount(): Account | null;
20
18
  updateProfile(updates: Partial<Account>): Promise<void>;
21
19
  isLoggedIn(): boolean;
22
- resetPassword(email: string): Promise<void>;
23
- updatePassword(oldPassword: string, newPassword: string): Promise<void>;
24
20
  getLoginStatus(): boolean;
25
21
  getAccount(): Account | null;
26
22
  setAccountInfo(account: Account): void;
@@ -33,7 +33,7 @@ var AccountModule = class extends import_BaseModule.BaseModule {
33
33
  this.defaultVersion = "1.0.0";
34
34
  this.isGuest = false;
35
35
  this.store = {
36
- currentAccount: null,
36
+ accountInfo: null,
37
37
  isLoggedIn: false,
38
38
  active: false
39
39
  };
@@ -45,7 +45,7 @@ var AccountModule = class extends import_BaseModule.BaseModule {
45
45
  }
46
46
  getId() {
47
47
  var _a;
48
- return ((_a = this.store.currentAccount) == null ? void 0 : _a.id) || "";
48
+ return ((_a = this.store.accountInfo) == null ? void 0 : _a.id) || "";
49
49
  }
50
50
  async login(credentials) {
51
51
  const account = {
@@ -54,54 +54,39 @@ var AccountModule = class extends import_BaseModule.BaseModule {
54
54
  username: credentials.username,
55
55
  email: `${credentials.username}@example.com`,
56
56
  name: credentials.username,
57
- isGuest: false
57
+ isGuest: false,
58
+ type: "account"
58
59
  };
59
- this.store.currentAccount = account;
60
+ this.store.accountInfo = account;
60
61
  this.store.isLoggedIn = true;
61
62
  await this.core.effects.emit(import_types.AccountHooks.OnLogin, account);
62
63
  }
63
- async logout() {
64
- this.store.currentAccount = null;
65
- this.store.isLoggedIn = false;
66
- await this.core.effects.emit(import_types.AccountHooks.OnLogout, {});
67
- }
68
- async register(account) {
69
- const newAccount = {
70
- id: "1",
71
- // 实际应该从 API 返回
72
- ...account
73
- };
74
- this.store.currentAccount = newAccount;
75
- this.store.isLoggedIn = true;
76
- await this.core.effects.emit(import_types.AccountHooks.OnRegister, newAccount);
77
- }
78
64
  getCurrentAccount() {
79
- return this.store.currentAccount;
65
+ return this.store.accountInfo;
80
66
  }
81
67
  async updateProfile(updates) {
82
- if (!this.store.currentAccount)
68
+ if (!this.store.accountInfo)
83
69
  return;
84
- this.store.currentAccount = {
85
- ...this.store.currentAccount,
70
+ this.store.accountInfo = {
71
+ ...this.store.accountInfo,
86
72
  ...updates
87
73
  };
88
- await this.core.effects.emit(import_types.AccountHooks.OnProfileUpdate, this.store.currentAccount);
74
+ await this.core.effects.emit(
75
+ import_types.AccountHooks.OnProfileUpdate,
76
+ this.store.accountInfo
77
+ );
89
78
  }
90
79
  isLoggedIn() {
91
80
  return this.store.isLoggedIn;
92
81
  }
93
- async resetPassword(email) {
94
- }
95
- async updatePassword(oldPassword, newPassword) {
96
- }
97
82
  getLoginStatus() {
98
83
  return this.store.isLoggedIn;
99
84
  }
100
85
  getAccount() {
101
- return this.store.currentAccount;
86
+ return this.store.accountInfo;
102
87
  }
103
88
  setAccountInfo(account) {
104
- this.store.currentAccount = account;
89
+ this.store.accountInfo = account;
105
90
  if (account.isGuest) {
106
91
  this.isGuest = true;
107
92
  }
@@ -9,19 +9,30 @@ export declare enum AccountHooks {
9
9
  */
10
10
  export interface Account {
11
11
  id: string | number;
12
+ /** 用户名 */
12
13
  username: string;
14
+ /** 邮箱 */
13
15
  email?: string;
16
+ /** 手机号 */
14
17
  phone?: string;
18
+ /** 昵称 */
15
19
  name?: string;
20
+ /** 头像 */
16
21
  avatar?: string;
22
+ /** 元数据 */
17
23
  metadata?: Record<string, any>;
24
+ /** 是否为游客 */
18
25
  isGuest?: boolean;
26
+ /** 账户类型 */
27
+ type?: 'account' | 'holder';
28
+ /** 账户信息原始数据 */
29
+ _origin?: Record<string, any>;
19
30
  }
20
31
  /**
21
32
  * 账户模块状态
22
33
  */
23
34
  export interface AccountState {
24
- currentAccount: Account | null;
35
+ accountInfo: Account | null;
25
36
  isLoggedIn: boolean;
26
37
  active: boolean;
27
38
  }
@@ -1,16 +1,24 @@
1
1
  import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { AccountModule, Account } from '../Account';
3
3
  import { BaseModule } from '../BaseModule';
4
+ import { IFetchHolderAccountsParams, IHolder } from './types';
4
5
  export declare class AccountListModule extends BaseModule implements Module {
5
6
  protected defaultName: string;
6
7
  protected defaultVersion: string;
7
8
  private store;
9
+ private request;
8
10
  private cacheId;
9
11
  private openCache;
10
12
  private fatherModule;
11
13
  constructor(name?: string, version?: string);
12
14
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
13
- addAccount(account: Account): Promise<void>;
15
+ /**
16
+ * 创建账号并添加到列表中
17
+ * @param account 账号信息
18
+ * @param needEmit 是否需要触发事件
19
+ */
20
+ private createAccountAndAdd;
21
+ addAccount(account: Account): Promise<AccountModule>;
14
22
  updateAccount(id: string, updates: Account): Promise<void>;
15
23
  updateAccountListById(id: string | number, updates: Account): Promise<void>;
16
24
  removeAccount(id: string): Promise<void>;
@@ -20,4 +28,15 @@ export declare class AccountListModule extends BaseModule implements Module {
20
28
  setActiveAccount(id: string | number): void;
21
29
  getActiveAccount(): AccountModule | null;
22
30
  storeChange(): void;
31
+ /**
32
+ * 批量添加holder类型账号
33
+ * @param holders 账号信息列表
34
+ * @param customerId 账户id
35
+ */
36
+ addHolderAccounts(holders: IHolder[], customerId: number): Promise<AccountModule[]>;
37
+ /**
38
+ * 获取holder类型账户列表
39
+ * @param params
40
+ */
41
+ fetchHolderAccounts(params: IFetchHolderAccountsParams): Promise<void>;
23
42
  }