package model import ( "time" ) // 订单状态常量 const ( OrderStatusPending = 1 // 未付款 OrderStatusPaid = 2 // 已付款 OrderStatusPreparing = 3 // 待发货 OrderStatusShipped = 4 // 已发货 OrderStatusReceiving = 5 // 待收货 OrderStatusCompleted = 6 // 已完成 OrderStatusCancelled = 7 // 已取消 OrderStatusReturning = 8 // 退货中 OrderStatusRefunded = 9 // 已退款 ) // Cart 购物车 type Cart struct { ID uint `json:"id" gorm:"primaryKey;autoIncrement"` UserID uint `json:"user_id" gorm:"not null"` ProductID uint `json:"product_id" gorm:"not null"` SKUID *uint `json:"sku_id" gorm:"column:sk_uid"` Quantity int `json:"quantity" gorm:"not null"` Selected bool `json:"selected" gorm:"default:true"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联数据 User User `json:"user,omitempty" gorm:"foreignKey:UserID"` Product Product `json:"product,omitempty" gorm:"foreignKey:ProductID"` SKU ProductSKU `json:"sku,omitempty" gorm:"foreignKey:SKUID"` } // Order 订单 type Order struct { ID uint `json:"id" gorm:"primaryKey;autoIncrement"` OrderNo string `json:"order_no" gorm:"size:32;not null;uniqueIndex"` UserID uint `json:"user_id" gorm:"not null"` StoreID uint `json:"store_id" gorm:"default:1"` TotalAmount float64 `json:"total_amount" gorm:"type:decimal(10,2);not null"` PayAmount float64 `json:"pay_amount" gorm:"type:decimal(10,2);not null"` DiscountAmount float64 `json:"discount_amount" gorm:"type:decimal(10,2);default:0.00"` ShippingFee float64 `json:"shipping_fee" gorm:"type:decimal(10,2);default:0.00"` CouponID *uint `json:"coupon_id"` CouponAmount float64 `json:"coupon_amount" gorm:"type:decimal(10,2);default:0.00"` PointsAmount float64 `json:"points_amount" gorm:"type:decimal(10,2);default:0.00"` Status int `json:"status" gorm:"default:1"` // 统一状态:1未付款,2已付款,3待发货,4已发货,5待收货,6已完成,7已取消,8退货中,9已退款 PayStatus int `json:"pay_status" gorm:"default:0"` // 兼容字段,建议使用Status统一管理 PayMethod string `json:"pay_method" gorm:"size:20"` WechatOutTradeNo string `json:"wechat_out_trade_no" gorm:"size:64;index"` // 微信支付商户订单号,每次支付请求唯一 WechatTransactionID string `json:"wechat_transaction_id" gorm:"size:64;index"` // 微信支付交易号,支付成功后由微信返回 PayTime *time.Time `json:"pay_time"` ShippedAt *time.Time `json:"shipped_at" gorm:"column:shipped_at"` ReceiveTime *time.Time `json:"receive_time"` CancelTime *time.Time `json:"cancel_time"` CancelReason string `json:"cancel_reason" gorm:"size:255"` RefundAmount float64 `json:"refund_amount" gorm:"type:decimal(10,2);default:0.00"` RefundReason string `json:"refund_reason" gorm:"size:255"` RefundTime *time.Time `json:"refund_time"` RefundedAt *time.Time `json:"refunded_at"` ReceiverName string `json:"receiver_name" gorm:"size:50;not null"` ReceiverPhone string `json:"receiver_phone" gorm:"size:20;not null"` ReceiverAddress string `json:"receiver_address" gorm:"size:255;not null"` LogisticsCompany string `json:"logistics_company" gorm:"column:logistics_company;size:50"` LogisticsNo string `json:"logistics_no" gorm:"column:logistics_no;size:100"` Remark string `json:"remark" gorm:"size:255"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联数据 User User `json:"user,omitempty" gorm:"foreignKey:UserID"` Store Store `json:"store,omitempty" gorm:"foreignKey:StoreID"` Coupon Coupon `json:"coupon,omitempty" gorm:"foreignKey:CouponID"` OrderItems []OrderItem `json:"order_items,omitempty" gorm:"foreignKey:OrderID"` } // OrderItem 订单项 type OrderItem struct { ID uint `json:"id" gorm:"primaryKey;autoIncrement"` OrderID uint `json:"order_id" gorm:"not null"` ProductID uint `json:"product_id" gorm:"not null"` SpecID *uint `json:"spec_id" gorm:"column:spec_id"` SKUID *uint `json:"sku_id" gorm:"column:sk_uid"` Quantity int `json:"quantity" gorm:"not null"` Price float64 `json:"price" gorm:"type:decimal(10,2);not null"` TotalPrice float64 `json:"total_price" gorm:"type:decimal(10,2);not null"` ProductName string `json:"product_name" gorm:"size:100;not null"` ProductImage string `json:"product_image" gorm:"size:255"` SpecName string `json:"spec_name" gorm:"column:spec_name"` SpecValue string `json:"spec_value" gorm:"column:spec_value"` SpecInfo JSONMap `json:"spec_info" gorm:"type:json"` IsCommented bool `json:"is_commented" gorm:"default:false"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Order Order `json:"order,omitempty" gorm:"foreignKey:OrderID"` Product Product `json:"product,omitempty" gorm:"foreignKey:ProductID"` SKU ProductSKU `json:"sku,omitempty" gorm:"foreignKey:SKUID"` } // TableName 指定表名 func (Cart) TableName() string { return "ai_carts" } // TableName 指定表名 func (Order) TableName() string { return "ai_orders" } // TableName 指定表名 func (OrderItem) TableName() string { return "order_items" } // GetStatusText 获取订单状态文本 func (o *Order) GetStatusText() string { switch o.Status { case OrderStatusPending: return "未付款" case OrderStatusPaid: return "已付款" case OrderStatusPreparing: return "待发货" case OrderStatusShipped: return "已发货" case OrderStatusReceiving: return "待收货" case OrderStatusCompleted: return "已完成" case OrderStatusCancelled: return "已取消" case OrderStatusReturning: return "退货中" case OrderStatusRefunded: return "已退款" default: return "未知状态" } }