order.entity.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
  2. import { User } from '../users/user.entity';
  3. import { Route } from '../routes/route.entity';
  4. import { ObjectLiteral } from 'typeorm/common/ObjectLiteral';
  5. export enum OrderStatus {
  6. PENDING_PAYMENT = '待支付',
  7. WAITING_DEPARTURE = '待出发',
  8. IN_PROGRESS = '行程中',
  9. COMPLETED = '已完成',
  10. CANCELLED = '已取消'
  11. }
  12. export enum PaymentStatus {
  13. PENDING = '待支付',
  14. PAID = '已支付',
  15. FAILED = '支付失败',
  16. REFUNDED = '已退款'
  17. }
  18. @Entity('orders')
  19. export class Order implements ObjectLiteral {
  20. @PrimaryGeneratedColumn({ comment: '订单ID' })
  21. id!: number;
  22. @Column({ comment: '用户ID' })
  23. userId!: number;
  24. @Column({ comment: '路线ID' })
  25. routeId!: number;
  26. @Column({ comment: '乘客数量' })
  27. passengerCount!: number;
  28. @Column('decimal', { precision: 10, scale: 2, comment: '订单总金额' })
  29. totalAmount!: number;
  30. @Column({
  31. type: 'enum',
  32. enum: OrderStatus,
  33. default: OrderStatus.PENDING_PAYMENT,
  34. comment: '订单状态'
  35. })
  36. status!: OrderStatus;
  37. @Column({
  38. type: 'enum',
  39. enum: PaymentStatus,
  40. default: PaymentStatus.PENDING,
  41. comment: '支付状态'
  42. })
  43. paymentStatus!: PaymentStatus;
  44. @Column('json', { comment: '乘客信息快照数组(下单时的多个乘客信息)' })
  45. passengerSnapshots!: any[];
  46. @Column('json', { comment: '路线信息快照(下单时的路线信息)' })
  47. routeSnapshot!: any;
  48. @Column({ nullable: true, comment: '创建人ID' })
  49. createdBy?: number;
  50. @Column({ nullable: true, comment: '更新人ID' })
  51. updatedBy?: number;
  52. @CreateDateColumn({ comment: '创建时间' })
  53. createdAt!: Date;
  54. @UpdateDateColumn({ comment: '更新时间' })
  55. updatedAt!: Date;
  56. @ManyToOne(() => User)
  57. @JoinColumn({ name: 'userId' })
  58. user!: User;
  59. @ManyToOne(() => Route)
  60. @JoinColumn({ name: 'routeId' })
  61. route!: Route;
  62. }