49 lines
2.1 KiB
Go
49 lines
2.1 KiB
Go
package dto
|
||
|
||
import (
|
||
"time"
|
||
|
||
"quyun/v2/app/requests"
|
||
"quyun/v2/database/models"
|
||
"quyun/v2/pkg/consts"
|
||
)
|
||
|
||
// AdminOrderListFilter defines query filters for tenant-admin order listing.
|
||
type AdminOrderListFilter struct {
|
||
// Pagination controls paging parameters (page/limit).
|
||
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.
|
||
type AdminOrderRefundForm struct {
|
||
// Force indicates bypassing the default refund window check (paid_at + 24h).
|
||
// 强制退款:true 表示绕过默认退款时间窗限制(需审计)。
|
||
Force bool `json:"force,omitempty"`
|
||
// Reason is the human-readable refund reason used for audit.
|
||
// 退款原因:建议必填(由业务侧校验);用于审计与追责。
|
||
Reason string `json:"reason,omitempty"`
|
||
// IdempotencyKey ensures refund request is processed at most once.
|
||
// 幂等键:同一笔退款重复请求时返回一致结果,避免重复退款/重复回滚。
|
||
IdempotencyKey string `json:"idempotency_key,omitempty"`
|
||
}
|
||
|
||
// AdminOrderDetail returns a tenant-admin order detail payload.
|
||
type AdminOrderDetail struct {
|
||
// Order is the order with items preloaded.
|
||
Order *models.Order `json:"order,omitempty"`
|
||
}
|