@freedom_sky/feige-lib 5.3.0 → 5.4.1

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 (content) { return content.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 * 60 - Math.floor((Date.now() - new Date(lastBuffetSubmitTime).getTime()) / 1000);
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freedom_sky/feige-lib",
3
- "version": "5.3.0",
3
+ "version": "5.4.1",
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(content => content.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 * 60 - Math.floor((Date.now() - new Date(lastBuffetSubmitTime).getTime()) / 1000);
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
+ }