Refactor super module: Move HTTP handlers to new super/v1 package
- Deleted old super.go file and moved all related HTTP handlers to new package structure under backend/app/http/super/v1. - Updated service imports in super.go and super_test.go to reflect new DTO paths. - Created new auth, contents, orders, tenants, and users handlers with corresponding routes and methods. - Added new DTO definitions for authentication and content management in the super/v1/dto directory. - Implemented new migration for content_access table and created model for it.
This commit is contained in:
@@ -1,224 +0,0 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"quyun/v2/app/requests"
|
||||
"quyun/v2/pkg/consts"
|
||||
)
|
||||
|
||||
// Filters
|
||||
type UserListFilter struct {
|
||||
requests.Pagination
|
||||
Username *string `query:"username"`
|
||||
}
|
||||
|
||||
type TenantListFilter struct {
|
||||
requests.Pagination
|
||||
Name *string `query:"name"`
|
||||
}
|
||||
|
||||
type SuperContentListFilter struct {
|
||||
requests.Pagination
|
||||
// Add filters if needed, currently list signature is just pagination in super.go service
|
||||
}
|
||||
|
||||
type SuperOrderListFilter struct {
|
||||
requests.Pagination
|
||||
// Add filters if needed
|
||||
}
|
||||
|
||||
// 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"`
|
||||
}
|
||||
Reference in New Issue
Block a user