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); return await this.order.save(order);
} }
async updateQueueTicket(ticket: QueueTicket): Promise<QueueTicketModel> {
return await this.repo.save(ticket);
}
async loginQueue(id: string): Promise<QueueOrder> { async loginQueue(id: string): Promise<QueueOrder> {
return this.order.findOneOrFail({ return this.order.findOneOrFail({
relations: ['tickets'], 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> { async loginPhone(user: string, phone: string): Promise<QueueOrder> {
const start = moment().startOf('day').valueOf(); const start = moment().startOf('day').valueOf();
const end = moment().endOf('day').valueOf(); const end = moment().endOf('day').valueOf();

View File

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