- Implemented API endpoints for listing tenant contents and updating content status.
- Added Swagger documentation for new endpoints:
- GET /super/v1/tenants/{tenantID}/contents
- PATCH /super/v1/tenants/{tenantID}/contents/{contentID}/status
- Created DTOs for content item and status update form.
- Enhanced frontend to support content management in the tenant detail page.
- Added search and filter functionalities for tenant contents.
- Implemented unpublish functionality with confirmation dialog.
- Updated service layer to handle new content management logic.
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package dto
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"quyun/v2/app/requests"
|
|
"quyun/v2/database/models"
|
|
"quyun/v2/pkg/consts"
|
|
)
|
|
|
|
// TenantContentFilter defines list query filters for tenant contents (superadmin).
|
|
type TenantContentFilter struct {
|
|
requests.Pagination `json:",inline" query:",inline"`
|
|
requests.SortQueryFilter `json:",inline" query:",inline"`
|
|
|
|
Keyword *string `json:"keyword,omitempty" query:"keyword"`
|
|
|
|
Status *consts.ContentStatus `json:"status,omitempty" query:"status"`
|
|
Visibility *consts.ContentVisibility `json:"visibility,omitempty" query:"visibility"`
|
|
|
|
UserID *int64 `json:"user_id,omitempty" query:"user_id"`
|
|
|
|
PublishedAtFrom *time.Time `json:"published_at_from,omitempty" query:"published_at_from"`
|
|
PublishedAtTo *time.Time `json:"published_at_to,omitempty" query:"published_at_to"`
|
|
CreatedAtFrom *time.Time `json:"created_at_from,omitempty" query:"created_at_from"`
|
|
CreatedAtTo *time.Time `json:"created_at_to,omitempty" query:"created_at_to"`
|
|
}
|
|
|
|
func (f *TenantContentFilter) KeywordTrimmed() string {
|
|
if f == nil || f.Keyword == nil {
|
|
return ""
|
|
}
|
|
return strings.TrimSpace(*f.Keyword)
|
|
}
|
|
|
|
type SuperTenantContentItem struct {
|
|
Content *models.Content `json:"content,omitempty"`
|
|
Price *models.ContentPrice `json:"price,omitempty"`
|
|
Owner *SuperUserLite `json:"owner,omitempty"`
|
|
|
|
StatusDescription string `json:"status_description,omitempty"`
|
|
VisibilityDescription string `json:"visibility_description,omitempty"`
|
|
}
|