import { ApiProperty } from '@midwayjs/swagger'; import { Exclude, Expose } from 'class-transformer'; import { BeforeInsert, BeforeUpdate, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; @Entity('order_sale') @Exclude() export class OrderSale { @ApiProperty() @PrimaryGeneratedColumn() @Expose() id?: number; @ApiProperty() @Column() @Expose() orderId: number; // 订单 ID @ApiProperty() @Column({ nullable: true }) @Expose() siteId: number; // 来源站点唯一标识 @ApiProperty() @Column({ nullable: true }) @Expose() externalOrderItemId: string; // WooCommerce 订单item ID @ApiProperty() @Column() @Expose() productId: number; @ApiProperty() @Column() @Expose() name: string; @ApiProperty({ description: 'sku', type: 'string' }) @Expose() @Column() sku: string; @ApiProperty() @Column() @Expose() quantity: number; @ApiProperty() @Column({ default: false }) @Expose() isPackage: boolean; @ApiProperty() @Column({ default: false }) @Expose() isYoone: boolean; @ApiProperty() @Column({ default: false }) @Expose() isZex: boolean; @ApiProperty({ nullable: true }) @Column({ type: 'int', nullable: true }) @Expose() size: number | null; @ApiProperty() @Column({ default: false }) @Expose() isYooneNew: boolean; @ApiProperty({ example: '2022-12-12 11:11:11', description: '创建时间', }) @CreateDateColumn() @Expose() createdAt?: Date; @ApiProperty({ example: '2022-12-12 11:11:11', description: '更新时间', }) @UpdateDateColumn() @Expose() updatedAt?: Date; // === 自动计算逻辑 === @BeforeInsert() @BeforeUpdate() setFlags() { if (!this.name) return; const lower = this.name.toLowerCase(); this.isYoone = lower.includes('yoone'); this.isZex = lower.includes('zex'); this.isYooneNew = this.isYoone && lower.includes('new'); let size: number | null = null; const sizes = [3, 6, 9, 12, 15, 18]; for (const s of sizes) { if (lower.includes(s.toString())) { size = s; break; } } this.size = size; } }