package dto

import "quyun/v2/database/models"

// PurchaseContentForm defines the request body for purchasing a content using tenant balance.
type PurchaseContentForm struct {
	// IdempotencyKey is used to ensure the purchase request is processed at most once.
	// 建议由客户端生成并保持稳定：同一笔购买重复请求时返回相同结果，避免重复扣款/重复下单。
	IdempotencyKey string `json:"idempotency_key,omitempty"`
}

// PurchaseContentResponse returns the order and granted access after a purchase.
type PurchaseContentResponse struct {
	// Order is the created or existing order record (may be nil for owner/free-path without order).
	Order *models.Order `json:"order,omitempty"`
	// Item is the single order item of this purchase (current implementation is 1 order -> 1 content).
	Item *models.OrderItem `json:"item,omitempty"`
	// Access is the content access record after purchase grant.
	Access *models.ContentAccess `json:"access,omitempty"`
	// AmountPaid is the final paid amount in cents (CNY 分).
	AmountPaid int64 `json:"amount_paid,omitempty"`
}
