104 lines
3.1 KiB
Go
104 lines
3.1 KiB
Go
package dto
|
||
|
||
import (
|
||
api_entities "tyapi-server/internal/domains/api/entities"
|
||
product_entities "tyapi-server/internal/domains/product/entities"
|
||
|
||
"github.com/shopspring/decimal"
|
||
)
|
||
|
||
// ApiCallValidationResult API调用验证结果
|
||
type ApiCallValidationResult struct {
|
||
UserID string `json:"user_id"`
|
||
ProductID string `json:"product_id"`
|
||
SubscriptionID string `json:"subscription_id"`
|
||
Amount decimal.Decimal `json:"amount"`
|
||
SecretKey string `json:"secret_key"`
|
||
IsValid bool `json:"is_valid"`
|
||
ErrorMessage string `json:"error_message"`
|
||
|
||
// 新增字段
|
||
ContractCode string `json:"contract_code"`
|
||
ApiCall *api_entities.ApiCall `json:"api_call"`
|
||
RequestParams map[string]interface{} `json:"request_params"`
|
||
Product *product_entities.Product `json:"product"`
|
||
Subscription *product_entities.Subscription `json:"subscription"`
|
||
}
|
||
|
||
// GetUserID 获取用户ID
|
||
func (r *ApiCallValidationResult) GetUserID() string {
|
||
return r.UserID
|
||
}
|
||
|
||
// GetProductID 获取产品ID
|
||
func (r *ApiCallValidationResult) GetProductID() string {
|
||
return r.ProductID
|
||
}
|
||
|
||
// GetSubscriptionID 获取订阅ID
|
||
func (r *ApiCallValidationResult) GetSubscriptionID() string {
|
||
return r.SubscriptionID
|
||
}
|
||
|
||
// GetAmount 获取金额
|
||
func (r *ApiCallValidationResult) GetAmount() decimal.Decimal {
|
||
return r.Amount
|
||
}
|
||
|
||
// GetSecretKey 获取密钥
|
||
func (r *ApiCallValidationResult) GetSecretKey() string {
|
||
return r.SecretKey
|
||
}
|
||
|
||
// IsValidResult 检查是否有效
|
||
func (r *ApiCallValidationResult) IsValidResult() bool {
|
||
return r.IsValid
|
||
}
|
||
|
||
// GetErrorMessage 获取错误消息
|
||
func (r *ApiCallValidationResult) GetErrorMessage() string {
|
||
return r.ErrorMessage
|
||
}
|
||
|
||
// NewApiCallValidationResult 创建新的API调用验证结果
|
||
func NewApiCallValidationResult() *ApiCallValidationResult {
|
||
return &ApiCallValidationResult{
|
||
IsValid: true,
|
||
RequestParams: make(map[string]interface{}),
|
||
}
|
||
}
|
||
|
||
// SetApiUser 设置API用户
|
||
func (r *ApiCallValidationResult) SetApiUser(apiUser *api_entities.ApiUser) {
|
||
r.UserID = apiUser.UserId
|
||
r.SecretKey = apiUser.SecretKey
|
||
}
|
||
|
||
// SetProduct 设置产品
|
||
func (r *ApiCallValidationResult) SetProduct(product *product_entities.Product) {
|
||
r.ProductID = product.ID
|
||
r.Product = product
|
||
// 注意:这里不设置Amount,应该通过SetSubscription来设置实际的扣费金额
|
||
}
|
||
|
||
// SetApiCall 设置API调用
|
||
func (r *ApiCallValidationResult) SetApiCall(apiCall *api_entities.ApiCall) {
|
||
r.ApiCall = apiCall
|
||
}
|
||
|
||
// SetRequestParams 设置请求参数
|
||
func (r *ApiCallValidationResult) SetRequestParams(params map[string]interface{}) {
|
||
r.RequestParams = params
|
||
}
|
||
|
||
// SetContractCode 设置合同代码
|
||
func (r *ApiCallValidationResult) SetContractCode(code string) {
|
||
r.ContractCode = code
|
||
}
|
||
|
||
// SetSubscription 设置订阅信息(包含实际扣费金额)
|
||
func (r *ApiCallValidationResult) SetSubscription(subscription *product_entities.Subscription) {
|
||
r.SubscriptionID = subscription.ID
|
||
r.Amount = subscription.Price // 使用订阅价格作为扣费金额
|
||
r.Subscription = subscription
|
||
} |