package data import ( "context" "gorm.io/gorm" "time" ) type HistoryOrderItem struct { OrderNumber string `gorm:"primaryKey;column:order_order_number"` OursProductId int OursProductTitle string } func (o HistoryOrderItem) TableName() string { return "history_order_item" } type HistoryOrderRemark struct { OrderNumber string `gorm:"primaryKey;column:order_number"` Remark string } func (o HistoryOrderRemark) TableName() string { return "history_order_remark" } type HistoryOrder struct { OrderNumber string `gorm:"primaryKey;column:order_number"` ResellerId int64 ResellerOrderNumber string Amount float32 Account string Quantity int Status int PayStatus int CreateTime time.Time FinishTime time.Time Item HistoryOrderItem `gorm:"foreignkey:order_order_number;references:order_number"` Remark HistoryOrderRemark `gorm:"foreignkey:order_number;references:order_number"` Reseller Reseller `gorm:"foreignkey:id;references:reseller_id"` } func (o HistoryOrder) TableName() string { return "history_order" } type HistoryOrderRepo struct { db *gorm.DB } func NewHistoryOrderRepo(db *gorm.DB) *HistoryOrderRepo { return &HistoryOrderRepo{ db: db, } } func (repo HistoryOrderRepo) List(ctx context.Context, begin, end time.Time, limit int, last string) ([]HistoryOrder, error) { var orders []HistoryOrder db := repo.db.WithContext(ctx). Preload("Reseller"). Preload("Item"). Preload("Remark"). Where("create_time BETWEEN ? AND ?", begin, end) if last != "" { db.Where("order_number > ?", last) } result := db.Order("create_time,order_number"). Limit(limit). Find(&orders) if result.Error != nil { return nil, result.Error } return orders, nil }