import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, Index } from 'typeorm'; import { UserEntityMt } from '@d8d/user-module-mt'; import { MerchantMt } from '@d8d/merchant-module-mt'; import { SupplierMt } from '@d8d/supplier-module-mt'; import { DeliveryAddressMt } from '@d8d/delivery-address-module-mt'; @Entity('orders_mt') @Index(['tenantId']) @Index(['tenantId', 'id']) @Index(['tenantId', 'userId']) @Index(['tenantId', 'merchantId']) @Index(['tenantId', 'supplierId']) @Index(['tenantId', 'addressId']) export class OrderMt { @PrimaryGeneratedColumn({ unsigned: true }) id!: number; @Column({ name: 'tenant_id', type: 'int', unsigned: true, comment: '租户ID' }) tenantId!: number; @Column({ name: 'order_no', type: 'varchar', length: 50, unique: true, comment: '订单号' }) orderNo!: string; @Column({ name: 'user_id', type: 'int', unsigned: true, comment: '用户ID' }) userId!: number; @Column({ name: 'auth_code', type: 'varchar', length: 32, nullable: true, comment: '付款码' }) authCode!: string | null; @Column({ name: 'card_no', type: 'varchar', length: 32, nullable: true, comment: '卡号' }) cardNo!: string | null; @Column({ name: 'sjt_card_no', type: 'varchar', length: 32, nullable: true, comment: '盛京通卡号' }) sjtCardNo!: string | null; @Column({ name: 'amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '订单金额' }) amount!: number; @Column({ name: 'cost_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '成本金额' }) costAmount!: number; @Column({ name: 'freight_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '运费' }) freightAmount!: number; @Column({ name: 'discount_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '优惠金额' }) discountAmount!: number; @Column({ name: 'pay_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '实际支付金额' }) payAmount!: number; @Column({ name: 'device_no', type: 'varchar', length: 255, nullable: true, comment: '设备编号' }) deviceNo!: string | null; @Column({ name: 'description', type: 'varchar', length: 255, nullable: true, comment: '订单描述' }) description!: string | null; @Column({ name: 'goods_detail', type: 'varchar', length: 2000, nullable: true, comment: '订单详情 json' }) goodsDetail!: string | null; @Column({ name: 'goods_tag', type: 'varchar', length: 255, nullable: true, comment: '订单优惠标记' }) goodsTag!: string | null; @Column({ name: 'address', type: 'varchar', length: 255, nullable: true, comment: '地址' }) address!: string | null; @Column({ name: 'order_type', type: 'int', default: 1, comment: '订单类型 1实物订单 2虚拟订单' }) orderType!: number; @Column({ name: 'pay_type', type: 'int', default: 0, comment: '支付类型1积分2礼券' }) payType!: number; @Column({ name: 'pay_state', type: 'int', default: 0, comment: '0未支付1支付中2支付成功3已退款4支付失败5订单关闭' }) payState!: number; @Column({ name: 'state', type: 'int', default: 0, comment: '订单状态0未发货1已发货2收货成功3已退货' }) state!: number; @Column({ name: 'user_phone', type: 'varchar', length: 50, nullable: true, comment: '用户手机号' }) userPhone!: string | null; @Column({ name: 'merchant_id', type: 'int', unsigned: true, default: 0, comment: '商户id' }) merchantId!: number; @Column({ name: 'merchant_no', type: 'int', unsigned: true, nullable: true, comment: '商户号' }) merchantNo!: number | null; @Column({ name: 'supplier_id', type: 'int', unsigned: true, default: 0, comment: '供货商id' }) supplierId!: number; @Column({ name: 'address_id', type: 'int', unsigned: true, default: 0, comment: '地址id' }) addressId!: number; @Column({ name: 'receiver_mobile', type: 'varchar', length: 255, nullable: true, comment: '收货人手机号' }) receiverMobile!: string | null; @Column({ name: 'recevier_name', type: 'varchar', length: 255, nullable: true, comment: '收货人姓名' }) recevierName!: string | null; @Column({ name: 'recevier_province', type: 'bigint', default: 0, comment: '收货人所在省' }) recevierProvince!: number; @Column({ name: 'recevier_city', type: 'bigint', default: 0, comment: '收货人所在市' }) recevierCity!: number; @Column({ name: 'recevier_district', type: 'bigint', default: 0, comment: '收货人所在区' }) recevierDistrict!: number; @Column({ name: 'recevier_town', type: 'bigint', default: 0, comment: '收货人所在街道' }) recevierTown!: number; @Column({ name: 'refund_time', type: 'timestamp', nullable: true, comment: '退款时间' }) refundTime!: Date | null; @Column({ name: 'close_time', type: 'timestamp', nullable: true, comment: '订单关闭时间' }) closeTime!: Date | null; @Column({ name: 'remark', type: 'varchar', length: 255, nullable: true, comment: '管理员备注信息' }) remark!: 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; // 关联关系 @ManyToOne(() => UserEntityMt) @JoinColumn({ name: 'user_id', referencedColumnName: 'id' }) user!: UserEntityMt; @ManyToOne(() => MerchantMt) @JoinColumn({ name: 'merchant_id', referencedColumnName: 'id' }) merchant!: MerchantMt; @ManyToOne(() => SupplierMt) @JoinColumn({ name: 'supplier_id', referencedColumnName: 'id' }) supplier!: SupplierMt; @ManyToOne(() => DeliveryAddressMt) @JoinColumn({ name: 'address_id', referencedColumnName: 'id' }) deliveryAddress!: DeliveryAddressMt; }