78 lines
1.8 KiB
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
|
|
}
|