feat: 增加订单过滤功能,支持按内容ID、支付时间范围和支付金额范围筛选

This commit is contained in:
2025-12-18 16:46:40 +08:00
parent 3249e405ac
commit e268176af5
8 changed files with 418 additions and 37 deletions

View File

@@ -1,6 +1,8 @@
package dto
import (
"time"
"quyun/v2/app/requests"
"quyun/v2/database/models"
"quyun/v2/pkg/consts"
@@ -12,8 +14,18 @@ type AdminOrderListFilter struct {
requests.Pagination `json:",inline" query:",inline"`
// UserID filters orders by buyer user id.
UserID *int64 `json:"user_id,omitempty" query:"user_id"`
// ContentID filters orders by purchased content id (via order_items join).
ContentID *int64 `json:"content_id,omitempty" query:"content_id"`
// Status filters orders by order status.
Status *consts.OrderStatus `json:"status,omitempty" query:"status"`
// PaidAtFrom filters orders by paid_at >= this time.
PaidAtFrom *time.Time `json:"paid_at_from,omitempty" query:"paid_at_from"`
// PaidAtTo filters orders by paid_at <= this time.
PaidAtTo *time.Time `json:"paid_at_to,omitempty" query:"paid_at_to"`
// AmountPaidMin filters orders by amount_paid >= this amount (cents).
AmountPaidMin *int64 `json:"amount_paid_min,omitempty" query:"amount_paid_min"`
// AmountPaidMax filters orders by amount_paid <= this amount (cents).
AmountPaidMax *int64 `json:"amount_paid_max,omitempty" query:"amount_paid_max"`
}
// AdminOrderRefundForm defines payload for tenant-admin to refund an order.

View File

@@ -1,6 +1,8 @@
package dto
import (
"time"
"quyun/v2/app/requests"
"quyun/v2/pkg/consts"
)
@@ -11,4 +13,10 @@ type MyOrderListFilter struct {
requests.Pagination `json:",inline" query:",inline"`
// Status filters orders by order status.
Status *consts.OrderStatus `json:"status,omitempty" query:"status"`
// PaidAtFrom filters orders by paid_at >= this time.
PaidAtFrom *time.Time `json:"paid_at_from,omitempty" query:"paid_at_from"`
// PaidAtTo filters orders by paid_at <= this time.
PaidAtTo *time.Time `json:"paid_at_to,omitempty" query:"paid_at_to"`
// ContentID filters orders by purchased content id (via order_items join).
ContentID *int64 `json:"content_id,omitempty" query:"content_id"`
}