udpate
This commit is contained in:
@@ -27,7 +27,7 @@ type medias struct {
|
||||
// @Bind pagination query
|
||||
// @Bind query query
|
||||
func (ctl *medias) List(ctx fiber.Ctx, pagination *requests.Pagination, query *ListQuery) (*requests.Pager, error) {
|
||||
return services.Medias.List(ctx, pagination, models.MediaQuery.Name.Like(database.WrapLike(*query.Keyword)))
|
||||
return services.Media.List(ctx, pagination, models.MediaQuery.Name.Like(database.WrapLike(*query.Keyword)))
|
||||
}
|
||||
|
||||
// Show media
|
||||
|
||||
@@ -39,7 +39,7 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
|
||||
return nil, err
|
||||
}
|
||||
|
||||
postIds := lo.Map(pager.Items.([]models.Post), func(item models.Post, _ int) int64 {
|
||||
postIds := lo.Map(pager.Items.([]*models.Post), func(item *models.Post, _ int) int64 {
|
||||
return item.ID
|
||||
})
|
||||
if len(postIds) > 0 {
|
||||
@@ -48,13 +48,13 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
|
||||
return pager, err
|
||||
}
|
||||
|
||||
items := lo.Map(pager.Items.([]models.Post), func(item models.Post, _ int) PostItem {
|
||||
items := lo.Map(pager.Items.([]*models.Post), func(item *models.Post, _ int) PostItem {
|
||||
cnt := int64(0)
|
||||
if v, ok := postCntMap[item.ID]; ok {
|
||||
cnt = v
|
||||
}
|
||||
|
||||
return PostItem{Post: &item, BoughtCount: cnt}
|
||||
return PostItem{Post: item, BoughtCount: cnt}
|
||||
})
|
||||
|
||||
pager.Items = items
|
||||
@@ -97,7 +97,7 @@ func (ctl *posts) Create(ctx fiber.Ctx, form *PostForm) error {
|
||||
}
|
||||
|
||||
if form.Medias != nil {
|
||||
medias, err := services.Medias.GetByIds(ctx, form.Medias)
|
||||
medias, err := services.Media.GetByIds(ctx, form.Medias)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -140,7 +140,7 @@ func (ctl *posts) Update(ctx fiber.Ctx, post *models.Post, form *PostForm) error
|
||||
post.Tags = types.NewJSONType([]string{})
|
||||
|
||||
if form.Medias != nil {
|
||||
medias, err := services.Medias.GetByIds(ctx, form.Medias)
|
||||
medias, err := services.Media.GetByIds(ctx, form.Medias)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -192,7 +192,7 @@ type PostItem struct {
|
||||
// @Router /admin/posts/:id [get]
|
||||
// @Bind post path key(id) model(id)
|
||||
func (ctl *posts) Show(ctx fiber.Ctx, post *models.Post) (*PostItem, error) {
|
||||
medias, err := services.Medias.GetByIds(ctx, lo.Map(post.Assets.Data(), func(asset fields.MediaAsset, _ int) int64 {
|
||||
medias, err := services.Media.GetByIds(ctx, lo.Map(post.Assets.Data(), func(asset fields.MediaAsset, _ int) int64 {
|
||||
return asset.Media
|
||||
}))
|
||||
if err != nil {
|
||||
|
||||
@@ -5,5 +5,7 @@ func (r *Routes) Path() string {
|
||||
}
|
||||
|
||||
func (r *Routes) Middlewares() []any {
|
||||
return []any{}
|
||||
return []any{
|
||||
r.middlewares.AuthAdmin,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func (s *statistics) statistics(ctx fiber.Ctx) (*StatisticsResponse, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
statistics.Media, err = services.Medias.Count(ctx)
|
||||
statistics.Media, err = services.Media.Count(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ type PreCheckResp struct {
|
||||
// @Bind ext path
|
||||
// @Bind mime query
|
||||
func (up *uploads) PreUploadCheck(ctx fiber.Ctx, md5, ext, mime string) (*PreCheckResp, error) {
|
||||
_, err := services.Medias.GetByHash(ctx, md5)
|
||||
_, err := services.Media.GetByHash(ctx, md5)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
preSign, err := up.oss.PreSignUpload(ctx, fmt.Sprintf("%s.%s", md5, ext), mime)
|
||||
if err != nil {
|
||||
@@ -77,7 +77,7 @@ type PostUploadedForm struct {
|
||||
// @Router /admin/uploads/post-uploaded-action [post]
|
||||
// @Bind body body
|
||||
func (up *uploads) PostUploadedAction(ctx fiber.Ctx, body *PostUploadedForm) error {
|
||||
m, err := services.Medias.GetByHash(ctx, body.Md5)
|
||||
m, err := services.Media.GetByHash(ctx, body.Md5)
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ type posts struct {
|
||||
// @Param pagination query requests.Pagination false "分页参数"
|
||||
// @Param query query ListQuery false "筛选条件"
|
||||
// @Success 200 {object} requests.Pager{items=PostItem} "成功"
|
||||
// @Router /posts [get]
|
||||
// @Router /v1/posts [get]
|
||||
// @Bind pagination query
|
||||
// @Bind query query
|
||||
// @Bind user local
|
||||
@@ -55,7 +55,11 @@ func (ctl *posts) List(
|
||||
tbl, _ := models.PostQuery.QueryContext(ctx)
|
||||
conds := []gen.Condition{
|
||||
tbl.Status.Eq(fields.PostStatusPublished),
|
||||
tbl.Title.Like(database.WrapLike(*query.Keyword)),
|
||||
}
|
||||
if query.Keyword != nil && *query.Keyword != "" {
|
||||
conds = append(conds,
|
||||
tbl.Title.Like(database.WrapLike(*query.Keyword)),
|
||||
)
|
||||
}
|
||||
|
||||
pager, err := services.Posts.List(ctx, pagination, conds...)
|
||||
@@ -64,14 +68,14 @@ func (ctl *posts) List(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
postIds := lo.Map(pager.Items.([]models.Post), func(item models.Post, _ int) int64 { return item.ID })
|
||||
postIds := lo.Map(pager.Items.([]*models.Post), func(item *models.Post, _ int) int64 { return item.ID })
|
||||
if len(postIds) > 0 {
|
||||
userBoughtIds, err := services.Users.BatchCheckHasBought(ctx, user.ID, postIds)
|
||||
if err != nil {
|
||||
log.WithError(err).Errorf("BatchCheckHasBought err: %v", err)
|
||||
}
|
||||
|
||||
items := lo.FilterMap(pager.Items.([]models.Post), func(item models.Post, _ int) (PostItem, bool) {
|
||||
items := lo.FilterMap(pager.Items.([]*models.Post), func(item *models.Post, _ int) (PostItem, bool) {
|
||||
medias, err := services.Posts.GetMediasByIds(ctx, item.HeadImages.Data())
|
||||
if err != nil {
|
||||
log.Errorf("GetMediaByIds err: %v", err)
|
||||
@@ -132,7 +136,7 @@ type PostItem struct {
|
||||
// @Produce json
|
||||
// @Param id path int64 true "作品 ID"
|
||||
// @Success 200 {object} PostItem "成功"
|
||||
// @Router /posts/:id/show [get]
|
||||
// @Router /v1/posts/:id/show [get]
|
||||
// @Bind post path key(id) model(id)
|
||||
// @Bind user local
|
||||
func (ctl *posts) Show(ctx fiber.Ctx, post *models.Post, user *models.User) (*PostItem, error) {
|
||||
@@ -187,7 +191,7 @@ type PlayUrl struct {
|
||||
// @Produce json
|
||||
// @Param id path int64 true "作品 ID"
|
||||
// @Success 200 {object} PlayUrl "成功"
|
||||
// @Router /posts/:id/play [get]
|
||||
// @Router /v1/posts/:id/play [get]
|
||||
// @Bind post path key(id) model(id)
|
||||
// @Bind user local
|
||||
func (ctl *posts) Play(ctx fiber.Ctx, post *models.Post, user *models.User) (*PlayUrl, error) {
|
||||
@@ -207,7 +211,7 @@ func (ctl *posts) Play(ctx fiber.Ctx, post *models.Post, user *models.User) (*Pl
|
||||
|
||||
for _, asset := range post.Assets.Data() {
|
||||
if asset.Type == "video/mp4" && asset.Metas != nil && asset.Metas.Short == preview {
|
||||
media, err := services.Medias.FindByID(ctx, asset.Media)
|
||||
media, err := services.Media.FindByID(ctx, asset.Media)
|
||||
if err != nil {
|
||||
log.WithError(err).Errorf("medias GetByID err: %v", err)
|
||||
return nil, err
|
||||
@@ -239,7 +243,7 @@ func (ctl *posts) Play(ctx fiber.Ctx, post *models.Post, user *models.User) (*Pl
|
||||
// @Param pagination query requests.Pagination false "分页参数"
|
||||
// @Param query query ListQuery false "筛选条件"
|
||||
// @Success 200 {object} requests.Pager{items=PostItem} "成功"
|
||||
// @Router /posts/mine [get]
|
||||
// @Router /v1/posts/mine [get]
|
||||
// @Bind pagination query
|
||||
// @Bind query query
|
||||
// @Bind user local
|
||||
@@ -265,7 +269,7 @@ func (ctl *posts) Mine(
|
||||
postIds := lo.Map(pager.Items.([]*models.Post), func(item *models.Post, _ int) int64 { return item.ID })
|
||||
if len(postIds) > 0 {
|
||||
items := lo.FilterMap(pager.Items.([]*models.Post), func(item *models.Post, _ int) (PostItem, bool) {
|
||||
medias, err := services.Medias.GetByIds(ctx, item.HeadImages.Data())
|
||||
medias, err := services.Media.GetByIds(ctx, item.HeadImages.Data())
|
||||
if err != nil {
|
||||
log.Errorf("GetMediaByIds err: %v", err)
|
||||
return PostItem{}, false
|
||||
@@ -306,7 +310,7 @@ func (ctl *posts) Mine(
|
||||
// @Produce json
|
||||
// @Param id path int64 true "作品 ID"
|
||||
// @Success 200 {object} wechat.JSAPIPayParams "成功(余额支付返回 AppId=balance)"
|
||||
// @Router /posts/:id/buy [post]
|
||||
// @Router /v1/posts/:id/buy [post]
|
||||
// @Bind post path key(id) model(id)
|
||||
// @Bind user local
|
||||
func (ctl *posts) Buy(ctx fiber.Ctx, post *models.Post, user *models.User) (*wechat.JSAPIPayParams, error) {
|
||||
|
||||
@@ -45,15 +45,15 @@ 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: posts
|
||||
r.log.Debugf("Registering route: Get /posts -> posts.List")
|
||||
router.Get("/posts"[len(r.Path()):], DataFunc3(
|
||||
r.log.Debugf("Registering route: Get /v1/posts -> posts.List")
|
||||
router.Get("/v1/posts"[len(r.Path()):], DataFunc3(
|
||||
r.posts.List,
|
||||
Query[requests.Pagination]("pagination"),
|
||||
Query[ListQuery]("query"),
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Get /posts/:id/play -> posts.Play")
|
||||
router.Get("/posts/:id/play"[len(r.Path()):], DataFunc2(
|
||||
r.log.Debugf("Registering route: Get /v1/posts/:id/play -> posts.Play")
|
||||
router.Get("/v1/posts/:id/play"[len(r.Path()):], DataFunc2(
|
||||
r.posts.Play,
|
||||
func(ctx fiber.Ctx) (*models.Post, error) {
|
||||
v := fiber.Params[int](ctx, "id")
|
||||
@@ -61,8 +61,8 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
},
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Get /posts/:id/show -> posts.Show")
|
||||
router.Get("/posts/:id/show"[len(r.Path()):], DataFunc2(
|
||||
r.log.Debugf("Registering route: Get /v1/posts/:id/show -> posts.Show")
|
||||
router.Get("/v1/posts/:id/show"[len(r.Path()):], DataFunc2(
|
||||
r.posts.Show,
|
||||
func(ctx fiber.Ctx) (*models.Post, error) {
|
||||
v := fiber.Params[int](ctx, "id")
|
||||
@@ -70,15 +70,15 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
},
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Get /posts/mine -> posts.Mine")
|
||||
router.Get("/posts/mine"[len(r.Path()):], DataFunc3(
|
||||
r.log.Debugf("Registering route: Get /v1/posts/mine -> posts.Mine")
|
||||
router.Get("/v1/posts/mine"[len(r.Path()):], DataFunc3(
|
||||
r.posts.Mine,
|
||||
Query[requests.Pagination]("pagination"),
|
||||
Query[ListQuery]("query"),
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Post /posts/:id/buy -> posts.Buy")
|
||||
router.Post("/posts/:id/buy"[len(r.Path()):], DataFunc2(
|
||||
r.log.Debugf("Registering route: Post /v1/posts/:id/buy -> posts.Buy")
|
||||
router.Post("/v1/posts/:id/buy"[len(r.Path()):], DataFunc2(
|
||||
r.posts.Buy,
|
||||
func(ctx fiber.Ctx) (*models.Post, error) {
|
||||
v := fiber.Params[int](ctx, "id")
|
||||
@@ -87,13 +87,13 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
// Register routes for controller: users
|
||||
r.log.Debugf("Registering route: Get /users/profile -> users.Profile")
|
||||
router.Get("/users/profile"[len(r.Path()):], DataFunc1(
|
||||
r.log.Debugf("Registering route: Get /v1/users/profile -> users.Profile")
|
||||
router.Get("/v1/users/profile"[len(r.Path()):], DataFunc1(
|
||||
r.users.Profile,
|
||||
Local[*models.User]("user"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Put /users/username -> users.Update")
|
||||
router.Put("/users/username"[len(r.Path()):], Func2(
|
||||
r.log.Debugf("Registering route: Put /v1/users/username -> users.Update")
|
||||
router.Put("/v1/users/username"[len(r.Path()):], Func2(
|
||||
r.users.Update,
|
||||
Local[*models.User]("user"),
|
||||
Body[ProfileForm]("form"),
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package http
|
||||
|
||||
func (r *Routes) Path() string {
|
||||
return "/http"
|
||||
return "/v1"
|
||||
}
|
||||
|
||||
func (r *Routes) Middlewares() []any {
|
||||
return []any{}
|
||||
return []any{
|
||||
r.middlewares.AuthFrontend,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ type UserInfo struct {
|
||||
// @Tags Users
|
||||
// @Produce json
|
||||
// @Success 200 {object} UserInfo "成功"
|
||||
// @Router /users/profile [get]
|
||||
// @Router /v1/users/profile [get]
|
||||
// @Bind user local
|
||||
func (ctl *users) Profile(ctx fiber.Ctx, user *models.User) (*UserInfo, error) {
|
||||
return &UserInfo{
|
||||
@@ -51,7 +51,7 @@ type ProfileForm struct {
|
||||
// @Produce json
|
||||
// @Param form body ProfileForm true "请求体"
|
||||
// @Success 200 {object} any "成功"
|
||||
// @Router /users/username [put]
|
||||
// @Router /v1/users/username [put]
|
||||
// @Bind user local
|
||||
// @Bind form body
|
||||
func (ctl *users) Update(ctx fiber.Ctx, user *models.User, form *ProfileForm) error {
|
||||
|
||||
Reference in New Issue
Block a user