import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm'; import { User } from '../users/user.entity'; import { Route } from '../routes/route.entity'; import { ObjectLiteral } from 'typeorm/common/ObjectLiteral'; export enum OrderStatus { PENDING_PAYMENT = '待支付', WAITING_DEPARTURE = '待出发', IN_PROGRESS = '行程中', COMPLETED = '已完成', CANCELLED = '已取消' } export enum PaymentStatus { PENDING = '待支付', PAID = '已支付', FAILED = '支付失败', REFUNDED = '已退款' } @Entity('orders') export class Order implements ObjectLiteral { @PrimaryGeneratedColumn({ comment: '订单ID' }) id!: number; @Column({ comment: '用户ID' }) userId!: number; @Column({ comment: '路线ID' }) routeId!: number; @Column({ comment: '乘客数量' }) passengerCount!: number; @Column('decimal', { precision: 10, scale: 2, comment: '订单总金额' }) totalAmount!: number; @Column({ type: 'enum', enum: OrderStatus, default: OrderStatus.PENDING_PAYMENT, comment: '订单状态' }) status!: OrderStatus; @Column({ type: 'enum', enum: PaymentStatus, default: PaymentStatus.PENDING, comment: '支付状态' }) paymentStatus!: PaymentStatus; @Column('json', { comment: '乘客信息快照数组(下单时的多个乘客信息)' }) passengerSnapshots!: any[]; @Column('json', { comment: '路线信息快照(下单时的路线信息)' }) routeSnapshot!: any; @Column({ nullable: true, comment: '创建人ID' }) createdBy?: number; @Column({ nullable: true, comment: '更新人ID' }) updatedBy?: number; @CreateDateColumn({ comment: '创建时间' }) createdAt!: Date; @UpdateDateColumn({ comment: '更新时间' }) updatedAt!: Date; @ManyToOne(() => User) @JoinColumn({ name: 'userId' }) user!: User; @ManyToOne(() => Route) @JoinColumn({ name: 'routeId' }) route!: Route; }