feat(supply-api): 完善domain层和main入口
修改内容: - cmd/supply-api/main.go: 完善HTTP API入口和路由配置 - go.mod: 更新依赖版本 - domain/account.go: 完善账户领域模型 - domain/package.go: 完善套餐领域模型 - domain/settlement.go: 完善结算领域模型 这些是supply-api的核心domain层实现
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"lijiaoqiao/supply-api/internal/audit"
|
||||
@@ -41,18 +42,51 @@ const (
|
||||
|
||||
// 账号
|
||||
type Account struct {
|
||||
ID int64 `json:"account_id"`
|
||||
SupplierID int64 `json:"supplier_id"`
|
||||
Provider Provider `json:"provider"`
|
||||
AccountType AccountType `json:"account_type"`
|
||||
CredentialHash string `json:"-"` // 不暴露
|
||||
Alias string `json:"account_alias,omitempty"`
|
||||
ID int64 `json:"account_id"`
|
||||
SupplierID int64 `json:"supplier_id"`
|
||||
Provider Provider `json:"provider"`
|
||||
AccountType AccountType `json:"account_type"`
|
||||
CredentialHash string `json:"-"` // 不暴露
|
||||
KeyID string `json:"key_id,omitempty"` // 不暴露
|
||||
Alias string `json:"account_alias,omitempty"`
|
||||
Status AccountStatus `json:"status"`
|
||||
AvailableQuota float64 `json:"available_quota,omitempty"`
|
||||
RiskScore int `json:"risk_score,omitempty"`
|
||||
Version int `json:"version"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
RiskLevel string `json:"risk_level"`
|
||||
TotalQuota float64 `json:"total_quota,omitempty"`
|
||||
AvailableQuota float64 `json:"available_quota,omitempty"`
|
||||
FrozenQuota float64 `json:"frozen_quota,omitempty"`
|
||||
IsVerified bool `json:"is_verified"`
|
||||
VerifiedAt *time.Time `json:"verified_at,omitempty"`
|
||||
LastCheckAt *time.Time `json:"last_check_at,omitempty"`
|
||||
TosCompliant bool `json:"tos_compliant"`
|
||||
TosCheckResult string `json:"tos_check_result,omitempty"`
|
||||
TotalRequests int64 `json:"total_requests"`
|
||||
TotalTokens int64 `json:"total_tokens"`
|
||||
TotalCost float64 `json:"total_cost"`
|
||||
SuccessRate float64 `json:"success_rate"`
|
||||
RiskScore int `json:"risk_score"`
|
||||
RiskReason string `json:"risk_reason,omitempty"`
|
||||
IsFrozen bool `json:"is_frozen"`
|
||||
FrozenReason string `json:"frozen_reason,omitempty"`
|
||||
|
||||
// 加密元数据字段 (XR-001)
|
||||
CredentialCipherAlgo string `json:"credential_cipher_algo,omitempty"`
|
||||
CredentialKMSKeyAlias string `json:"credential_kms_key_alias,omitempty"`
|
||||
CredentialKeyVersion int `json:"credential_key_version,omitempty"`
|
||||
CredentialFingerprint string `json:"credential_fingerprint,omitempty"`
|
||||
LastRotationAt *time.Time `json:"last_rotation_at,omitempty"`
|
||||
|
||||
// 单位与币种 (XR-001)
|
||||
QuotaUnit string `json:"quota_unit"`
|
||||
CurrencyCode string `json:"currency_code"`
|
||||
|
||||
// 审计字段 (XR-001)
|
||||
Version int `json:"version"`
|
||||
CreatedIP *netip.Addr `json:"created_ip,omitempty"`
|
||||
UpdatedIP *netip.Addr `json:"updated_ip,omitempty"`
|
||||
AuditTraceID string `json:"audit_trace_id,omitempty"`
|
||||
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// 验证结果
|
||||
|
||||
@@ -3,6 +3,7 @@ package domain
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"lijiaoqiao/supply-api/internal/audit"
|
||||
@@ -21,21 +22,42 @@ const (
|
||||
|
||||
// 套餐
|
||||
type Package struct {
|
||||
ID int64 `json:"package_id"`
|
||||
SupplierID int64 `json:"supply_account_id"`
|
||||
AccountID int64 `json:"account_id,omitempty"`
|
||||
Model string `json:"model"`
|
||||
TotalQuota float64 `json:"total_quota"`
|
||||
AvailableQuota float64 `json:"available_quota"`
|
||||
ID int64 `json:"package_id"`
|
||||
SupplierID int64 `json:"supply_account_id"`
|
||||
AccountID int64 `json:"account_id,omitempty"`
|
||||
Platform string `json:"platform,omitempty"`
|
||||
Model string `json:"model"`
|
||||
TotalQuota float64 `json:"total_quota"`
|
||||
AvailableQuota float64 `json:"available_quota"`
|
||||
SoldQuota float64 `json:"sold_quota"`
|
||||
ReservedQuota float64 `json:"reserved_quota"`
|
||||
PricePer1MInput float64 `json:"price_per_1m_input"`
|
||||
PricePer1MOutput float64 `json:"price_per_1m_output"`
|
||||
MinPurchase float64 `json:"min_purchase,omitempty"`
|
||||
StartAt time.Time `json:"start_at,omitempty"`
|
||||
EndAt time.Time `json:"end_at,omitempty"`
|
||||
ValidDays int `json:"valid_days"`
|
||||
MaxConcurrent int `json:"max_concurrent,omitempty"`
|
||||
RateLimitRPM int `json:"rate_limit_rpm,omitempty"`
|
||||
Status PackageStatus `json:"status"`
|
||||
Version int `json:"version"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
TotalOrders int `json:"total_orders"`
|
||||
TotalRevenue float64 `json:"total_revenue"`
|
||||
Rating float64 `json:"rating"`
|
||||
RatingCount int `json:"rating_count"`
|
||||
|
||||
// 单位与币种 (XR-001)
|
||||
QuotaUnit string `json:"quota_unit"`
|
||||
PriceUnit string `json:"price_unit"`
|
||||
CurrencyCode string `json:"currency_code"`
|
||||
|
||||
// 审计字段 (XR-001)
|
||||
Version int `json:"version"`
|
||||
CreatedIP *netip.Addr `json:"created_ip,omitempty"`
|
||||
UpdatedIP *netip.Addr `json:"updated_ip,omitempty"`
|
||||
AuditTraceID string `json:"audit_trace_id,omitempty"`
|
||||
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// 套餐服务接口
|
||||
|
||||
@@ -3,6 +3,7 @@ package domain
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"lijiaoqiao/supply-api/internal/audit"
|
||||
@@ -29,18 +30,40 @@ const (
|
||||
|
||||
// 结算单
|
||||
type Settlement struct {
|
||||
ID int64 `json:"settlement_id"`
|
||||
SupplierID int64 `json:"supplier_id"`
|
||||
SettlementNo string `json:"settlement_no"`
|
||||
Status SettlementStatus `json:"status"`
|
||||
TotalAmount float64 `json:"total_amount"`
|
||||
FeeAmount float64 `json:"fee_amount"`
|
||||
NetAmount float64 `json:"net_amount"`
|
||||
PaymentMethod PaymentMethod `json:"payment_method"`
|
||||
PaymentAccount string `json:"payment_account,omitempty"`
|
||||
Version int `json:"version"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID int64 `json:"settlement_id"`
|
||||
SupplierID int64 `json:"supplier_id"`
|
||||
SettlementNo string `json:"settlement_no"`
|
||||
Status SettlementStatus `json:"status"`
|
||||
TotalAmount float64 `json:"total_amount"`
|
||||
FeeAmount float64 `json:"fee_amount"`
|
||||
NetAmount float64 `json:"net_amount"`
|
||||
PaymentMethod PaymentMethod `json:"payment_method"`
|
||||
PaymentAccount string `json:"payment_account,omitempty"`
|
||||
PaymentTransactionID string `json:"payment_transaction_id,omitempty"`
|
||||
PaidAt *time.Time `json:"paid_at,omitempty"`
|
||||
|
||||
// 账期 (XR-001)
|
||||
PeriodStart time.Time `json:"period_start"`
|
||||
PeriodEnd time.Time `json:"period_end"`
|
||||
TotalOrders int `json:"total_orders"`
|
||||
TotalUsageRecords int `json:"total_usage_records"`
|
||||
|
||||
// 单位与币种 (XR-001)
|
||||
CurrencyCode string `json:"currency_code"`
|
||||
AmountUnit string `json:"amount_unit"`
|
||||
|
||||
// 幂等字段 (XR-001)
|
||||
RequestID string `json:"request_id,omitempty"`
|
||||
IdempotencyKey string `json:"idempotency_key,omitempty"`
|
||||
|
||||
// 审计字段 (XR-001)
|
||||
AuditTraceID string `json:"audit_trace_id,omitempty"`
|
||||
Version int `json:"version"`
|
||||
CreatedIP *netip.Addr `json:"created_ip,omitempty"`
|
||||
UpdatedIP *netip.Addr `json:"updated_ip,omitempty"`
|
||||
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// 收益记录
|
||||
|
||||
Reference in New Issue
Block a user