Files
quyun-v2/backend/pkg/consts/consts.go
Rogee 2cc823d3a8 feat: Introduce MediaAssetVariant for better asset management
- Added MediaAssetVariant enum with values 'main' and 'preview'.
- Updated media asset service logic to utilize MediaAssetVariant for variant handling.
- Refactored database models and queries to include variant and source_asset_id fields.
- Enhanced validation for asset variants in upload and processing functions.
- Updated Swagger documentation to reflect new variant structure and descriptions.
- Implemented necessary database migrations to support the new variant constraints.
2025-12-22 19:27:31 +08:00

495 lines
12 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package consts
import (
"time"
"quyun/v2/app/requests"
)
// Format
//
// // swagger:enum CacheKey
// // ENUM(
// // VerifyCode = "code:__CHANNEL__:%s",
// // )
// swagger:enum Role
// ENUM( user, super_admin)
type Role string
// Description returns the Chinese label for the specific enum value.
func (t Role) Description() string {
switch t {
case RoleUser:
return "用户"
case RoleSuperAdmin:
return "超级管理员"
default:
return "未知角色"
}
}
// RoleItems returns the KV list for FE dropdowns.
func RoleItems() []requests.KV {
values := RoleValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum UserStatus
// ENUM(pending_verify, verified, banned, )
type UserStatus string
// Description returns the Chinese label for the specific enum value.
func (t UserStatus) Description() string {
switch t {
case UserStatusPendingVerify:
return "待审核"
case UserStatusVerified:
return "已审核"
case UserStatusBanned:
return "已封禁"
default:
return "未知状态"
}
}
// UserStatusItems returns the KV list for FE dropdowns.
func UserStatusItems() []requests.KV {
values := UserStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// tenants
// swagger:enum TenantStatus
// ENUM( pending_verify, verified, banned )
type TenantStatus string
// Description returns the Chinese label for the specific enum value.
func (t TenantStatus) Description() string {
switch t {
case TenantStatusPendingVerify:
return "待审核"
case TenantStatusVerified:
return "已审核"
case TenantStatusBanned:
return "已封禁"
default:
return "未知状态"
}
}
// TenantStatusItems returns the KV list for FE dropdowns.
func TenantStatusItems() []requests.KV {
values := TenantStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum TenantUserRole
// ENUM( member, tenant_admin)
type TenantUserRole string
// Description returns the Chinese label for the specific enum value.
func (t TenantUserRole) Description() string {
switch t {
case TenantUserRoleMember:
return "成员"
case TenantUserRoleTenantAdmin:
return "租户管理员"
default:
return "未知角色"
}
}
// TenantUserRoleItems returns the KV list for FE dropdowns.
func TenantUserRoleItems() []requests.KV {
values := TenantUserRoleValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// media_assets
// swagger:enum MediaAssetType
// ENUM( video, audio, image )
type MediaAssetType string
// Description returns the Chinese label for the specific enum value.
func (t MediaAssetType) Description() string {
switch t {
case MediaAssetTypeVideo:
return "视频"
case MediaAssetTypeAudio:
return "音频"
case MediaAssetTypeImage:
return "图片"
default:
return "未知类型"
}
}
// MediaAssetTypeItems returns the KV list for FE dropdowns.
func MediaAssetTypeItems() []requests.KV {
values := MediaAssetTypeValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum MediaAssetStatus
// ENUM( uploaded, processing, ready, failed, deleted )
type MediaAssetStatus string
// Description returns the Chinese label for the specific enum value.
func (t MediaAssetStatus) Description() string {
switch t {
case MediaAssetStatusUploaded:
return "已上传"
case MediaAssetStatusProcessing:
return "处理中"
case MediaAssetStatusReady:
return "就绪"
case MediaAssetStatusFailed:
return "失败"
case MediaAssetStatusDeleted:
return "已删除"
default:
return "未知状态"
}
}
// MediaAssetStatusItems returns the KV list for FE dropdowns.
func MediaAssetStatusItems() []requests.KV {
values := MediaAssetStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum MediaAssetVariant
// ENUM( main, preview )
type MediaAssetVariant string
// Description returns the Chinese label for the specific enum value.
func (t MediaAssetVariant) Description() string {
switch t {
case MediaAssetVariantMain:
return "正片产物"
case MediaAssetVariantPreview:
return "试看产物"
default:
return "未知产物"
}
}
// MediaAssetVariantItems returns the KV list for FE dropdowns.
func MediaAssetVariantItems() []requests.KV {
values := MediaAssetVariantValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// contents
// swagger:enum ContentStatus
// ENUM( draft, reviewing, published, unpublished, blocked )
type ContentStatus string
// Description returns the Chinese label for the specific enum value.
func (t ContentStatus) Description() string {
switch t {
case ContentStatusDraft:
return "草稿"
case ContentStatusReviewing:
return "审核中"
case ContentStatusPublished:
return "已发布"
case ContentStatusUnpublished:
return "已下架"
case ContentStatusBlocked:
return "已封禁"
default:
return "未知状态"
}
}
// ContentStatusItems returns the KV list for FE dropdowns.
func ContentStatusItems() []requests.KV {
values := ContentStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum ContentVisibility
// ENUM( public, tenant_only, private )
type ContentVisibility string
// Description returns the Chinese label for the specific enum value.
func (t ContentVisibility) Description() string {
switch t {
case ContentVisibilityPublic:
return "公开"
case ContentVisibilityTenantOnly:
return "租户可见"
case ContentVisibilityPrivate:
return "仅自己"
default:
return "未知"
}
}
// ContentVisibilityItems returns the KV list for FE dropdowns.
func ContentVisibilityItems() []requests.KV {
values := ContentVisibilityValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum ContentAssetRole
// ENUM( main, cover, preview )
type ContentAssetRole string
// Description returns the Chinese label for the specific enum value.
func (t ContentAssetRole) Description() string {
switch t {
case ContentAssetRoleMain:
return "正片"
case ContentAssetRoleCover:
return "封面"
case ContentAssetRolePreview:
return "试看"
default:
return "未知"
}
}
// ContentAssetRoleItems returns the KV list for FE dropdowns.
func ContentAssetRoleItems() []requests.KV {
values := ContentAssetRoleValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
const (
// DefaultContentPreviewSeconds is the default preview duration in seconds when content.preview_seconds is unset/invalid.
// 默认试看时长(秒):当未配置或传入非法值时使用。
DefaultContentPreviewSeconds int32 = 60
// DefaultOrderRefundWindow is the default refundable time window starting from paid_at.
// 默认退款时间窗paid_at + 24h租户管理侧可以通过强制退款绕过该限制需审计
DefaultOrderRefundWindow = 24 * time.Hour
)
// content_prices
// swagger:enum DiscountType
// ENUM( none, percent, amount )
type DiscountType string
// Description returns the Chinese label for the specific enum value.
func (t DiscountType) Description() string {
switch t {
case DiscountTypeNone:
return "无折扣"
case DiscountTypePercent:
return "百分比折扣"
case DiscountTypeAmount:
return "立减"
default:
return "未知"
}
}
// DiscountTypeItems returns the KV list for FE dropdowns.
func DiscountTypeItems() []requests.KV {
values := DiscountTypeValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum Currency
// ENUM( CNY )
type Currency string
// Description returns the Chinese label for the specific enum value.
func (t Currency) Description() string {
switch t {
case CurrencyCNY:
return "人民币(CNY)"
default:
return "未知币种"
}
}
// CurrencyItems returns the KV list for FE dropdowns.
func CurrencyItems() []requests.KV {
values := CurrencyValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// content_access
// swagger:enum ContentAccessStatus
// ENUM( active, revoked, expired )
type ContentAccessStatus string
// Description returns the Chinese label for the specific enum value.
func (t ContentAccessStatus) Description() string {
switch t {
case ContentAccessStatusActive:
return "生效"
case ContentAccessStatusRevoked:
return "已撤销"
case ContentAccessStatusExpired:
return "已过期"
default:
return "未知状态"
}
}
// ContentAccessStatusItems returns the KV list for FE dropdowns.
func ContentAccessStatusItems() []requests.KV {
values := ContentAccessStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// orders
// swagger:enum OrderType
// ENUM( content_purchase, topup )
type OrderType string
// Description returns the Chinese label for the specific enum value.
func (t OrderType) Description() string {
switch t {
case OrderTypeContentPurchase:
return "购买内容"
case OrderTypeTopup:
return "充值"
default:
return "未知类型"
}
}
// OrderTypeItems returns the KV list for FE dropdowns.
func OrderTypeItems() []requests.KV {
values := OrderTypeValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// swagger:enum OrderStatus
// ENUM( created, paid, refunding, refunded, canceled, failed )
type OrderStatus string
// Description returns the Chinese label for the specific enum value.
func (t OrderStatus) Description() string {
switch t {
case OrderStatusCreated:
return "已创建"
case OrderStatusPaid:
return "已支付"
case OrderStatusRefunding:
return "退款中"
case OrderStatusRefunded:
return "已退款"
case OrderStatusCanceled:
return "已取消"
case OrderStatusFailed:
return "失败"
default:
return "未知状态"
}
}
// OrderStatusItems returns the KV list for FE dropdowns.
func OrderStatusItems() []requests.KV {
values := OrderStatusValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// tenant_ledgers
// swagger:enum TenantLedgerType
// ENUM( credit_topup, debit_purchase, credit_refund, freeze, unfreeze, adjustment )
type TenantLedgerType string
// Description returns the Chinese label for the specific enum value.
func (t TenantLedgerType) Description() string {
switch t {
case TenantLedgerTypeCreditTopup:
return "充值入账"
case TenantLedgerTypeDebitPurchase:
return "购买扣款"
case TenantLedgerTypeCreditRefund:
return "退款回滚"
case TenantLedgerTypeFreeze:
return "冻结"
case TenantLedgerTypeUnfreeze:
return "解冻"
case TenantLedgerTypeAdjustment:
return "人工调账"
default:
return "未知类型"
}
}
// TenantLedgerTypeItems returns the KV list for FE dropdowns.
func TenantLedgerTypeItems() []requests.KV {
values := TenantLedgerTypeValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}