order.entity.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
  2. import { UserEntity as User } from '@d8d/user-module';
  3. import { Merchant } from '@d8d/merchant-module';
  4. import { Supplier } from '@d8d/supplier-module';
  5. import { DeliveryAddress } from '@d8d/delivery-address-module';
  6. @Entity('orders')
  7. export class Order {
  8. @PrimaryGeneratedColumn({ unsigned: true })
  9. id!: number;
  10. @Column({ name: 'order_no', type: 'varchar', length: 50, unique: true, comment: '订单号' })
  11. orderNo!: string;
  12. @Column({ name: 'user_id', type: 'int', unsigned: true, comment: '用户ID' })
  13. userId!: number;
  14. @Column({ name: 'auth_code', type: 'varchar', length: 32, nullable: true, comment: '付款码' })
  15. authCode!: string | null;
  16. @Column({ name: 'card_no', type: 'varchar', length: 32, nullable: true, comment: '卡号' })
  17. cardNo!: string | null;
  18. @Column({ name: 'sjt_card_no', type: 'varchar', length: 32, nullable: true, comment: '盛京通卡号' })
  19. sjtCardNo!: string | null;
  20. @Column({ name: 'amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '订单金额' })
  21. amount!: number;
  22. @Column({ name: 'cost_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '成本金额' })
  23. costAmount!: number;
  24. @Column({ name: 'freight_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '运费' })
  25. freightAmount!: number;
  26. @Column({ name: 'discount_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '优惠金额' })
  27. discountAmount!: number;
  28. @Column({ name: 'pay_amount', type: 'decimal', precision: 10, scale: 2, default: 0.00, comment: '实际支付金额' })
  29. payAmount!: number;
  30. @Column({ name: 'device_no', type: 'varchar', length: 255, nullable: true, comment: '设备编号' })
  31. deviceNo!: string | null;
  32. @Column({ name: 'description', type: 'varchar', length: 255, nullable: true, comment: '订单描述' })
  33. description!: string | null;
  34. @Column({ name: 'goods_detail', type: 'varchar', length: 2000, nullable: true, comment: '订单详情 json' })
  35. goodsDetail!: string | null;
  36. @Column({ name: 'goods_tag', type: 'varchar', length: 255, nullable: true, comment: '订单优惠标记' })
  37. goodsTag!: string | null;
  38. @Column({ name: 'address', type: 'varchar', length: 255, nullable: true, comment: '地址' })
  39. address!: string | null;
  40. @Column({ name: 'order_type', type: 'int', default: 1, comment: '订单类型 1实物订单 2虚拟订单' })
  41. orderType!: number;
  42. @Column({ name: 'pay_type', type: 'int', default: 0, comment: '支付类型1积分2礼券' })
  43. payType!: number;
  44. @Column({ name: 'pay_state', type: 'int', default: 0, comment: '0未支付1支付中2支付成功3已退款4支付失败5订单关闭' })
  45. payState!: number;
  46. @Column({ name: 'state', type: 'int', default: 0, comment: '订单状态0未发货1已发货2收货成功3已退货' })
  47. state!: number;
  48. @Column({ name: 'user_phone', type: 'varchar', length: 50, nullable: true, comment: '用户手机号' })
  49. userPhone!: string | null;
  50. @Column({ name: 'merchant_id', type: 'int', unsigned: true, default: 0, comment: '商户id' })
  51. merchantId!: number;
  52. @Column({ name: 'merchant_no', type: 'int', unsigned: true, nullable: true, comment: '商户号' })
  53. merchantNo!: number | null;
  54. @Column({ name: 'supplier_id', type: 'int', unsigned: true, default: 0, comment: '供货商id' })
  55. supplierId!: number;
  56. @Column({ name: 'address_id', type: 'int', unsigned: true, default: 0, comment: '地址id' })
  57. addressId!: number;
  58. @Column({ name: 'receiver_mobile', type: 'varchar', length: 255, nullable: true, comment: '收货人手机号' })
  59. receiverMobile!: string | null;
  60. @Column({ name: 'recevier_name', type: 'varchar', length: 255, nullable: true, comment: '收货人姓名' })
  61. recevierName!: string | null;
  62. @Column({ name: 'recevier_province', type: 'bigint', default: 0, comment: '收货人所在省' })
  63. recevierProvince!: number;
  64. @Column({ name: 'recevier_city', type: 'bigint', default: 0, comment: '收货人所在市' })
  65. recevierCity!: number;
  66. @Column({ name: 'recevier_district', type: 'bigint', default: 0, comment: '收货人所在区' })
  67. recevierDistrict!: number;
  68. @Column({ name: 'recevier_town', type: 'bigint', default: 0, comment: '收货人所在街道' })
  69. recevierTown!: number;
  70. @Column({ name: 'refund_time', type: 'timestamp', nullable: true, comment: '退款时间' })
  71. refundTime!: Date | null;
  72. @Column({ name: 'close_time', type: 'timestamp', nullable: true, comment: '订单关闭时间' })
  73. closeTime!: Date | null;
  74. @Column({ name: 'remark', type: 'varchar', length: 255, nullable: true, comment: '管理员备注信息' })
  75. remark!: string | null;
  76. @Column({ name: 'created_by', type: 'int', unsigned: true, nullable: true, comment: '创建人ID' })
  77. createdBy!: number | null;
  78. @Column({ name: 'updated_by', type: 'int', unsigned: true, nullable: true, comment: '更新人ID' })
  79. updatedBy!: number | null;
  80. @CreateDateColumn({ name: 'created_at', type: 'timestamp' })
  81. createdAt!: Date;
  82. @UpdateDateColumn({ name: 'updated_at', type: 'timestamp' })
  83. updatedAt!: Date;
  84. // 关联关系
  85. @ManyToOne(() => User)
  86. @JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
  87. user!: User;
  88. @ManyToOne(() => Merchant)
  89. @JoinColumn({ name: 'merchant_id', referencedColumnName: 'id' })
  90. merchant!: Merchant;
  91. @ManyToOne(() => Supplier)
  92. @JoinColumn({ name: 'supplier_id', referencedColumnName: 'id' })
  93. supplier!: Supplier;
  94. @ManyToOne(() => DeliveryAddress)
  95. @JoinColumn({ name: 'address_id', referencedColumnName: 'id' })
  96. deliveryAddress!: DeliveryAddress;
  97. }