import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm'; import { User } from './user.entity'; import { Service } from './service.entity'; @Entity('bookings') export class Booking { @PrimaryGeneratedColumn() id: number; @Column({ length: 32, unique: true }) bookingNumber: string; // 预约编号 @ManyToOne(() => User, { nullable: true }) @JoinColumn({ name: 'customerId' }) customer: User; @Column({ nullable: true }) customerId: number; @ManyToOne(() => Service) @JoinColumn({ name: 'serviceId' }) service: Service; @Column() serviceId: number; @Column({ length: 50 }) contactName: string; @Column({ length: 20 }) contactPhone: string; @Column({ type: 'text' }) address: string; @Column({ type: 'datetime' }) appointmentTime: Date; @Column({ type: 'text', nullable: true }) requirements: string; // 特殊要求 @Column({ type: 'json', nullable: true }) images: string[]; // 沙发现状图片 @Column({ type: 'enum', enum: ['pending', 'confirmed', 'in_progress', 'completed', 'cancelled'], default: 'pending' }) status: string; @Column({ type: 'decimal', precision: 10, scale: 2, nullable: true }) quotedPrice: number; // 报价 @Column({ type: 'decimal', precision: 10, scale: 2, nullable: true }) finalPrice: number; // 最终价格 @Column({ type: 'text', nullable: true }) notes: string; // 备注 @ManyToOne(() => User, { nullable: true }) @JoinColumn({ name: 'assignedWorkerId' }) assignedWorker: User; @Column({ nullable: true }) assignedWorkerId: number; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; }