|
@@ -38,14 +38,24 @@ const searchRoutesSchema = z.object({
|
|
|
example: 500,
|
|
example: 500,
|
|
|
description: '最高价格'
|
|
description: '最高价格'
|
|
|
}),
|
|
}),
|
|
|
- vehicleType: z.string().optional().openapi({
|
|
|
|
|
- example: 'bus',
|
|
|
|
|
- description: '车型,支持逗号分隔的多个值,如:bus,business'
|
|
|
|
|
- }),
|
|
|
|
|
- travelMode: z.string().optional().openapi({
|
|
|
|
|
- example: 'carpool',
|
|
|
|
|
- description: '出行方式,支持逗号分隔的多个值,如:carpool,charter'
|
|
|
|
|
- }),
|
|
|
|
|
|
|
+ vehicleType: z.string().optional()
|
|
|
|
|
+ .refine(
|
|
|
|
|
+ (val) => !val || val.split(',').every(type => Object.values(VehicleType).includes(type as VehicleType)),
|
|
|
|
|
+ { message: '车型必须是有效的类型(bus/minibus/car/business)' }
|
|
|
|
|
+ )
|
|
|
|
|
+ .openapi({
|
|
|
|
|
+ example: 'bus',
|
|
|
|
|
+ description: '车型,支持逗号分隔的多个值,如:bus,business'
|
|
|
|
|
+ }),
|
|
|
|
|
+ travelMode: z.string().optional()
|
|
|
|
|
+ .refine(
|
|
|
|
|
+ (val) => !val || val.split(',').every(mode => Object.values(TravelMode).includes(mode as TravelMode)),
|
|
|
|
|
+ { message: '出行方式必须是有效的类型(carpool/charter)' }
|
|
|
|
|
+ )
|
|
|
|
|
+ .openapi({
|
|
|
|
|
+ example: 'carpool',
|
|
|
|
|
+ description: '出行方式,支持逗号分隔的多个值,如:carpool,charter'
|
|
|
|
|
+ }),
|
|
|
sortBy: z.enum(['price', 'departureTime']).default('departureTime').openapi({
|
|
sortBy: z.enum(['price', 'departureTime']).default('departureTime').openapi({
|
|
|
example: 'departureTime',
|
|
example: 'departureTime',
|
|
|
description: '排序字段'
|
|
description: '排序字段'
|