fix(SPG-1030): merge queue when user is exits
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

pull/115/head 1.2.7-alpha.2
shancheas 2024-11-20 12:50:58 +07:00
parent 4dc21c4ebd
commit 3b19484f29
2 changed files with 35 additions and 4 deletions

View File

@ -31,6 +31,10 @@ export class TicketDataService extends BaseDataService<QueueTicket> {
return await this.order.save(order);
}
async updateQueueTicket(ticket: QueueTicket): Promise<QueueTicketModel> {
return await this.repo.save(ticket);
}
async loginQueue(id: string): Promise<QueueOrder> {
return this.order.findOneOrFail({
relations: ['tickets'],
@ -52,6 +56,19 @@ export class TicketDataService extends BaseDataService<QueueTicket> {
});
}
async ticketByUser(user: string, phone: string): Promise<QueueTicket> {
const start = moment().startOf('day').valueOf();
const end = moment().endOf('day').valueOf();
return this.repo.findOne({
where: {
customer: user,
phone: phone,
date: Between(start, end),
},
});
}
async loginPhone(user: string, phone: string): Promise<QueueOrder> {
const start = moment().startOf('day').valueOf();
const end = moment().endOf('day').valueOf();

View File

@ -64,15 +64,29 @@ export class QueueTransactionHandler
};
});
const ticket: QueueTicket = { ...customerOrder, items };
const order: QueueOrder = { ...customerOrder, tickets: [ticket] };
const existTicket = await this.ticketService.ticketByUser(
customer_name,
customer_phone,
);
const insertTickets = [];
if (existTicket) {
existTicket.items = items;
insertTickets.push(existTicket);
await this.ticketService.updateQueueTicket(existTicket);
} else {
const ticket: QueueTicket = { ...customerOrder, items };
const order: QueueOrder = { ...customerOrder, tickets: [ticket] };
const queueOrder = await this.ticketService.createQueueOrder(order);
insertTickets.push(...queueOrder.tickets);
}
const queueOrder = await this.ticketService.createQueueOrder(order);
if (
transaction.customer_category?.has_vip_pass ||
transaction.customer_type === TransactionUserType.VIP
) {
queueOrder.tickets.forEach((ticket) => {
insertTickets.forEach((ticket) => {
const ticket_id = ticket.id;
ticket.items.forEach((item) => {
const item_id = item.item_id;