Files
quyun/backend_v1/app/http/admin/medias.go
2025-12-20 21:41:41 +08:00

67 lines
1.5 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 admin
import (
"quyun/v2/app/http/dto"
"quyun/v2/app/requests"
"quyun/v2/app/services"
"quyun/v2/database/models"
"quyun/v2/providers/ali"
"github.com/gofiber/fiber/v3"
)
// @provider
type medias struct {
oss *ali.OSSClient
}
// List medias
//
// @Summary 媒体列表
// @Tags Admin Medias
// @Produce json
// @Param query query ListQuery false "筛选条件"
// @Success 200 {object} requests.Pager{items=models.Medium} "成功"
// @Router /admin/v1/medias [get]
// @Bind query query
func (ctl *medias) List(ctx fiber.Ctx, query *dto.ListQuery) (*requests.Pager, error) {
return services.Media.List(ctx, query)
}
// Show media
//
// @Summary 媒体预览(跳转到签名 URL
// @Tags Admin Medias
// @Param id path int64 true "媒体 ID"
// @Success 302 {string} string "跳转"
// @Router /admin/v1/medias/:id [get]
// @Bind media path key(id) model(id)
func (ctl *medias) Show(ctx fiber.Ctx, media *models.Medium) error {
url, err := ctl.oss.GetSignedUrl(ctx, media.Path)
if err != nil {
return err
}
return ctx.Redirect().To(url)
}
// Delete
//
// @Summary 删除媒体
// @Tags Admin Medias
// @Produce json
// @Param id path int64 true "媒体 ID"
// @Success 204 {object} any "成功"
// @Router /admin/v1/medias/:id [delete]
// @Bind media path key(id) model(id)
func (ctl *medias) Delete(ctx fiber.Ctx, media *models.Medium) error {
if err := ctl.oss.Delete(ctx, media.Path); err != nil {
return err
}
if _, err := media.Delete(ctx); err != nil {
return err
}
return ctx.SendStatus(fiber.StatusNoContent)
}