82c447b193
酒厂银行账户
113 lines
3.5 KiB
TypeScript
113 lines
3.5 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common';
|
|
import { HqAuthGuard } from '../../common/guards/hq-auth.guard';
|
|
import { JwtAuthGuard, AuthUser } from '../../common/guards/jwt-auth.guard';
|
|
import { PartnerPermissionGuard } from '../../common/guards/partner-permission.guard';
|
|
import { RequirePartnerPermissions } from '../../common/decorators/partner-permission.decorator';
|
|
import { CurrentUser } from '../../common/decorators/current-user.decorator';
|
|
import { HqOperation } from '../../common/hq-operation/hq-operation.decorator';
|
|
import { HqOperationAction } from '../../common/hq-operation/hq-operation.constants';
|
|
import { AdminTicketsService } from './admin-tickets.service';
|
|
import { TicketListQueryDto } from '../common/dto/common-query.dto';
|
|
import { AdminCreateTicketDto } from '../common/dto/common-mutate.dto';
|
|
|
|
@Controller('admin/tickets')
|
|
@UseGuards(HqAuthGuard)
|
|
export class AdminTicketsController {
|
|
constructor(private readonly service: AdminTicketsService) {}
|
|
|
|
@Get()
|
|
list(@Query() query: TicketListQueryDto) {
|
|
return this.service.list(query);
|
|
}
|
|
|
|
@Post()
|
|
@HqOperation({
|
|
action: HqOperationAction.TICKET_CREATE,
|
|
refType: 'TICKET',
|
|
batch: true,
|
|
includeBody: true,
|
|
})
|
|
create(@Body() body: AdminCreateTicketDto) {
|
|
return this.service.createByHq(body);
|
|
}
|
|
|
|
@Get(':id')
|
|
detail(@Param('id') id: string) {
|
|
return this.service.detail(BigInt(id));
|
|
}
|
|
|
|
@Post(':id/approve')
|
|
@HqOperation({
|
|
action: HqOperationAction.TICKET_APPROVE,
|
|
refType: 'TICKET',
|
|
refIdParam: 'id',
|
|
includeBody: true,
|
|
})
|
|
approve(
|
|
@CurrentUser() user: AuthUser,
|
|
@Param('id') id: string,
|
|
@Body() body: { remark?: string },
|
|
) {
|
|
return this.service.approve(BigInt(id), body.remark, user.actorId.toString());
|
|
}
|
|
|
|
@Post(':id/reject')
|
|
@HqOperation({
|
|
action: HqOperationAction.TICKET_REJECT,
|
|
refType: 'TICKET',
|
|
refIdParam: 'id',
|
|
includeBody: true,
|
|
})
|
|
reject(@Param('id') id: string, @Body() body: { remark?: string }) {
|
|
return this.service.reject(BigInt(id), body.remark);
|
|
}
|
|
|
|
@Post(':id/complete-collab')
|
|
@HqOperation({
|
|
action: HqOperationAction.TICKET_APPROVE,
|
|
refType: 'TICKET',
|
|
refIdParam: 'id',
|
|
includeBody: true,
|
|
})
|
|
completeCollab(@CurrentUser() user: AuthUser, @Param('id') id: string) {
|
|
return this.service.completeCollabByHq(BigInt(id), user.actorId.toString());
|
|
}
|
|
}
|
|
|
|
@Controller('partner/tickets')
|
|
@UseGuards(JwtAuthGuard, PartnerPermissionGuard)
|
|
@RequirePartnerPermissions('warehouse:manage', 'order:view')
|
|
export class PartnerTicketsController {
|
|
constructor(private readonly service: AdminTicketsService) {}
|
|
|
|
@Get()
|
|
list(
|
|
@CurrentUser() user: AuthUser,
|
|
@Query('page') page?: string,
|
|
@Query('pageSize') pageSize?: string,
|
|
) {
|
|
return this.service.listPartnerTickets(
|
|
user.actorId,
|
|
page ? Number(page) : 1,
|
|
pageSize ? Number(pageSize) : 20,
|
|
);
|
|
}
|
|
|
|
@Get(':id')
|
|
detail(@CurrentUser() user: AuthUser, @Param('id') id: string) {
|
|
return this.service.getPartnerTicket(user.actorId, BigInt(id));
|
|
}
|
|
|
|
@Post(':id/confirm-pickup')
|
|
@RequirePartnerPermissions('warehouse:manage')
|
|
confirmPickup(@CurrentUser() user: AuthUser, @Param('id') id: string) {
|
|
return this.service.partnerConfirmPickup(user.actorId, BigInt(id));
|
|
}
|
|
|
|
@Post(':id/confirm-reship')
|
|
@RequirePartnerPermissions('warehouse:manage')
|
|
confirmReship(@CurrentUser() user: AuthUser, @Param('id') id: string) {
|
|
return this.service.partnerConfirmReship(user.actorId, BigInt(id));
|
|
}
|
|
}
|