@pisell/pisellos 0.0.566 → 0.0.568

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 (230) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/adapter/walletPass/utils.js +0 -3
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +1 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +14 -41
  13. package/dist/modules/Payment/index.js +142 -270
  14. package/dist/modules/Payment/walletpass.js +4 -5
  15. package/dist/modules/Rules/index.js +0 -7
  16. package/dist/modules/SalesSummary/utils.js +4 -2
  17. package/dist/modules/Schedule/utils.js +0 -1
  18. package/dist/modules/Step/index.js +0 -1
  19. package/dist/modules/Summary/utils.js +2 -2
  20. package/dist/plugins/request.js +1 -4
  21. package/dist/plugins/window.js +2 -6
  22. package/dist/server/index.js +88 -121
  23. package/dist/server/modules/menu/index.js +32 -41
  24. package/dist/server/modules/products/index.js +29 -49
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +32 -40
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BookingByStep/index.d.ts +1 -1
  30. package/dist/solution/BookingByStep/index.js +7 -59
  31. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  32. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  33. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  34. package/dist/solution/BookingTicket/index.d.ts +1 -1
  35. package/dist/solution/BookingTicket/index.js +5 -7
  36. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  37. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  38. package/dist/solution/BuyTickets/index.js +9 -12
  39. package/dist/solution/Checkout/index.js +177 -246
  40. package/dist/solution/Checkout/utils/index.js +4 -16
  41. package/dist/solution/RegisterAndLogin/index.js +30 -76
  42. package/dist/solution/ScanOrder/index.js +50 -60
  43. package/dist/solution/ShopDiscount/index.js +2 -7
  44. package/dist/solution/VenueBooking/index.d.ts +5 -0
  45. package/dist/solution/VenueBooking/index.js +364 -327
  46. package/dist/utils/task.js +15 -18
  47. package/dist/utils/watch.js +0 -1
  48. package/lib/apis/picoding.js +2 -0
  49. package/lib/core/index.js +130 -131
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +92 -53
  52. package/lib/model/index.js +14 -21
  53. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  54. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  55. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  56. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  57. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  58. package/lib/model/strategy/adapter/index.js +100 -64
  59. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  60. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  61. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  62. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  63. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  64. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
  66. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  71. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  72. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  73. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  74. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  75. package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
  76. package/lib/model/strategy/engine.js +270 -168
  77. package/lib/model/strategy/index.js +49 -34
  78. package/lib/model/strategy/strategy-example.js +243 -239
  79. package/lib/model/strategy/type.js +100 -40
  80. package/lib/modules/Account/index.js +39 -53
  81. package/lib/modules/Account/types.js +20 -33
  82. package/lib/modules/AccountList/index.js +116 -154
  83. package/lib/modules/AccountList/types.js +30 -31
  84. package/lib/modules/AccountList/utils.js +18 -30
  85. package/lib/modules/BaseModule.js +22 -45
  86. package/lib/modules/Cart/index.js +170 -124
  87. package/lib/modules/Cart/types.js +46 -51
  88. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  89. package/lib/modules/Cart/utils/cartDate.js +56 -61
  90. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  91. package/lib/modules/Cart/utils/cartNote.js +27 -32
  92. package/lib/modules/Cart/utils/cartProduct.js +306 -241
  93. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  94. package/lib/modules/Cart/utils/cartResource.js +72 -78
  95. package/lib/modules/Cart/utils/changePrice.js +26 -62
  96. package/lib/modules/Cart/utils/index.js +106 -48
  97. package/lib/modules/Customer/constants.js +13 -34
  98. package/lib/modules/Customer/index.js +216 -153
  99. package/lib/modules/Customer/types.js +38 -35
  100. package/lib/modules/Date/index.js +116 -115
  101. package/lib/modules/Date/types.js +16 -28
  102. package/lib/modules/Date/utils.js +174 -123
  103. package/lib/modules/Discount/index.js +117 -113
  104. package/lib/modules/Discount/types.js +9 -31
  105. package/lib/modules/Guests/index.js +30 -56
  106. package/lib/modules/Guests/types.js +23 -33
  107. package/lib/modules/Holder/index.js +209 -189
  108. package/lib/modules/Holder/types.js +4 -16
  109. package/lib/modules/Holder/utils.js +20 -49
  110. package/lib/modules/OpenData/index.js +63 -74
  111. package/lib/modules/OpenData/types.js +4 -16
  112. package/lib/modules/OpenData/utils.js +44 -78
  113. package/lib/modules/Order/index.d.ts +1 -1
  114. package/lib/modules/Order/index.js +332 -320
  115. package/lib/modules/Order/types.js +24 -33
  116. package/lib/modules/Order/utils.js +350 -284
  117. package/lib/modules/Payment/cash.js +20 -33
  118. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  119. package/lib/modules/Payment/eftpos.js +16 -30
  120. package/lib/modules/Payment/index.js +566 -432
  121. package/lib/modules/Payment/mx51.js +1 -0
  122. package/lib/modules/Payment/types.js +216 -107
  123. package/lib/modules/Payment/utils.js +50 -47
  124. package/lib/modules/Payment/walletpass.js +221 -203
  125. package/lib/modules/Product/index.js +51 -46
  126. package/lib/modules/Product/types.js +4 -16
  127. package/lib/modules/Product/utils.js +32 -33
  128. package/lib/modules/ProductList/index.js +111 -110
  129. package/lib/modules/ProductList/types.js +9 -31
  130. package/lib/modules/Quotation/index.js +60 -82
  131. package/lib/modules/Quotation/types.js +4 -16
  132. package/lib/modules/Resource/index.js +27 -59
  133. package/lib/modules/Resource/types.js +22 -32
  134. package/lib/modules/Resource/utils.js +30 -38
  135. package/lib/modules/Rules/index.js +1172 -872
  136. package/lib/modules/Rules/types.js +17 -40
  137. package/lib/modules/SalesSummary/index.js +59 -68
  138. package/lib/modules/SalesSummary/types.js +4 -16
  139. package/lib/modules/SalesSummary/utils.js +178 -193
  140. package/lib/modules/ScanOrderLogger/index.js +59 -79
  141. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  142. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  143. package/lib/modules/ScanOrderLogger/types.js +4 -16
  144. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
  145. package/lib/modules/Schedule/index.js +97 -107
  146. package/lib/modules/Schedule/type.js +4 -16
  147. package/lib/modules/Schedule/types.js +4 -16
  148. package/lib/modules/Schedule/utils.js +433 -291
  149. package/lib/modules/Step/index.js +40 -52
  150. package/lib/modules/Step/tyeps.js +4 -16
  151. package/lib/modules/Summary/index.js +66 -70
  152. package/lib/modules/Summary/types.js +4 -16
  153. package/lib/modules/Summary/utils.js +782 -429
  154. package/lib/modules/index.js +212 -57
  155. package/lib/plugins/app.js +4 -16
  156. package/lib/plugins/index.js +36 -25
  157. package/lib/plugins/request.js +137 -126
  158. package/lib/plugins/shopStore.js +4 -16
  159. package/lib/plugins/user.js +4 -16
  160. package/lib/plugins/window.js +171 -179
  161. package/lib/server/index.js +882 -623
  162. package/lib/server/modules/index.js +85 -59
  163. package/lib/server/modules/menu/index.js +146 -122
  164. package/lib/server/modules/menu/types.js +18 -31
  165. package/lib/server/modules/order/index.js +195 -231
  166. package/lib/server/modules/order/types.js +107 -32
  167. package/lib/server/modules/order/utils/filterBookings.js +174 -140
  168. package/lib/server/modules/order/utils/filterOrders.js +89 -60
  169. package/lib/server/modules/products/index.js +430 -335
  170. package/lib/server/modules/products/types.js +41 -34
  171. package/lib/server/modules/quotation/index.js +76 -77
  172. package/lib/server/modules/quotation/types.js +21 -31
  173. package/lib/server/modules/resource/index.js +216 -187
  174. package/lib/server/modules/resource/types.js +42 -33
  175. package/lib/server/modules/schedule/index.js +134 -119
  176. package/lib/server/modules/schedule/types.js +14 -21
  177. package/lib/server/modules/schedule/utils.js +334 -163
  178. package/lib/server/types.js +4 -16
  179. package/lib/server/utils/index.js +25 -23
  180. package/lib/server/utils/product.js +196 -139
  181. package/lib/server/utils/schedule.js +34 -41
  182. package/lib/server/utils/time.js +40 -49
  183. package/lib/solution/BookingByStep/index.d.ts +1 -1
  184. package/lib/solution/BookingByStep/index.js +1530 -1343
  185. package/lib/solution/BookingByStep/types.js +40 -99
  186. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  187. package/lib/solution/BookingByStep/utils/products.js +42 -52
  188. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  189. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  190. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  191. package/lib/solution/BookingTicket/index.d.ts +1 -1
  192. package/lib/solution/BookingTicket/index.js +147 -122
  193. package/lib/solution/BookingTicket/types.js +38 -64
  194. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
  195. package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
  196. package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
  197. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  198. package/lib/solution/BuyTickets/index.js +67 -70
  199. package/lib/solution/BuyTickets/types.js +22 -38
  200. package/lib/solution/Checkout/index.js +1451 -1158
  201. package/lib/solution/Checkout/types.js +91 -61
  202. package/lib/solution/Checkout/utils/index.js +227 -158
  203. package/lib/solution/PlaceOrder/index.js +55 -0
  204. package/lib/solution/RegisterAndLogin/config.js +493 -460
  205. package/lib/solution/RegisterAndLogin/index.js +633 -630
  206. package/lib/solution/RegisterAndLogin/types.js +189 -76
  207. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  208. package/lib/solution/Sales/index.js +218 -200
  209. package/lib/solution/Sales/types.js +27 -33
  210. package/lib/solution/ScanOrder/index.js +803 -840
  211. package/lib/solution/ScanOrder/types.js +34 -34
  212. package/lib/solution/ScanOrder/utils.js +372 -331
  213. package/lib/solution/ShopDiscount/index.js +230 -236
  214. package/lib/solution/ShopDiscount/types.js +15 -37
  215. package/lib/solution/ShopDiscount/utils.js +309 -172
  216. package/lib/solution/VenueBooking/index.d.ts +5 -0
  217. package/lib/solution/VenueBooking/index.js +886 -929
  218. package/lib/solution/VenueBooking/types.js +20 -40
  219. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  220. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  221. package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
  222. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  223. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  224. package/lib/solution/VenueBooking/utils.js +130 -67
  225. package/lib/solution/index.js +102 -37
  226. package/lib/store/createStore.js +32 -29
  227. package/lib/types/index.js +4 -16
  228. package/lib/utils/task.js +36 -36
  229. package/lib/utils/watch.js +81 -47
  230. package/package.json +2 -1
@@ -1,28 +1,23 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/server/modules/order/utils/filterOrders.ts
20
- var filterOrders_exports = {};
21
- __export(filterOrders_exports, {
22
- filterOrders: () => filterOrders
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(filterOrders_exports);
6
+ exports.filterOrders = filterOrders;
7
+ /**
8
+ * 订单过滤函数
9
+ * @param orders 原始订单列表
10
+ * @param filters 过滤条件
11
+ * @returns 过滤 + 排序 + 分页后的结果
12
+ *
13
+ * @优化口子 性能优化预留:
14
+ * - 可在此函数入口加缓存(按 filters 签名缓存结果)
15
+ * - 可对枚举字段建倒排索引(status/payment_status/shipping_status/customer_id)
16
+ * - 可对文本字段加前缀树或分词索引
17
+ * - 可做增量过滤而非全量遍历
18
+ */
25
19
  function filterOrders(orders, filters) {
20
+ // Bug 1 修复:防护 filters 为 null/undefined
26
21
  const safeFilters = filters || {};
27
22
  if (!orders || !Array.isArray(orders)) {
28
23
  return {
@@ -32,154 +27,192 @@ function filterOrders(orders, filters) {
32
27
  skip: 0
33
28
  };
34
29
  }
30
+
31
+ // 默认分页参数
35
32
  const size = safeFilters.num || 20;
36
33
  const page = safeFilters.skip || 1;
37
- let filteredList = orders.filter((order) => {
34
+
35
+ // 1. 过滤
36
+ let filteredList = orders.filter(order => {
37
+ // status - 订单状态
38
38
  if (safeFilters.status && safeFilters.status.length > 0) {
39
39
  if (!order.status || !safeFilters.status.includes(order.status)) {
40
40
  return false;
41
41
  }
42
42
  }
43
+
44
+ // payment_status - 支付状态
43
45
  if (safeFilters.payment_status && safeFilters.payment_status.length > 0) {
44
46
  if (!order.payment_status || !safeFilters.payment_status.includes(order.payment_status)) {
45
47
  return false;
46
48
  }
47
49
  }
50
+
51
+ // shipping_status - 处理状态
48
52
  if (safeFilters.shipping_status && safeFilters.shipping_status.length > 0) {
49
53
  if (!order.shipping_status || !safeFilters.shipping_status.includes(order.shipping_status)) {
50
54
  return false;
51
55
  }
52
56
  }
53
- if (safeFilters.customer_id !== void 0 && safeFilters.customer_id !== null) {
57
+
58
+ // customer_id - 客户ID(精确匹配)
59
+ if (safeFilters.customer_id !== undefined && safeFilters.customer_id !== null) {
54
60
  if (String(order.customer_id) !== String(safeFilters.customer_id)) {
55
61
  return false;
56
62
  }
57
63
  }
64
+
65
+ // order_sales_channel - 销售渠道
58
66
  if (safeFilters.order_sales_channel && safeFilters.order_sales_channel.length > 0) {
59
67
  if (!order.order_sales_channel || !safeFilters.order_sales_channel.includes(order.order_sales_channel)) {
60
68
  return false;
61
69
  }
62
70
  }
71
+
72
+ // payment_methods - 支付方式
63
73
  if (safeFilters.payment_methods && safeFilters.payment_methods.length > 0) {
64
74
  if (!order.payment_methods || !Array.isArray(order.payment_methods) || order.payment_methods.length === 0) {
65
75
  return false;
66
76
  }
67
- const hasMatch = order.payment_methods.some((pm) => safeFilters.payment_methods.includes(pm));
77
+ const hasMatch = order.payment_methods.some(pm => safeFilters.payment_methods.includes(pm));
68
78
  if (!hasMatch) {
69
79
  return false;
70
80
  }
71
81
  }
72
- if (safeFilters.min_total_amount !== void 0 || safeFilters.max_total_amount !== void 0) {
82
+
83
+ // min_total_amount / max_total_amount - 订单金额范围
84
+ if (safeFilters.min_total_amount !== undefined || safeFilters.max_total_amount !== undefined) {
73
85
  const orderAmount = parseFloat(String(order.total_amount || 0));
74
- if (safeFilters.min_total_amount !== void 0 && orderAmount < safeFilters.min_total_amount) {
86
+ if (safeFilters.min_total_amount !== undefined && orderAmount < safeFilters.min_total_amount) {
75
87
  return false;
76
88
  }
77
- if (safeFilters.max_total_amount !== void 0 && orderAmount > safeFilters.max_total_amount) {
89
+ if (safeFilters.max_total_amount !== undefined && orderAmount > safeFilters.max_total_amount) {
78
90
  return false;
79
91
  }
80
92
  }
93
+
94
+ // tag_ids - 标签(统一 String 比较,兼容 number/string)
81
95
  if (safeFilters.tag_ids && safeFilters.tag_ids.length > 0) {
82
96
  if (!order.tag_ids || !Array.isArray(order.tag_ids) || order.tag_ids.length === 0) {
83
97
  return false;
84
98
  }
85
99
  const filterTagSet = new Set(safeFilters.tag_ids.map(String));
86
- const hasMatch = order.tag_ids.some((tag) => filterTagSet.has(String(tag)));
100
+ const hasMatch = order.tag_ids.some(tag => filterTagSet.has(String(tag)));
87
101
  if (!hasMatch) {
88
102
  return false;
89
103
  }
90
104
  }
105
+
106
+ // shipping_type - 配送方式
91
107
  if (safeFilters.shipping_type && safeFilters.shipping_type.length > 0) {
92
108
  if (!order.shipping_type || !safeFilters.shipping_type.includes(order.shipping_type)) {
93
109
  return false;
94
110
  }
95
111
  }
96
- if (safeFilters.delivery_zone_name !== void 0 && safeFilters.delivery_zone_name !== null && safeFilters.delivery_zone_name !== "") {
112
+
113
+ // delivery_zone_name - 配送区域(模糊匹配)
114
+ if (safeFilters.delivery_zone_name !== undefined && safeFilters.delivery_zone_name !== null && safeFilters.delivery_zone_name !== '') {
97
115
  if (!order.delivery_zone_name || !order.delivery_zone_name.toLowerCase().includes(safeFilters.delivery_zone_name.toLowerCase())) {
98
116
  return false;
99
117
  }
100
118
  }
101
- if (safeFilters.location_id !== void 0 && safeFilters.location_id !== null) {
119
+
120
+ // location_id - 取货地点(精确匹配)
121
+ if (safeFilters.location_id !== undefined && safeFilters.location_id !== null) {
102
122
  if (String(order.location_id) !== String(safeFilters.location_id)) {
103
123
  return false;
104
124
  }
105
125
  }
106
- if (safeFilters.shipping_order_number !== void 0 && safeFilters.shipping_order_number !== null && safeFilters.shipping_order_number !== "") {
126
+
127
+ // shipping_order_number - 物流单号(模糊匹配)
128
+ if (safeFilters.shipping_order_number !== undefined && safeFilters.shipping_order_number !== null && safeFilters.shipping_order_number !== '') {
107
129
  if (!order.shipping_order_number || !order.shipping_order_number.toLowerCase().includes(safeFilters.shipping_order_number.toLowerCase())) {
108
130
  return false;
109
131
  }
110
132
  }
133
+
134
+ // logistics_company_id - 物流公司
111
135
  if (safeFilters.logistics_company_id && safeFilters.logistics_company_id.length > 0) {
112
136
  if (!order.logistics_company_id) {
113
137
  return false;
114
138
  }
115
139
  const orderLogisticsId = String(order.logistics_company_id);
116
- const hasMatch = safeFilters.logistics_company_id.some((id) => String(id) === orderLogisticsId);
140
+ const hasMatch = safeFilters.logistics_company_id.some(id => String(id) === orderLogisticsId);
117
141
  if (!hasMatch) {
118
142
  return false;
119
143
  }
120
144
  }
121
- if (safeFilters.zip !== void 0 && safeFilters.zip !== null && safeFilters.zip !== "") {
145
+
146
+ // zip - 邮编(模糊匹配)
147
+ if (safeFilters.zip !== undefined && safeFilters.zip !== null && safeFilters.zip !== '') {
122
148
  if (!order.zip || !order.zip.toLowerCase().includes(safeFilters.zip.toLowerCase())) {
123
149
  return false;
124
150
  }
125
151
  }
152
+
153
+ // business_code - 业务类型(精确匹配)
126
154
  if (safeFilters.business_code) {
127
155
  if (!order.business_code || order.business_code !== safeFilters.business_code) {
128
156
  return false;
129
157
  }
130
158
  }
159
+
160
+ // start_time / end_time - 创建时间范围
131
161
  if (safeFilters.start_time || safeFilters.end_time) {
132
- const orderTime = order.created_at ? typeof order.created_at === "number" ? order.created_at : new Date(String(order.created_at)).getTime() : 0;
162
+ const orderTime = order.created_at ? typeof order.created_at === 'number' ? order.created_at : new Date(String(order.created_at)).getTime() : 0;
133
163
  if (safeFilters.start_time) {
134
164
  const startTs = new Date(safeFilters.start_time).getTime();
135
- if (orderTime < startTs)
136
- return false;
165
+ if (orderTime < startTs) return false;
137
166
  }
138
167
  if (safeFilters.end_time) {
139
- const endTs = new Date(safeFilters.end_time).getTime() + 864e5 - 1;
140
- if (orderTime > endTs)
141
- return false;
168
+ // end_time 为当天结束(23:59:59.999)
169
+ const endTs = new Date(safeFilters.end_time).getTime() + 86400000 - 1;
170
+ if (orderTime > endTs) return false;
142
171
  }
143
172
  }
144
173
  return true;
145
174
  });
175
+
176
+ // 2. 排序
146
177
  if (safeFilters.order_by) {
147
178
  const sortField = safeFilters.order_by;
148
- const sortOrder = safeFilters.sort || "desc";
179
+ const sortOrder = safeFilters.sort || 'desc';
149
180
  filteredList.sort((a, b) => {
150
181
  let aVal;
151
182
  let bVal;
152
183
  switch (sortField) {
153
- case "created_at":
154
- aVal = a.created_at ? typeof a.created_at === "number" ? a.created_at : new Date(String(a.created_at)).getTime() : 0;
155
- bVal = b.created_at ? typeof b.created_at === "number" ? b.created_at : new Date(String(b.created_at)).getTime() : 0;
184
+ case 'created_at':
185
+ aVal = a.created_at ? typeof a.created_at === 'number' ? a.created_at : new Date(String(a.created_at)).getTime() : 0;
186
+ bVal = b.created_at ? typeof b.created_at === 'number' ? b.created_at : new Date(String(b.created_at)).getTime() : 0;
156
187
  break;
157
- case "updated_at":
158
- aVal = a.updated_at ? typeof a.updated_at === "number" ? a.updated_at : new Date(String(a.updated_at)).getTime() : 0;
159
- bVal = b.updated_at ? typeof b.updated_at === "number" ? b.updated_at : new Date(String(b.updated_at)).getTime() : 0;
188
+ case 'updated_at':
189
+ aVal = a.updated_at ? typeof a.updated_at === 'number' ? a.updated_at : new Date(String(a.updated_at)).getTime() : 0;
190
+ bVal = b.updated_at ? typeof b.updated_at === 'number' ? b.updated_at : new Date(String(b.updated_at)).getTime() : 0;
160
191
  break;
161
- case "total_amount":
192
+ case 'total_amount':
162
193
  aVal = parseFloat(String(a.total_amount || 0));
163
194
  bVal = parseFloat(String(b.total_amount || 0));
164
195
  break;
165
- case "customer_name":
166
- aVal = (a.customer_name || "").toLowerCase();
167
- bVal = (b.customer_name || "").toLowerCase();
196
+ case 'customer_name':
197
+ aVal = (a.customer_name || '').toLowerCase();
198
+ bVal = (b.customer_name || '').toLowerCase();
168
199
  break;
169
- case "amount_gap":
200
+ case 'amount_gap':
170
201
  return 0;
171
202
  default:
172
203
  return 0;
173
204
  }
174
205
  if (aVal < bVal) {
175
- return sortOrder === "asc" ? -1 : 1;
206
+ return sortOrder === 'asc' ? -1 : 1;
176
207
  }
177
208
  if (aVal > bVal) {
178
- return sortOrder === "asc" ? 1 : -1;
209
+ return sortOrder === 'asc' ? 1 : -1;
179
210
  }
180
211
  return 0;
181
212
  });
182
213
  }
214
+
215
+ // 3. 分页(skip 为页码,从 1 开始)
183
216
  const totalCount = filteredList.length;
184
217
  const startIndex = (page - 1) * size;
185
218
  const endIndex = startIndex + size;
@@ -190,8 +223,4 @@ function filterOrders(orders, filters) {
190
223
  size,
191
224
  skip: page
192
225
  };
193
- }
194
- // Annotate the CommonJS export names for ESM import in node:
195
- 0 && (module.exports = {
196
- filterOrders
197
- });
226
+ }