@freedom_sky/feige-lib 5.2.0 → 5.4.0

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.
@@ -1,4 +1,4 @@
1
- import { BuffetCombosItems, BuffetDishItem } from '../index';
1
+ import { BuffetCombosItems, BuffetDishItem, Order } from '../index';
2
2
  /**
3
3
  * 计算自助餐总价
4
4
  */
@@ -34,3 +34,9 @@ export declare function dishShowPriceWithBuffet({ dishPrice, dishId, buffet, ord
34
34
  adultNum: number;
35
35
  childNum: number;
36
36
  }): number;
37
+ /**
38
+ *
39
+ */
40
+ export declare function getTimeToNextTurn({ order }: {
41
+ order: Order;
42
+ }): number;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ var index_1 = require("../index");
3
4
  /**
4
5
  * 计算自助餐总价
5
6
  */
@@ -51,3 +52,35 @@ function dishShowPriceWithBuffet(_a) {
51
52
  }
52
53
  }
53
54
  exports.dishShowPriceWithBuffet = dishShowPriceWithBuffet;
55
+ /**
56
+ *
57
+ */
58
+ function getTimeToNextTurn(_a) {
59
+ var order = _a.order;
60
+ var _b;
61
+ if (!order)
62
+ return 0;
63
+ if (order.type !== index_1.OrderTypeEnum.Buffet)
64
+ return 0;
65
+ var buffetCombosItems = (_b = order.buffet) === null || _b === void 0 ? void 0 : _b.snapshot;
66
+ if (!buffetCombosItems)
67
+ return 0;
68
+ if (!buffetCombosItems.orderingByTurns.enable)
69
+ return 0;
70
+ var _c = buffetCombosItems.orderingByTurns, interval = _c.interval, maxRounds = _c.maxRounds;
71
+ var previousBuffetSubmitTasks = order.tasks.filter(function (task) {
72
+ return (task.type === index_1.CONST.TASK_TYPE.CHECK || task.type === index_1.CONST.TASK_TYPE.APPEND) &&
73
+ _haveAtLeastOneSameItem(task.content.map(function (dishSnapshot) { return dishSnapshot._id; }), buffetCombosItems.dishes.map(function (dish) { return dish.dishId; }));
74
+ });
75
+ if (previousBuffetSubmitTasks.length === 0)
76
+ return 0;
77
+ if (previousBuffetSubmitTasks.length >= maxRounds)
78
+ return Infinity;
79
+ var lastBuffetSubmitTime = previousBuffetSubmitTasks.pop().date;
80
+ return interval - (Date.now() - new Date(lastBuffetSubmitTime).getTime());
81
+ }
82
+ exports.getTimeToNextTurn = getTimeToNextTurn;
83
+ function _haveAtLeastOneSameItem(arr1, arr2) {
84
+ var set1 = new Set(arr1);
85
+ return arr2.some(function (item) { return set1.has(item); });
86
+ }
@@ -117,6 +117,7 @@ export interface Store {
117
117
  enable: boolean;
118
118
  showDishesOutOfBuffetInClient: boolean;
119
119
  allowDishNumberExceedSetLimitInClient: boolean;
120
+ childStandard: string;
120
121
  buffetCombos: BuffetCombosItems[];
121
122
  };
122
123
  readonly allergenSetting: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freedom_sky/feige-lib",
3
- "version": "5.2.0",
3
+ "version": "5.4.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -1,4 +1,4 @@
1
- import { BuffetCombosItems, BuffetDishItem } from '../index';
1
+ import { BuffetCombosItems, BuffetDishItem, Order, CONST, OrderTypeEnum } from '../index';
2
2
  /**
3
3
  * 计算自助餐总价
4
4
  */
@@ -71,3 +71,32 @@ export function dishShowPriceWithBuffet({
71
71
  return dishPrice;
72
72
  }
73
73
  }
74
+
75
+ /**
76
+ *
77
+ */
78
+ export function getTimeToNextTurn({
79
+ order
80
+ }: {
81
+ order: Order
82
+ }): number {
83
+ if(!order) return 0;
84
+ if (order.type !== OrderTypeEnum.Buffet) return 0;
85
+ const buffetCombosItems = order.buffet?.snapshot;
86
+ if (!buffetCombosItems) return 0;
87
+ if (!buffetCombosItems.orderingByTurns.enable) return 0;
88
+ const { interval, maxRounds } = buffetCombosItems.orderingByTurns;
89
+ const previousBuffetSubmitTasks = order.tasks.filter(task =>
90
+ (task.type === CONST.TASK_TYPE.CHECK || task.type === CONST.TASK_TYPE.APPEND) &&
91
+ _haveAtLeastOneSameItem(task.content.map(dishSnapshot => dishSnapshot._id), buffetCombosItems.dishes.map(dish => dish.dishId))
92
+ );
93
+ if(previousBuffetSubmitTasks.length === 0) return 0;
94
+ if(previousBuffetSubmitTasks.length >= maxRounds) return Infinity;
95
+ const lastBuffetSubmitTime = previousBuffetSubmitTasks.pop().date;
96
+ return interval - (Date.now() - new Date(lastBuffetSubmitTime).getTime());
97
+ }
98
+
99
+ function _haveAtLeastOneSameItem<T>(arr1: T[], arr2: T[]): boolean {
100
+ const set1 = new Set(arr1);
101
+ return arr2.some(item => set1.has(item));
102
+ }
@@ -36,11 +36,11 @@ export interface BuffetCombosItems {
36
36
  };
37
37
  dishes: BuffetDishItem[];
38
38
  orderingByTurns: {
39
- enable: boolean,
40
- interval: number,
41
- maxOrdersPerRoundPerPerson: number,
42
- maxRounds: number,
43
- }
39
+ enable: boolean;
40
+ interval: number;
41
+ maxOrdersPerRoundPerPerson: number;
42
+ maxRounds: number;
43
+ };
44
44
  }
45
45
 
46
46
  export interface AllergenItem {
@@ -128,6 +128,7 @@ export interface Store {
128
128
  enable: boolean;
129
129
  showDishesOutOfBuffetInClient: boolean;
130
130
  allowDishNumberExceedSetLimitInClient: boolean;
131
+ childStandard: string;
131
132
  buffetCombos: BuffetCombosItems[];
132
133
  };
133
134
  readonly allergenSetting: {