|
@@ -2,6 +2,13 @@ import { z } from 'zod';
|
|
|
import { DisabledStatus } from '@/share/types';
|
|
import { DisabledStatus } from '@/share/types';
|
|
|
import { ActivityType } from '../activities/activity.entity';
|
|
import { ActivityType } from '../activities/activity.entity';
|
|
|
|
|
|
|
|
|
|
+// 车型枚举
|
|
|
|
|
+export enum VehicleType {
|
|
|
|
|
+ BUS = 'bus', // 大巴
|
|
|
|
|
+ MINIBUS = 'minibus', // 中巴
|
|
|
|
|
+ CAR = 'car' // 小车
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 路线创建Schema
|
|
// 路线创建Schema
|
|
|
export const createRouteSchema = z.object({
|
|
export const createRouteSchema = z.object({
|
|
|
name: z.string().min(1, '路线名称不能为空').max(255, '路线名称不能超过255个字符'),
|
|
name: z.string().min(1, '路线名称不能为空').max(255, '路线名称不能超过255个字符'),
|
|
@@ -11,7 +18,9 @@ export const createRouteSchema = z.object({
|
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
|
departureTime: z.string().datetime('出发时间格式不正确'),
|
|
departureTime: z.string().datetime('出发时间格式不正确'),
|
|
|
- vehicleType: z.string().min(1, '车型不能为空').max(50, '车型不能超过50个字符'),
|
|
|
|
|
|
|
+ vehicleType: z.nativeEnum(VehicleType, {
|
|
|
|
|
+ message: '车型必须是有效的类型(bus/minibus/car)'
|
|
|
|
|
+ }),
|
|
|
price: z.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
price: z.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|
|
@@ -27,7 +36,9 @@ export const updateRouteSchema = z.object({
|
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符').optional(),
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符').optional(),
|
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符').optional(),
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符').optional(),
|
|
|
departureTime: z.string().datetime('出发时间格式不正确').optional(),
|
|
departureTime: z.string().datetime('出发时间格式不正确').optional(),
|
|
|
- vehicleType: z.string().min(1, '车型不能为空').max(50, '车型不能超过50个字符').optional(),
|
|
|
|
|
|
|
+ vehicleType: z.nativeEnum(VehicleType, {
|
|
|
|
|
+ message: '车型必须是有效的类型(bus/minibus/car)'
|
|
|
|
|
+ }).optional(),
|
|
|
price: z.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99').optional(),
|
|
price: z.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99').optional(),
|
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000').optional(),
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000').optional(),
|
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000').optional(),
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000').optional(),
|
|
@@ -45,7 +56,9 @@ export const getRouteSchema = z.object({
|
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
|
departureTime: z.coerce.date(),
|
|
departureTime: z.coerce.date(),
|
|
|
- vehicleType: z.string().min(1, '车型不能为空').max(50, '车型不能超过50个字符'),
|
|
|
|
|
|
|
+ vehicleType: z.nativeEnum(VehicleType, {
|
|
|
|
|
+ message: '车型必须是有效的类型(bus/minibus/car)'
|
|
|
|
|
+ }),
|
|
|
price: z.coerce.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
price: z.coerce.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|
|
@@ -81,7 +94,9 @@ export const routeListResponseSchema = z.object({
|
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
pickupPoint: z.string().min(1, '上车点不能为空').max(255, '上车点不能超过255个字符'),
|
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
dropoffPoint: z.string().min(1, '下车点不能为空').max(255, '下车点不能超过255个字符'),
|
|
|
departureTime: z.coerce.date(),
|
|
departureTime: z.coerce.date(),
|
|
|
- vehicleType: z.string().min(1, '车型不能为空').max(50, '车型不能超过50个字符'),
|
|
|
|
|
|
|
+ vehicleType: z.nativeEnum(VehicleType, {
|
|
|
|
|
+ message: '车型必须是有效的类型(bus/minibus/car)'
|
|
|
|
|
+ }),
|
|
|
price: z.coerce.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
price: z.coerce.number().min(0, '价格不能为负数').max(99999999.99, '价格不能超过99999999.99'),
|
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
seatCount: z.number().int().min(1, '座位数至少为1').max(1000, '座位数不能超过1000'),
|
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|
|
availableSeats: z.number().int().min(0, '可用座位数不能为负数').max(1000, '可用座位数不能超过1000'),
|