mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-18 15:07:27 +00:00
Implement a new subscription-based billing model alongside existing metered/per-request billing: Backend: - Add subscription plan models (SubscriptionPlan, SubscriptionPlanItem, UserSubscription, etc.) - Implement CRUD APIs for subscription plan management (admin only) - Add user subscription queries with support for multiple active/expired subscriptions - Integrate payment gateways (Stripe, Creem, Epay) for subscription purchases - Implement pre-consume and post-consume billing logic for subscription quota tracking - Add billing preference settings (subscription_first, wallet_first, etc.) - Enhance usage logs with subscription deduction details Frontend - Admin: - Add subscription management page with table view and drawer-based edit form - Match UI/UX style with existing admin pages (redemption codes, users) - Support enabling/disabling plans, configuring payment IDs, and model quotas - Add user subscription binding modal in user management Frontend - Wallet: - Add subscription plans card with current subscription status display - Show all subscriptions (active and expired) with remaining days/usage percentage - Display purchasable plans with pricing cards following SaaS best practices - Extract purchase modal to separate component matching payment confirm modal style - Add skeleton loading states with active animation - Implement billing preference selector in card header - Handle payment gateway availability based on admin configuration Frontend - Usage Logs: - Display subscription deduction details in log entries - Show step-by-step breakdown of subscription usage (pre-consumed, delta, final, remaining) - Add subscription deduction tag for subscription-covered requests
25 lines
1.8 KiB
Go
25 lines
1.8 KiB
Go
package dto
|
|
|
|
type UserSetting struct {
|
|
NotifyType string `json:"notify_type,omitempty"` // QuotaWarningType 额度预警类型
|
|
QuotaWarningThreshold float64 `json:"quota_warning_threshold,omitempty"` // QuotaWarningThreshold 额度预警阈值
|
|
WebhookUrl string `json:"webhook_url,omitempty"` // WebhookUrl webhook地址
|
|
WebhookSecret string `json:"webhook_secret,omitempty"` // WebhookSecret webhook密钥
|
|
NotificationEmail string `json:"notification_email,omitempty"` // NotificationEmail 通知邮箱地址
|
|
BarkUrl string `json:"bark_url,omitempty"` // BarkUrl Bark推送URL
|
|
GotifyUrl string `json:"gotify_url,omitempty"` // GotifyUrl Gotify服务器地址
|
|
GotifyToken string `json:"gotify_token,omitempty"` // GotifyToken Gotify应用令牌
|
|
GotifyPriority int `json:"gotify_priority"` // GotifyPriority Gotify消息优先级
|
|
AcceptUnsetRatioModel bool `json:"accept_unset_model_ratio_model,omitempty"` // AcceptUnsetRatioModel 是否接受未设置价格的模型
|
|
RecordIpLog bool `json:"record_ip_log,omitempty"` // 是否记录请求和错误日志IP
|
|
SidebarModules string `json:"sidebar_modules,omitempty"` // SidebarModules 左侧边栏模块配置
|
|
BillingPreference string `json:"billing_preference,omitempty"` // BillingPreference 扣费策略(订阅/钱包)
|
|
}
|
|
|
|
var (
|
|
NotifyTypeEmail = "email" // Email 邮件
|
|
NotifyTypeWebhook = "webhook" // Webhook
|
|
NotifyTypeBark = "bark" // Bark 推送
|
|
NotifyTypeGotify = "gotify" // Gotify 推送
|
|
)
|