excel-export/data/history_order.go

78 lines
1.8 KiB
Go

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
}