feat: add tenant content management features for superadmin

- 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.
This commit is contained in:
2025-12-24 16:10:07 +08:00
parent 8fa321dbf6
commit 568f5cda43
13 changed files with 1344 additions and 3 deletions

View File

@@ -87,6 +87,12 @@ func (r *Routes) Register(router fiber.Router) {
r.tenant.detail,
PathParam[int64]("tenantID"),
))
r.log.Debugf("Registering route: Get /super/v1/tenants/:tenantID<int>/contents -> tenant.contents")
router.Get("/super/v1/tenants/:tenantID<int>/contents"[len(r.Path()):], DataFunc2(
r.tenant.contents,
PathParam[int64]("tenantID"),
Query[dto.TenantContentFilter]("filter"),
))
r.log.Debugf("Registering route: Get /super/v1/tenants/:tenantID<int>/users -> tenant.users")
router.Get("/super/v1/tenants/:tenantID<int>/users"[len(r.Path()):], DataFunc2(
r.tenant.users,
@@ -103,6 +109,13 @@ func (r *Routes) Register(router fiber.Router) {
PathParam[int64]("tenantID"),
Body[dto.TenantExpireUpdateForm]("form"),
))
r.log.Debugf("Registering route: Patch /super/v1/tenants/:tenantID<int>/contents/:contentID<int>/status -> tenant.updateContentStatus")
router.Patch("/super/v1/tenants/:tenantID<int>/contents/:contentID<int>/status"[len(r.Path()):], DataFunc3(
r.tenant.updateContentStatus,
PathParam[int64]("tenantID"),
PathParam[int64]("contentID"),
Body[dto.SuperTenantContentStatusUpdateForm]("form"),
))
r.log.Debugf("Registering route: Patch /super/v1/tenants/:tenantID<int>/status -> tenant.updateStatus")
router.Patch("/super/v1/tenants/:tenantID<int>/status"[len(r.Path()):], Func2(
r.tenant.updateStatus,