import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm'; import { File } from '@/server/modules/files/file.entity'; @Entity('advertisements') export class Advertisement { @PrimaryGeneratedColumn({ unsigned: true }) id!: number; @Column({ name: 'position_id', type: 'int', unsigned: true, comment: '广告位ID' }) positionId!: number; @Column({ name: 'link_url', type: 'text', comment: '链接地址' }) linkUrl!: string; @Column({ name: 'image_file_id', type: 'int', unsigned: true, nullable: true, comment: '图片文件ID' }) imageFileId!: number | null; @ManyToOne(() => File, { nullable: true }) @JoinColumn({ name: 'image_file_id', referencedColumnName: 'id' }) imageFile!: File | null; @Column({ name: 'title', type: 'varchar', length: 255, comment: '广告标题' }) title!: string; @Column({ name: 'sort_order', type: 'int', default: 0, comment: '排序值' }) sortOrder!: number; @Column({ name: 'is_enabled', type: 'tinyint', default: 1, comment: '是否启用:0-禁用,1-启用' }) isEnabled!: number; @Column({ name: 'is_deleted', type: 'tinyint', default: 0, comment: '是否删除:0-未删除,1-已删除' }) isDeleted!: number; @Column({ name: 'start_time', type: 'timestamp', nullable: true, comment: '开始时间' }) startTime!: Date | null; @Column({ name: 'end_time', type: 'timestamp', nullable: true, comment: '结束时间' }) endTime!: Date | null; @Column({ name: 'description', type: 'text', nullable: true, comment: '广告描述' }) description!: string | null; @Column({ name: 'created_by', type: 'int', unsigned: true, nullable: true, comment: '创建用户ID' }) createdBy!: number | null; @Column({ name: 'updated_by', type: 'int', unsigned: true, nullable: true, comment: '更新用户ID' }) updatedBy!: number | null; @CreateDateColumn({ name: 'created_at', type: 'timestamp' }) createdAt!: Date; @UpdateDateColumn({ name: 'updated_at', type: 'timestamp' }) updatedAt!: Date; }