我正在做一个项目,其中bar中为4种不同的顺序分配了4种不同的颜色。 isCart : 4
表示订单未完成/已取消。一旦4种颜色被占用,将开始为即将到来的订单分配默认颜色。一旦完成或取消了该订单,则该分配的颜色将变为免费,并开始分配给下一个即将到来的订单。我面临一个问题,即有时在同一栏中为不同用户重复使用颜色。
这是我的逻辑:
let colorCode: string = await this.common.orderColorCode(updateStatus.barId,
checkoutSessionData.orderId);
public async orderColorCode(barId: string, orderId: string) {
console.log(barId + ' barId');
console.log(orderId + ' orderId');
let orderedColorCode = await this.itemOrderService.findOneCart(
{ barId: mongoose.Types.ObjectId(barId), colorCode: { $ne: constants.defaultColor }, "isCart": 4 },
{ _id: 0, colorCode: 1 }, { colorCode: 1 }, 0);
const usedColorCode = orderedColorCode.map(function (obj) {
return obj.colorCode;
});
console.log(usedColorCode + ' Used Color code');
var pendingColorCode = constants.colorCode.filter(function (item) {
return usedColorCode.indexOf(item) === -1;
});
console.log(pendingColorCode + ' pending Color code');
let colorCode = (pendingColorCode.length === 0) ? constants.defaultColor : pendingColorCode[0];
console.log(colorCode + ' Color code----------');
const updateColorCode = await this.itemOrderService.updateColorCodeOrderId({ _id: mongoose.Types.ObjectId(orderId) }, colorCode);
return colorCode;
}