203 lines
7.5 KiB
Go
203 lines
7.5 KiB
Go
package dto
|
|
|
|
import (
|
|
"quyun/v2/pkg/consts"
|
|
)
|
|
|
|
// SuperUserLite 用于平台用户列表的轻量级用户信息
|
|
type SuperUserLite struct {
|
|
ID int64 `json:"id"`
|
|
Username string `json:"username"`
|
|
Roles []consts.Role `json:"roles"`
|
|
Status consts.UserStatus `json:"status"`
|
|
StatusDescription string `json:"status_description"`
|
|
VerifiedAt string `json:"verified_at"`
|
|
CreatedAt string `json:"created_at"`
|
|
UpdatedAt string `json:"updated_at"`
|
|
}
|
|
|
|
type UserItem struct {
|
|
SuperUserLite
|
|
Balance int64 `json:"balance"`
|
|
BalanceFrozen int64 `json:"balance_frozen"`
|
|
OwnedTenantCount int64 `json:"owned_tenant_count"`
|
|
JoinedTenantCount int64 `json:"joined_tenant_count"`
|
|
}
|
|
|
|
type UserStatistics struct {
|
|
Status consts.UserStatus `json:"status"`
|
|
StatusDescription string `json:"status_description"`
|
|
Count int64 `json:"count"`
|
|
}
|
|
|
|
type UserStatusUpdateForm struct {
|
|
Status consts.UserStatus `json:"status" validate:"required"`
|
|
}
|
|
|
|
type UserRolesUpdateForm struct {
|
|
Roles []consts.Role `json:"roles" validate:"required,min=1"`
|
|
}
|
|
|
|
type UserTenantItem struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
TenantStatus consts.TenantStatus `json:"tenant_status"`
|
|
TenantStatusDescription string `json:"tenant_status_description"`
|
|
Name string `json:"name"`
|
|
Code string `json:"code"`
|
|
Owner *TenantOwnerUserLite `json:"owner"`
|
|
Role []consts.TenantUserRole `json:"role"`
|
|
MemberStatus consts.UserStatus `json:"member_status"`
|
|
MemberStatusDescription string `json:"member_status_description"`
|
|
JoinedAt string `json:"joined_at"`
|
|
ExpiredAt string `json:"expired_at"`
|
|
}
|
|
|
|
// Tenant Related
|
|
type TenantCreateForm struct {
|
|
Name string `json:"name" validate:"required,max=128"`
|
|
Code string `json:"code" validate:"required,max=64"`
|
|
AdminUserID int64 `json:"admin_user_id" validate:"required"`
|
|
Duration int `json:"duration" validate:"required,oneof=7 30 90 180 365"`
|
|
}
|
|
|
|
type TenantItem struct {
|
|
ID int64 `json:"id"`
|
|
UUID string `json:"uuid"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Status consts.TenantStatus `json:"status"`
|
|
StatusDescription string `json:"status_description"`
|
|
Config []int `json:"config"` // Replace with actual config struct if needed
|
|
Owner *TenantOwnerUserLite `json:"owner"`
|
|
AdminUsers []*TenantAdminUserLite `json:"admin_users"`
|
|
UserCount int64 `json:"user_count"`
|
|
IncomeAmountPaidSum int64 `json:"income_amount_paid_sum"`
|
|
ExpiredAt string `json:"expired_at"`
|
|
CreatedAt string `json:"created_at"`
|
|
UpdatedAt string `json:"updated_at"`
|
|
UserID int64 `json:"user_id"`
|
|
Users []*SuperUserLite `json:"users"`
|
|
}
|
|
|
|
type TenantOwnerUserLite struct {
|
|
ID int64 `json:"id"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
type TenantAdminUserLite struct {
|
|
ID int64 `json:"id"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
type TenantExpireUpdateForm struct {
|
|
Duration int `json:"duration" validate:"required,oneof=7 30 90 180 365"`
|
|
}
|
|
|
|
type TenantStatusUpdateForm struct {
|
|
Status consts.TenantStatus `json:"status" validate:"required"`
|
|
}
|
|
|
|
type SuperTenantContentItem struct {
|
|
Content *ContentItem `json:"content"`
|
|
StatusDescription string `json:"status_description"`
|
|
VisibilityDescription string `json:"visibility_description"`
|
|
Tenant *SuperContentTenantLite `json:"tenant"`
|
|
Owner *SuperUserLite `json:"owner"`
|
|
Price *ContentPrice `json:"price"` // Reuse or define specific price struct
|
|
}
|
|
|
|
type SuperContentTenantLite struct {
|
|
ID int64 `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type SuperTenantContentStatusUpdateForm struct {
|
|
Status consts.ContentStatus `json:"status" validate:"required,oneof=unpublished blocked"`
|
|
}
|
|
|
|
type SuperTenantUserItem struct {
|
|
User *SuperUserLite `json:"user"`
|
|
TenantUser *TenantUser `json:"tenant_user"`
|
|
}
|
|
|
|
type TenantUser struct {
|
|
ID int64 `json:"id"`
|
|
TenantID int64 `json:"tenant_id"`
|
|
UserID int64 `json:"user_id"`
|
|
Role []consts.TenantUserRole `json:"role"`
|
|
Status consts.UserStatus `json:"status"`
|
|
CreatedAt string `json:"created_at"`
|
|
UpdatedAt string `json:"updated_at"`
|
|
}
|
|
|
|
// Order Related
|
|
type SuperOrderItem struct {
|
|
ID int64 `json:"id"`
|
|
Type consts.OrderType `json:"type"`
|
|
Status consts.OrderStatus `json:"status"`
|
|
StatusDescription string `json:"status_description"`
|
|
Currency consts.Currency `json:"currency"`
|
|
AmountOriginal int64 `json:"amount_original"`
|
|
AmountDiscount int64 `json:"amount_discount"`
|
|
AmountPaid int64 `json:"amount_paid"`
|
|
Tenant *OrderTenantLite `json:"tenant"`
|
|
Buyer *OrderBuyerLite `json:"buyer"`
|
|
PaidAt string `json:"paid_at"`
|
|
RefundedAt string `json:"refunded_at"`
|
|
CreatedAt string `json:"created_at"`
|
|
UpdatedAt string `json:"updated_at"`
|
|
}
|
|
|
|
type OrderTenantLite struct {
|
|
ID int64 `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type OrderBuyerLite struct {
|
|
ID int64 `json:"id"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
type OrderStatisticsResponse struct {
|
|
TotalCount int64 `json:"total_count"`
|
|
TotalAmountPaidSum int64 `json:"total_amount_paid_sum"`
|
|
ByStatus []OrderStatisticsRow `json:"by_status"`
|
|
}
|
|
|
|
type OrderStatisticsRow struct {
|
|
Status consts.OrderStatus `json:"status"`
|
|
StatusDescription string `json:"status_description"`
|
|
Count int64 `json:"count"`
|
|
AmountPaidSum int64 `json:"amount_paid_sum"`
|
|
}
|
|
|
|
type SuperOrderDetail struct {
|
|
Order *SuperOrderItem `json:"order"` // Using SuperOrderItem as base, extend if needed
|
|
Tenant *OrderTenantLite `json:"tenant"`
|
|
Buyer *OrderBuyerLite `json:"buyer"`
|
|
}
|
|
|
|
type SuperOrderRefundForm struct {
|
|
Force bool `json:"force"`
|
|
Reason string `json:"reason"`
|
|
IdempotencyKey string `json:"idempotency_key"`
|
|
}
|
|
|
|
// AdminContentItem for super admin view
|
|
type AdminContentItem struct {
|
|
Content *ContentItem `json:"content"`
|
|
Owner *AdminContentOwnerLite `json:"owner"`
|
|
Price *ContentPrice `json:"price"`
|
|
StatusDescription string `json:"status_description"`
|
|
VisibilityDescription string `json:"visibility_description"`
|
|
}
|
|
|
|
type AdminContentOwnerLite struct {
|
|
ID int64 `json:"id"`
|
|
Username string `json:"username"`
|
|
Roles []consts.Role `json:"roles"`
|
|
Status consts.UserStatus `json:"status"`
|
|
}
|