import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, ManyToOne, JoinColumn, } from 'typeorm'; import { Order } from './order.entity'; export enum PayType { WECHAT = 'wechat', ALIPAY = 'alipay', } export enum PaymentStatus { PENDING = 'pending', SUCCESS = 'success', FAILED = 'failed', } @Entity('payments') export class Payment { @PrimaryGeneratedColumn() id: number; @Column({ name: 'order_id' }) orderId: number; @Column({ type: 'varchar', length: 64, nullable: true, name: 'payment_no' }) paymentNo: string; @Column({ type: 'varchar', name: 'pay_type' }) payType: PayType; @Column({ type: 'decimal', precision: 10, scale: 2 }) amount: number; @Column({ type: 'varchar', default: PaymentStatus.PENDING }) status: PaymentStatus; @Column({ type: 'simple-json', nullable: true, name: 'callback_data' }) callbackData: any; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @Column({ type: 'datetime', nullable: true, name: 'completed_at' }) completedAt: Date; @ManyToOne(() => Order, (order) => order.payments) @JoinColumn({ name: 'order_id' }) order: Order; }