feat: 添加获取全局选项接口,支持动态状态和曲种选择

This commit is contained in:
2025-12-31 12:31:52 +08:00
parent 111d0978a3
commit 20e1a2fa19
6 changed files with 127 additions and 81 deletions

View File

@@ -39,3 +39,16 @@ func (c *Common) Upload(
}
return services.Common.Upload(ctx.Context(), user.ID, file, val)
}
// Get options (enums)
//
// @Router /v1/common/options [get]
// @Summary Get options
// @Description Get global options (enums)
// @Tags Common
// @Accept json
// @Produce json
// @Success 200 {object} dto.OptionsResponse
func (c *Common) GetOptions(ctx fiber.Ctx) (*dto.OptionsResponse, error) {
return services.Common.Options(ctx.Context())
}

View File

@@ -1,5 +1,7 @@
package dto
import "quyun/v2/app/requests"
type UploadResult struct {
ID string `json:"id"`
URL string `json:"url"`
@@ -7,3 +9,8 @@ type UploadResult struct {
Size int64 `json:"size"`
MimeType string `json:"mime_type"`
}
type OptionsResponse struct {
ContentStatus []requests.KV `json:"content_status"`
ContentGenre []requests.KV `json:"content_genre"`
}

View File

@@ -50,6 +50,10 @@ func (r *Routes) Name() string {
// Each route is registered with its corresponding controller action and parameter bindings.
func (r *Routes) Register(router fiber.Router) {
// Register routes for controller: Common
r.log.Debugf("Registering route: Get /v1/common/options -> common.GetOptions")
router.Get("/v1/common/options"[len(r.Path()):], DataFunc0(
r.common.GetOptions,
))
r.log.Debugf("Registering route: Post /v1/upload -> common.Upload")
router.Post("/v1/upload"[len(r.Path()):], DataFunc3(
r.common.Upload,

View File

@@ -7,6 +7,7 @@ import (
"quyun/v2/app/errorx"
common_dto "quyun/v2/app/http/v1/dto"
"quyun/v2/app/requests"
"quyun/v2/database/fields"
"quyun/v2/database/models"
"quyun/v2/pkg/consts"
@@ -22,6 +23,21 @@ type common struct {
storage *storage.Storage
}
func (s *common) Options(ctx context.Context) (*common_dto.OptionsResponse, error) {
return &common_dto.OptionsResponse{
ContentStatus: consts.ContentStatusItems(),
ContentGenre: []requests.KV{
requests.NewKV("Jingju", "京剧"),
requests.NewKV("Kunqu", "昆曲"),
requests.NewKV("Yueju", "越剧"),
requests.NewKV("Yuju", "豫剧"),
requests.NewKV("Huangmeixi", "黄梅戏"),
requests.NewKV("Pingju", "评剧"),
requests.NewKV("Qinqiang", "秦腔"),
},
}, nil
}
func (s *common) Upload(ctx context.Context, userID int64, file *multipart.FileHeader, typeArg string) (*common_dto.UploadResult, error) {
// Mock Upload to S3/MinIO (Here we just generate key, actual upload handling via direct upload or stream is better)
// But this Upload endpoint accepts file. So we save it.