@freedom_sky/feige-lib 5.3.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.
- package/dist/buffet/index.d.ts +7 -1
- package/dist/buffet/index.js +33 -0
- package/package.json +1 -1
- package/src/buffet/index.ts +30 -1
package/dist/buffet/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/buffet/index.js
CHANGED
|
@@ -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
|
+
}
|
package/package.json
CHANGED
package/src/buffet/index.ts
CHANGED
|
@@ -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
|
+
}
|