@pisell/pisellos 0.0.569 → 0.10.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.
- package/dist/core/index.js +10 -6
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
- package/dist/model/strategy/adapter/walletPass/example.js +26 -3
- package/dist/model/strategy/adapter/walletPass/index.js +5 -5
- package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
- package/dist/model/strategy/strategy-example.js +19 -5
- package/dist/modules/BaseModule.d.ts +1 -1
- package/dist/modules/BaseModule.js +8 -10
- package/dist/modules/Cart/index.js +3 -0
- package/dist/modules/Cart/utils/cartProduct.js +1 -0
- package/dist/modules/Cart/utils/cartResource.js +0 -2
- package/dist/modules/Cart/utils/changePrice.js +9 -16
- package/dist/modules/Date/index.js +5 -1
- package/dist/modules/Discount/index.d.ts +0 -1
- package/dist/modules/Discount/index.js +7 -22
- package/dist/modules/Discount/types.d.ts +0 -1
- package/dist/modules/OpenData/index.js +2 -0
- package/dist/modules/Order/index.js +70 -40
- package/dist/modules/Payment/index.js +162 -97
- package/dist/modules/Payment/types.d.ts +4 -8
- package/dist/modules/Payment/walletpass.d.ts +0 -2
- package/dist/modules/Payment/walletpass.js +5 -4
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +3 -12
- package/dist/modules/ProductList/types.d.ts +0 -1
- package/dist/modules/Rules/index.js +126 -427
- package/dist/modules/SalesSummary/utils.js +1 -2
- package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
- package/dist/modules/Schedule/index.js +1 -0
- package/dist/modules/Schedule/utils.js +1 -0
- package/dist/modules/Step/index.js +1 -0
- package/dist/modules/Summary/utils.js +22 -43
- package/dist/plugins/request.js +4 -1
- package/dist/plugins/window.js +6 -2
- package/dist/server/index.js +129 -97
- package/dist/server/modules/menu/index.js +41 -32
- package/dist/server/modules/order/index.js +4 -2
- package/dist/server/modules/products/index.js +42 -24
- package/dist/server/modules/quotation/index.js +38 -29
- package/dist/server/modules/resource/index.js +4 -3
- package/dist/server/modules/schedule/index.js +35 -27
- package/dist/server/utils/product.js +1 -0
- package/dist/solution/BaseSales/index.js +41 -38
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +60 -11
- package/dist/solution/BookingByStep/utils/capacity.js +11 -1
- package/dist/solution/BookingByStep/utils/resources.js +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +2 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
- package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
- package/dist/solution/BuyTickets/index.js +12 -9
- package/dist/solution/Checkout/index.js +252 -177
- package/dist/solution/Checkout/utils/index.js +16 -4
- package/dist/solution/RegisterAndLogin/index.js +76 -30
- package/dist/solution/ScanOrder/index.js +60 -50
- package/dist/solution/ShopDiscount/index.js +14 -15
- package/dist/solution/ShopDiscount/types.d.ts +4 -5
- package/dist/solution/ShopDiscount/utils.d.ts +0 -9
- package/dist/solution/ShopDiscount/utils.js +0 -9
- package/dist/solution/VenueBooking/index.d.ts +3 -31
- package/dist/solution/VenueBooking/index.js +496 -651
- package/dist/solution/VenueBooking/types.d.ts +1 -3
- package/dist/solution/VenueBooking/types.js +0 -1
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/task.js +18 -15
- package/dist/utils/watch.js +1 -0
- package/lib/apis/picoding.js +0 -2
- package/lib/core/index.js +132 -130
- package/lib/effects/index.js +57 -46
- package/lib/index.d.ts +0 -1
- package/lib/index.js +50 -92
- package/lib/model/index.js +21 -14
- package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
- package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
- package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
- package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
- package/lib/model/strategy/adapter/index.js +64 -100
- package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
- package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
- package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
- package/lib/model/strategy/adapter/itemRule/index.js +57 -83
- package/lib/model/strategy/adapter/itemRule/type.js +36 -97
- package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
- package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
- package/lib/model/strategy/adapter/promotion/examples.js +159 -139
- package/lib/model/strategy/adapter/promotion/index.js +49 -1
- package/lib/model/strategy/adapter/promotion/type.js +35 -199
- package/lib/model/strategy/adapter/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
- package/lib/model/strategy/adapter/walletPass/example.js +190 -217
- package/lib/model/strategy/adapter/walletPass/index.js +51 -75
- package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
- package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/lib/model/strategy/adapter/walletPass/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
- package/lib/model/strategy/engine.js +168 -270
- package/lib/model/strategy/index.js +34 -49
- package/lib/model/strategy/strategy-example.js +239 -243
- package/lib/model/strategy/type.js +40 -100
- package/lib/modules/Account/index.js +53 -39
- package/lib/modules/Account/types.js +33 -20
- package/lib/modules/AccountList/index.js +154 -116
- package/lib/modules/AccountList/types.js +31 -30
- package/lib/modules/AccountList/utils.js +30 -18
- package/lib/modules/BaseModule.d.ts +1 -1
- package/lib/modules/BaseModule.js +46 -25
- package/lib/modules/BookingContext/index.js +136 -158
- package/lib/modules/BookingContext/types.js +32 -46
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
- package/lib/modules/BookingContext/utils/flexible.js +55 -38
- package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
- package/lib/modules/BookingContext/utils/index.js +41 -124
- package/lib/modules/BookingContext/utils/noResource.js +70 -58
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
- package/lib/modules/BookingContext/utils/productExtend.js +155 -202
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
- package/lib/modules/BookingContext/utils/resources.js +167 -209
- package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
- package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
- package/lib/modules/Cart/index.js +124 -170
- package/lib/modules/Cart/types.js +51 -46
- package/lib/modules/Cart/utils/cartAccount.js +39 -40
- package/lib/modules/Cart/utils/cartDate.js +61 -56
- package/lib/modules/Cart/utils/cartDiscount.js +33 -28
- package/lib/modules/Cart/utils/cartNote.js +32 -27
- package/lib/modules/Cart/utils/cartProduct.js +251 -321
- package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
- package/lib/modules/Cart/utils/cartResource.js +78 -72
- package/lib/modules/Cart/utils/changePrice.js +50 -28
- package/lib/modules/Cart/utils/index.js +48 -106
- package/lib/modules/Customer/constants.js +34 -13
- package/lib/modules/Customer/index.js +169 -232
- package/lib/modules/Customer/types.js +35 -38
- package/lib/modules/Date/index.js +115 -116
- package/lib/modules/Date/types.js +28 -16
- package/lib/modules/Date/utils.js +123 -174
- package/lib/modules/Discount/index.d.ts +0 -1
- package/lib/modules/Discount/index.js +128 -130
- package/lib/modules/Discount/types.d.ts +0 -1
- package/lib/modules/Discount/types.js +31 -9
- package/lib/modules/Guests/index.js +56 -30
- package/lib/modules/Guests/types.js +33 -23
- package/lib/modules/Holder/index.js +189 -209
- package/lib/modules/Holder/types.js +16 -4
- package/lib/modules/Holder/utils.js +49 -20
- package/lib/modules/OpenData/index.js +76 -69
- package/lib/modules/OpenData/types.js +16 -4
- package/lib/modules/OpenData/utils.js +78 -44
- package/lib/modules/Order/index.js +1909 -1572
- package/lib/modules/Order/types.js +35 -78
- package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
- package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
- package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
- package/lib/modules/Order/utils.js +634 -799
- package/lib/modules/Payment/cash.js +33 -20
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
- package/lib/modules/Payment/eftpos.js +30 -16
- package/lib/modules/Payment/index.js +378 -518
- package/lib/modules/Payment/mx51.js +0 -1
- package/lib/modules/Payment/types.d.ts +4 -8
- package/lib/modules/Payment/types.js +107 -216
- package/lib/modules/Payment/utils.js +48 -51
- package/lib/modules/Payment/walletpass.d.ts +0 -2
- package/lib/modules/Payment/walletpass.js +211 -226
- package/lib/modules/Product/index.js +46 -51
- package/lib/modules/Product/types.js +16 -4
- package/lib/modules/Product/utils.js +33 -32
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +117 -117
- package/lib/modules/ProductList/types.d.ts +0 -1
- package/lib/modules/ProductList/types.js +31 -9
- package/lib/modules/Quotation/index.js +100 -66
- package/lib/modules/Quotation/types.js +16 -4
- package/lib/modules/Resource/index.js +59 -27
- package/lib/modules/Resource/types.js +32 -22
- package/lib/modules/Resource/utils.js +38 -30
- package/lib/modules/ResourcePlanner/index.js +61 -60
- package/lib/modules/ResourcePlanner/planner.js +384 -346
- package/lib/modules/ResourcePlanner/types.js +16 -4
- package/lib/modules/Rules/index.js +903 -1475
- package/lib/modules/Rules/types.js +40 -17
- package/lib/modules/SalesSummary/index.js +90 -85
- package/lib/modules/SalesSummary/types.js +16 -4
- package/lib/modules/SalesSummary/utils.js +427 -351
- package/lib/modules/ScanOrderLogger/index.js +79 -59
- package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
- package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
- package/lib/modules/ScanOrderLogger/types.js +16 -4
- package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
- package/lib/modules/Schedule/index.js +114 -100
- package/lib/modules/Schedule/type.js +16 -4
- package/lib/modules/Schedule/types.js +16 -4
- package/lib/modules/Schedule/utils.js +291 -433
- package/lib/modules/Step/index.js +52 -40
- package/lib/modules/Step/tyeps.js +16 -4
- package/lib/modules/Summary/index.js +71 -66
- package/lib/modules/Summary/types.js +16 -4
- package/lib/modules/Summary/utils.js +418 -791
- package/lib/modules/SurchargeList/index.js +60 -46
- package/lib/modules/SurchargeList/types.js +16 -4
- package/lib/modules/index.js +63 -245
- package/lib/plugins/app.js +16 -4
- package/lib/plugins/index.js +25 -36
- package/lib/plugins/request.js +126 -137
- package/lib/plugins/shopStore.js +16 -4
- package/lib/plugins/user.js +16 -4
- package/lib/plugins/window.js +179 -171
- package/lib/server/index.js +2337 -2675
- package/lib/server/modules/floor-plan/index.js +123 -102
- package/lib/server/modules/floor-plan/types.js +30 -15
- package/lib/server/modules/index.js +68 -106
- package/lib/server/modules/menu/index.js +122 -146
- package/lib/server/modules/menu/types.js +31 -18
- package/lib/server/modules/order/index.js +642 -567
- package/lib/server/modules/order/types.js +32 -117
- package/lib/server/modules/order/utils/filterBookings.js +194 -219
- package/lib/server/modules/order/utils/filterOrders.js +92 -118
- package/lib/server/modules/payment/index.js +83 -59
- package/lib/server/modules/payment/types.js +16 -4
- package/lib/server/modules/products/index.js +459 -575
- package/lib/server/modules/products/types.js +34 -44
- package/lib/server/modules/quotation/index.js +172 -137
- package/lib/server/modules/quotation/types.js +31 -21
- package/lib/server/modules/resource/index.js +184 -213
- package/lib/server/modules/resource/types.js +33 -42
- package/lib/server/modules/schedule/index.js +123 -135
- package/lib/server/modules/schedule/types.js +21 -14
- package/lib/server/modules/schedule/utils.js +163 -334
- package/lib/server/types.js +16 -4
- package/lib/server/utils/index.js +23 -25
- package/lib/server/utils/product.js +139 -196
- package/lib/server/utils/schedule.js +41 -34
- package/lib/server/utils/small-ticket.js +456 -478
- package/lib/server/utils/time.js +49 -40
- package/lib/solution/BaseSales/index.js +1016 -850
- package/lib/solution/BaseSales/types.js +37 -41
- package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
- package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
- package/lib/solution/BaseSales/utils.js +140 -155
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1340 -1530
- package/lib/solution/BookingByStep/types.js +99 -40
- package/lib/solution/BookingByStep/utils/capacity.js +160 -192
- package/lib/solution/BookingByStep/utils/products.js +52 -42
- package/lib/solution/BookingByStep/utils/resources.js +330 -527
- package/lib/solution/BookingByStep/utils/stock.js +44 -65
- package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +459 -543
- package/lib/solution/BookingTicket/types.js +77 -99
- package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
- package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
- package/lib/solution/BookingTicket/utils/cartView.js +94 -110
- package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
- package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
- package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
- package/lib/solution/BuyTickets/index.js +70 -67
- package/lib/solution/BuyTickets/types.js +38 -22
- package/lib/solution/Checkout/index.js +1158 -1451
- package/lib/solution/Checkout/types.js +61 -91
- package/lib/solution/Checkout/utils/index.js +156 -228
- package/lib/solution/PlaceOrder/index.js +0 -55
- package/lib/solution/RegisterAndLogin/config.js +460 -493
- package/lib/solution/RegisterAndLogin/index.js +630 -633
- package/lib/solution/RegisterAndLogin/types.js +76 -189
- package/lib/solution/RegisterAndLogin/utils.js +125 -183
- package/lib/solution/Sales/index.js +320 -317
- package/lib/solution/Sales/types.js +33 -27
- package/lib/solution/ScanOrder/index.js +862 -831
- package/lib/solution/ScanOrder/types.js +34 -33
- package/lib/solution/ScanOrder/utils.js +371 -406
- package/lib/solution/ShopDiscount/index.js +233 -235
- package/lib/solution/ShopDiscount/types.d.ts +4 -5
- package/lib/solution/ShopDiscount/types.js +37 -15
- package/lib/solution/ShopDiscount/utils.d.ts +0 -9
- package/lib/solution/ShopDiscount/utils.js +172 -309
- package/lib/solution/UnifiedBookingSales/index.js +405 -379
- package/lib/solution/UnifiedBookingSales/types.js +31 -12
- package/lib/solution/VenueBooking/index.d.ts +3 -31
- package/lib/solution/VenueBooking/index.js +916 -967
- package/lib/solution/VenueBooking/types.d.ts +1 -3
- package/lib/solution/VenueBooking/types.js +39 -20
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
- package/lib/solution/VenueBooking/utils/resource.js +54 -31
- package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
- package/lib/solution/VenueBooking/utils.js +67 -130
- package/lib/solution/index.js +41 -124
- package/lib/store/createStore.js +29 -32
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +16 -4
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +47 -81
- package/package.json +2 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
|
@@ -1,130 +1,129 @@
|
|
|
1
|
-
|
|
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);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/modules/menu/index.ts
|
|
20
|
+
var menu_exports = {};
|
|
21
|
+
__export(menu_exports, {
|
|
22
|
+
MenuModule: () => MenuModule
|
|
5
23
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const INDEXDB_STORE_NAME = 'menu';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 餐牌模块 - 用于管理餐牌数据和根据餐牌过滤商品
|
|
17
|
-
*/
|
|
18
|
-
class MenuModule extends _BaseModule.BaseModule {
|
|
19
|
-
defaultName = 'menu';
|
|
20
|
-
defaultVersion = '1.0.0';
|
|
21
|
-
request;
|
|
22
|
-
store;
|
|
23
|
-
dbManager; // IndexDBManager 实例
|
|
24
|
-
logger; // LoggerManager 实例
|
|
25
|
-
|
|
24
|
+
module.exports = __toCommonJS(menu_exports);
|
|
25
|
+
var import_lodash_es = require("lodash-es");
|
|
26
|
+
var import_BaseModule = require("../../../modules/BaseModule");
|
|
27
|
+
var import_types = require("./types");
|
|
28
|
+
var INDEXDB_STORE_NAME = "menu";
|
|
29
|
+
var MenuModule = class extends import_BaseModule.BaseModule {
|
|
30
|
+
// LoggerManager 实例
|
|
26
31
|
constructor(name, version) {
|
|
27
32
|
super(name, version);
|
|
33
|
+
this.defaultName = "menu";
|
|
34
|
+
this.defaultVersion = "1.0.0";
|
|
28
35
|
}
|
|
29
36
|
async initialize(core, options) {
|
|
37
|
+
var _a;
|
|
30
38
|
this.core = core;
|
|
31
|
-
this.store = options
|
|
32
|
-
|
|
33
|
-
// 获取依赖的插件
|
|
34
|
-
this.request = core.getPlugin('request');
|
|
39
|
+
this.store = options == null ? void 0 : options.store;
|
|
40
|
+
this.request = core.getPlugin("request");
|
|
35
41
|
if (!this.request) {
|
|
36
|
-
throw new Error(
|
|
42
|
+
throw new Error("MenuModule 需要 request 插件支持");
|
|
37
43
|
}
|
|
38
|
-
if (Array.isArray(options
|
|
39
|
-
this.store.menuList = options
|
|
40
|
-
// 同步更新 Map 缓存
|
|
44
|
+
if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.menuList)) {
|
|
45
|
+
this.store.menuList = options == null ? void 0 : options.initialState.menuList;
|
|
41
46
|
this.syncMenuMap();
|
|
42
|
-
this.core.effects.emit(
|
|
47
|
+
this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
|
|
43
48
|
} else {
|
|
44
49
|
this.store.menuList = [];
|
|
45
|
-
this.store.map = new Map();
|
|
50
|
+
this.store.map = /* @__PURE__ */ new Map();
|
|
46
51
|
}
|
|
47
|
-
|
|
48
|
-
// 获取并存储 dbManager
|
|
49
|
-
const appPlugin = core.getPlugin('app');
|
|
52
|
+
const appPlugin = core.getPlugin("app");
|
|
50
53
|
if (appPlugin) {
|
|
51
54
|
const app = appPlugin.getApp();
|
|
52
55
|
this.dbManager = app.dbManager;
|
|
53
56
|
this.logger = app.logger;
|
|
54
|
-
if (this.dbManager) {
|
|
55
|
-
console.
|
|
57
|
+
if (this.dbManager) {
|
|
58
|
+
console.log("[Menu] IndexDB Manager 已初始化");
|
|
59
|
+
} else {
|
|
60
|
+
console.warn("[Menu] IndexDB Manager 未找到");
|
|
56
61
|
}
|
|
57
62
|
}
|
|
58
|
-
this.logInfo(
|
|
63
|
+
this.logInfo("模块初始化完成", {
|
|
59
64
|
hasDbManager: !!this.dbManager,
|
|
60
65
|
hasLogger: !!this.logger,
|
|
61
66
|
initialMenuCount: this.store.menuList.length
|
|
62
67
|
});
|
|
63
68
|
}
|
|
64
|
-
|
|
65
69
|
/**
|
|
66
70
|
* 加载餐牌列表(从服务器)
|
|
67
71
|
*/
|
|
68
72
|
async loadMenuList() {
|
|
69
|
-
|
|
73
|
+
var _a;
|
|
74
|
+
this.logInfo("开始从服务器加载餐牌列表");
|
|
70
75
|
const startTime = Date.now();
|
|
71
76
|
try {
|
|
72
|
-
const response = await this.request.get(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
const response = await this.request.get(
|
|
78
|
+
`/form/data/v1`,
|
|
79
|
+
{
|
|
80
|
+
skip: 1,
|
|
81
|
+
num: 999,
|
|
82
|
+
code: "menu_list"
|
|
83
|
+
},
|
|
84
|
+
{ cache: void 0 }
|
|
85
|
+
);
|
|
86
|
+
const menuList = ((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.list) || [];
|
|
80
87
|
const duration = Date.now() - startTime;
|
|
81
|
-
this.logInfo(
|
|
88
|
+
this.logInfo("从服务器加载餐牌列表成功", {
|
|
82
89
|
menuCount: menuList.length,
|
|
83
90
|
duration: `${duration}ms`
|
|
84
91
|
});
|
|
85
|
-
|
|
86
|
-
// 保存到 IndexDB
|
|
87
92
|
await this.saveMenuToIndexDB(menuList);
|
|
88
93
|
await this.setMenuList(menuList);
|
|
89
94
|
return menuList;
|
|
90
95
|
} catch (error) {
|
|
91
96
|
const duration = Date.now() - startTime;
|
|
92
97
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
93
|
-
console.error(
|
|
94
|
-
this.logError(
|
|
98
|
+
console.error("[Menu] 加载餐牌数据失败:", error);
|
|
99
|
+
this.logError("从服务器加载餐牌列表失败", {
|
|
95
100
|
duration: `${duration}ms`,
|
|
96
101
|
error: errorMessage
|
|
97
102
|
});
|
|
98
103
|
return [];
|
|
99
104
|
}
|
|
100
105
|
}
|
|
101
|
-
|
|
102
106
|
/**
|
|
103
107
|
* 设置餐牌列表
|
|
104
108
|
*/
|
|
105
109
|
async setMenuList(menuList) {
|
|
106
110
|
this.store.menuList = menuList;
|
|
107
|
-
// 同步更新 Map 缓存
|
|
108
111
|
this.syncMenuMap();
|
|
109
|
-
await this.core.effects.emit(
|
|
112
|
+
await this.core.effects.emit(import_types.MenuHooks.onMenuLoaded, menuList);
|
|
110
113
|
}
|
|
111
|
-
|
|
112
114
|
/**
|
|
113
115
|
* 获取餐牌列表
|
|
114
116
|
*/
|
|
115
117
|
getMenuList() {
|
|
116
118
|
return this.store.menuList;
|
|
117
119
|
}
|
|
118
|
-
|
|
119
120
|
/**
|
|
120
121
|
* 根据 form_record_id 数组获取餐牌详情
|
|
121
122
|
* 使用 Map 快速查询,时间复杂度 O(m),m 为 ids 数量
|
|
122
123
|
*/
|
|
123
124
|
getMenuByIds(ids) {
|
|
124
125
|
if (!ids || ids.length === 0) {
|
|
125
|
-
this.logInfo(
|
|
126
|
-
idsCount: 0
|
|
127
|
-
});
|
|
126
|
+
this.logInfo("getMenuByIds: 未提供有效的 ids", { idsCount: 0 });
|
|
128
127
|
return [];
|
|
129
128
|
}
|
|
130
129
|
const result = [];
|
|
@@ -134,14 +133,13 @@ class MenuModule extends _BaseModule.BaseModule {
|
|
|
134
133
|
result.push(menu);
|
|
135
134
|
}
|
|
136
135
|
}
|
|
137
|
-
this.logInfo(
|
|
136
|
+
this.logInfo("getMenuByIds: 查询完成", {
|
|
138
137
|
requestedCount: ids.length,
|
|
139
138
|
foundCount: result.length,
|
|
140
139
|
notFoundCount: ids.length - result.length
|
|
141
140
|
});
|
|
142
141
|
return result;
|
|
143
142
|
}
|
|
144
|
-
|
|
145
143
|
/**
|
|
146
144
|
* 同步更新餐牌 Map 缓存
|
|
147
145
|
* 将 menuList 中的餐牌同步到 map,以 form_record_id 为 key
|
|
@@ -152,171 +150,151 @@ class MenuModule extends _BaseModule.BaseModule {
|
|
|
152
150
|
for (const menu of this.store.menuList) {
|
|
153
151
|
this.store.map.set(menu.form_record_id, menu);
|
|
154
152
|
}
|
|
153
|
+
console.log(`[Menu] Map 缓存已同步,共 ${this.store.map.size} 个餐牌`);
|
|
155
154
|
}
|
|
156
|
-
|
|
157
155
|
/**
|
|
158
156
|
* 清空缓存
|
|
159
157
|
*/
|
|
160
158
|
async clear() {
|
|
161
|
-
this.logInfo(
|
|
159
|
+
this.logInfo("开始清空缓存", {
|
|
162
160
|
currentMenuCount: this.store.menuList.length
|
|
163
161
|
});
|
|
164
162
|
this.store.menuList = [];
|
|
165
163
|
this.store.map.clear();
|
|
166
|
-
this.store.currentMenu =
|
|
167
|
-
|
|
168
|
-
// 同时清空 IndexDB 中的数据
|
|
164
|
+
this.store.currentMenu = void 0;
|
|
169
165
|
if (this.dbManager) {
|
|
170
166
|
try {
|
|
171
167
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
172
|
-
|
|
168
|
+
console.log("[Menu] IndexDB 缓存已清空");
|
|
169
|
+
this.logInfo("IndexDB 缓存已清空");
|
|
173
170
|
} catch (error) {
|
|
174
171
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
175
|
-
console.error(
|
|
176
|
-
this.logError(
|
|
177
|
-
error: errorMessage
|
|
178
|
-
});
|
|
172
|
+
console.error("[Menu] 清空 IndexDB 缓存失败:", error);
|
|
173
|
+
this.logError("清空 IndexDB 缓存失败", { error: errorMessage });
|
|
179
174
|
}
|
|
180
175
|
}
|
|
181
|
-
|
|
176
|
+
console.log("[Menu] 缓存已清空");
|
|
177
|
+
this.logInfo("缓存清空完成");
|
|
182
178
|
}
|
|
183
|
-
|
|
184
179
|
/**
|
|
185
180
|
* 从 IndexDB 加载餐牌数据
|
|
186
181
|
* @private
|
|
187
182
|
*/
|
|
188
183
|
async loadMenuFromIndexDB() {
|
|
189
184
|
if (!this.dbManager) {
|
|
190
|
-
this.logWarning(
|
|
185
|
+
this.logWarning("loadMenuFromIndexDB: dbManager 不可用");
|
|
191
186
|
return [];
|
|
192
187
|
}
|
|
193
188
|
try {
|
|
194
|
-
// 直接获取所有餐牌记录
|
|
195
189
|
const menuList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
196
|
-
this.logInfo(
|
|
197
|
-
menuCount: menuList
|
|
190
|
+
this.logInfo("从 IndexDB 加载餐牌数据", {
|
|
191
|
+
menuCount: (menuList == null ? void 0 : menuList.length) ?? 0
|
|
198
192
|
});
|
|
199
193
|
return menuList || [];
|
|
200
194
|
} catch (error) {
|
|
201
195
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
202
|
-
console.error(
|
|
203
|
-
this.logError(
|
|
204
|
-
error: errorMessage
|
|
205
|
-
});
|
|
196
|
+
console.error("[Menu] 从 IndexDB 读取数据失败:", error);
|
|
197
|
+
this.logError("从 IndexDB 读取数据失败", { error: errorMessage });
|
|
206
198
|
return [];
|
|
207
199
|
}
|
|
208
200
|
}
|
|
209
|
-
|
|
210
201
|
/**
|
|
211
202
|
* 保存餐牌数据到 IndexDB
|
|
212
203
|
* @private
|
|
213
204
|
*/
|
|
214
205
|
async saveMenuToIndexDB(menuList) {
|
|
215
206
|
if (!this.dbManager) {
|
|
216
|
-
this.logWarning(
|
|
207
|
+
this.logWarning("saveMenuToIndexDB: dbManager 不可用");
|
|
217
208
|
return;
|
|
218
209
|
}
|
|
219
|
-
this.logInfo(
|
|
220
|
-
menuCount: menuList.length
|
|
221
|
-
});
|
|
210
|
+
this.logInfo("开始保存餐牌数据到 IndexDB", { menuCount: menuList.length });
|
|
222
211
|
try {
|
|
223
|
-
// 先清空现有的餐牌数据
|
|
224
212
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
213
|
+
const savePromises = menuList.map(
|
|
214
|
+
(menu) => this.dbManager.add(INDEXDB_STORE_NAME, menu)
|
|
215
|
+
);
|
|
228
216
|
await Promise.all(savePromises);
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
});
|
|
217
|
+
console.log(`[Menu] 已将 ${menuList.length} 条餐牌数据保存到 IndexDB`);
|
|
218
|
+
this.logInfo("餐牌数据已保存到 IndexDB", { menuCount: menuList.length });
|
|
232
219
|
} catch (error) {
|
|
233
220
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
234
|
-
console.error(
|
|
235
|
-
this.logError(
|
|
221
|
+
console.error("[Menu] 保存数据到 IndexDB 失败:", error);
|
|
222
|
+
this.logError("保存数据到 IndexDB 失败", {
|
|
236
223
|
menuCount: menuList.length,
|
|
237
224
|
error: errorMessage
|
|
238
225
|
});
|
|
239
226
|
}
|
|
240
227
|
}
|
|
241
|
-
|
|
242
228
|
/**
|
|
243
229
|
* 预加载模块数据(统一接口)
|
|
244
230
|
* 在模块注册后自动调用
|
|
245
231
|
*/
|
|
246
232
|
async preload() {
|
|
233
|
+
console.log("[Menu] 开始预加载数据...");
|
|
247
234
|
const startTime = Date.now();
|
|
248
|
-
this.logInfo(
|
|
235
|
+
this.logInfo("开始预加载数据");
|
|
249
236
|
try {
|
|
250
|
-
// 1. 尝试从 IndexDB 加载数据
|
|
251
237
|
const cachedData = await this.loadMenuFromIndexDB();
|
|
252
238
|
if (cachedData && cachedData.length > 0) {
|
|
253
|
-
|
|
254
|
-
this.store.menuList = (0,
|
|
255
|
-
// 同步更新 Map 缓存
|
|
239
|
+
console.log(`[Menu] 从 IndexDB 加载了 ${cachedData.length} 条餐牌数据`);
|
|
240
|
+
this.store.menuList = (0, import_lodash_es.cloneDeep)(cachedData);
|
|
256
241
|
this.syncMenuMap();
|
|
257
|
-
this.core.effects.emit(
|
|
242
|
+
this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
|
|
258
243
|
const duration = Date.now() - startTime;
|
|
259
|
-
this.logInfo(
|
|
244
|
+
this.logInfo("预加载完成(从 IndexDB)", {
|
|
260
245
|
menuCount: cachedData.length,
|
|
261
246
|
duration: `${duration}ms`,
|
|
262
|
-
source:
|
|
247
|
+
source: "IndexDB"
|
|
263
248
|
});
|
|
264
249
|
return;
|
|
265
250
|
}
|
|
266
|
-
|
|
251
|
+
console.log("[Menu] IndexDB 中没有缓存数据,从服务器加载...");
|
|
252
|
+
this.logInfo("IndexDB 中没有缓存数据,准备从服务器加载");
|
|
267
253
|
} catch (error) {
|
|
268
254
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
269
|
-
console.warn(
|
|
270
|
-
this.logWarning(
|
|
271
|
-
error: errorMessage
|
|
272
|
-
});
|
|
255
|
+
console.warn("[Menu] 从 IndexDB 加载数据失败:", error);
|
|
256
|
+
this.logWarning("从 IndexDB 加载数据失败,准备从服务器加载", { error: errorMessage });
|
|
273
257
|
}
|
|
274
|
-
|
|
275
|
-
// 2. 如果 IndexDB 中没有数据,从服务器加载
|
|
276
258
|
const menuList = await this.loadMenuList();
|
|
277
|
-
|
|
278
|
-
// 3. 将服务器数据保存到 IndexDB 和 store
|
|
279
259
|
if (menuList && menuList.length > 0) {
|
|
280
260
|
await this.saveMenuToIndexDB(menuList);
|
|
281
|
-
this.store.menuList = (0,
|
|
282
|
-
// 同步更新 Map 缓存
|
|
261
|
+
this.store.menuList = (0, import_lodash_es.cloneDeep)(menuList);
|
|
283
262
|
this.syncMenuMap();
|
|
284
|
-
this.core.effects.emit(
|
|
263
|
+
this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
|
|
285
264
|
const duration = Date.now() - startTime;
|
|
286
|
-
this.logInfo(
|
|
265
|
+
this.logInfo("预加载完成(从服务器)", {
|
|
287
266
|
menuCount: menuList.length,
|
|
288
267
|
duration: `${duration}ms`,
|
|
289
|
-
source:
|
|
268
|
+
source: "Server"
|
|
290
269
|
});
|
|
291
270
|
} else {
|
|
292
271
|
const duration = Date.now() - startTime;
|
|
293
|
-
this.logWarning(
|
|
272
|
+
this.logWarning("预加载完成但未获取到数据", {
|
|
294
273
|
duration: `${duration}ms`
|
|
295
274
|
});
|
|
296
275
|
}
|
|
297
276
|
}
|
|
298
|
-
|
|
299
277
|
/**
|
|
300
278
|
* 获取模块的路由定义
|
|
301
279
|
* 返回该模块需要注册的 API 路由
|
|
302
280
|
*/
|
|
303
281
|
getRoutes() {
|
|
304
282
|
return [
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
283
|
+
// GET /api/menu - 获取所有餐牌
|
|
284
|
+
{
|
|
285
|
+
method: "get",
|
|
286
|
+
path: "/api/menu",
|
|
287
|
+
handler: async () => {
|
|
288
|
+
const menuList = this.getMenuList();
|
|
289
|
+
return {
|
|
290
|
+
success: true,
|
|
291
|
+
data: menuList,
|
|
292
|
+
total: menuList.length
|
|
293
|
+
};
|
|
294
|
+
}
|
|
316
295
|
}
|
|
317
|
-
|
|
296
|
+
];
|
|
318
297
|
}
|
|
319
|
-
|
|
320
298
|
/**
|
|
321
299
|
* 记录信息日志
|
|
322
300
|
* @param title 日志标题
|
|
@@ -326,16 +304,14 @@ class MenuModule extends _BaseModule.BaseModule {
|
|
|
326
304
|
try {
|
|
327
305
|
if (this.logger) {
|
|
328
306
|
this.logger.addLog({
|
|
329
|
-
type:
|
|
307
|
+
type: "info",
|
|
330
308
|
title: `[MenuModule] ${title}`,
|
|
331
309
|
metadata: metadata || {}
|
|
332
310
|
});
|
|
333
311
|
}
|
|
334
312
|
} catch {
|
|
335
|
-
// 日志记录失败不影响主流程
|
|
336
313
|
}
|
|
337
314
|
}
|
|
338
|
-
|
|
339
315
|
/**
|
|
340
316
|
* 记录警告日志
|
|
341
317
|
* @param title 日志标题
|
|
@@ -345,16 +321,14 @@ class MenuModule extends _BaseModule.BaseModule {
|
|
|
345
321
|
try {
|
|
346
322
|
if (this.logger) {
|
|
347
323
|
this.logger.addLog({
|
|
348
|
-
type:
|
|
324
|
+
type: "warning",
|
|
349
325
|
title: `[MenuModule] ${title}`,
|
|
350
326
|
metadata: metadata || {}
|
|
351
327
|
});
|
|
352
328
|
}
|
|
353
329
|
} catch {
|
|
354
|
-
// 日志记录失败不影响主流程
|
|
355
330
|
}
|
|
356
331
|
}
|
|
357
|
-
|
|
358
332
|
/**
|
|
359
333
|
* 记录错误日志
|
|
360
334
|
* @param title 日志标题
|
|
@@ -364,14 +338,16 @@ class MenuModule extends _BaseModule.BaseModule {
|
|
|
364
338
|
try {
|
|
365
339
|
if (this.logger) {
|
|
366
340
|
this.logger.addLog({
|
|
367
|
-
type:
|
|
341
|
+
type: "error",
|
|
368
342
|
title: `[MenuModule] ${title}`,
|
|
369
343
|
metadata: metadata || {}
|
|
370
344
|
});
|
|
371
345
|
}
|
|
372
346
|
} catch {
|
|
373
|
-
// 日志记录失败不影响主流程
|
|
374
347
|
}
|
|
375
348
|
}
|
|
376
|
-
}
|
|
377
|
-
|
|
349
|
+
};
|
|
350
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
351
|
+
0 && (module.exports = {
|
|
352
|
+
MenuModule
|
|
353
|
+
});
|
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
|
|
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);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/modules/menu/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
MenuHooks: () => MenuHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var MenuHooks = /* @__PURE__ */ ((MenuHooks2) => {
|
|
26
|
+
MenuHooks2["onMenuLoaded"] = "menu:onMenuLoaded";
|
|
27
|
+
MenuHooks2["onMenuChanged"] = "menu:onMenuChanged";
|
|
28
|
+
return MenuHooks2;
|
|
29
|
+
})(MenuHooks || {});
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
MenuHooks
|
|
5
33
|
});
|
|
6
|
-
exports.MenuHooks = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* 餐牌模块状态
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* 餐牌数据结构
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* 餐牌模块钩子
|
|
15
|
-
*/
|
|
16
|
-
let MenuHooks = exports.MenuHooks = /*#__PURE__*/function (MenuHooks) {
|
|
17
|
-
MenuHooks["onMenuLoaded"] = "menu:onMenuLoaded";
|
|
18
|
-
MenuHooks["onMenuChanged"] = "menu:onMenuChanged";
|
|
19
|
-
return MenuHooks;
|
|
20
|
-
}({});
|