Initial commit
This commit is contained in:
146
server/internal/model/order.go
Normal file
146
server/internal/model/order.go
Normal file
@@ -0,0 +1,146 @@
|
||||
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 "未知状态"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user