API/src/entity/order_sale.entity.ts

122 lines
2.4 KiB
TypeScript

import { ApiProperty } from '@midwayjs/swagger';
import { Exclude, Expose } from 'class-transformer';
import {
// BeforeInsert,
// BeforeUpdate,
Column,
CreateDateColumn,
Entity,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
// import { Product } from './product.entity';
@Entity('order_sale')
@Exclude()
export class OrderSale {
// @ManyToOne(() => Product, { onDelete: 'CASCADE' })
// @JoinColumn({ name: 'productId' })
// product: Product;
@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; // 其实是 strength
@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;
// }
}