Files
YelayMaths/yelaymaths_api/src/modules/orders/orders.controller.ts
T
2026-09-30 15:08:16 +08:00

40 lines
1.3 KiB
TypeScript

import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { z } from 'zod';
import { CurrentUser, type AuthPrincipal } from '../../common/auth';
import { AppError } from '../../common/errors';
import { OrdersService } from './orders.service';
const createSchema = z.object({
courseCode: z.string().min(1),
quantity: z.coerce.number().int().min(1).max(10).optional(),
/** 下单设备,小程序上报;缺省不影响下单,只是后台看不到渠道 */
terminal: z.string().max(16).optional(),
});
@Controller('v1/orders')
export class OrdersController {
constructor(private readonly orders: OrdersService) {}
@Post()
create(@CurrentUser() user: AuthPrincipal, @Body() body: unknown) {
const parsed = createSchema.safeParse(body);
if (!parsed.success) throw AppError.badRequest('参数错误:缺少 courseCode');
return this.orders.create(
user.id,
parsed.data.courseCode,
parsed.data.quantity ?? 1,
parsed.data.terminal ?? null,
);
}
@Get()
list(@CurrentUser() user: AuthPrincipal) {
return this.orders.list(user.id);
}
@Get(':outTradeNo')
status(@CurrentUser() user: AuthPrincipal, @Param('outTradeNo') outTradeNo: string) {
return this.orders.status(user.id, outTradeNo);
}
}