Files
quyun/backend/app/http/admin/users.go
Rogee c9fe3c3c17
Some checks failed
build quyun / Build (push) Failing after 15s
fix: charge issues
2025-12-06 21:45:07 +08:00

60 lines
1.4 KiB
Go

package admin
import (
"quyun/app/model"
"quyun/app/requests"
"github.com/gofiber/fiber/v3"
)
type UserListQuery struct {
Keyword *string `query:"keyword"`
}
// @provider
type users struct{}
// List users
//
// @Router /admin/users [get]
// @Bind pagination query
// @Bind query query
func (ctl *users) List(ctx fiber.Ctx, pagination *requests.Pagination, query *UserListQuery) (*requests.Pager, error) {
cond := model.UsersModel().BuildConditionWithKey(query.Keyword)
return model.UsersModel().List(ctx.Context(), pagination, cond)
}
// Show user
//
// @Router /admin/users/:id [get]
// @Bind id path
func (ctl *users) Show(ctx fiber.Ctx, id int64) (*model.Users, error) {
return model.UsersModel().GetByID(ctx.Context(), id)
}
// Articles show user bought articles
//
// @Router /admin/users/:id/articles [get]
// @Bind id path
// @Bind pagination query
func (ctl *users) Articles(ctx fiber.Ctx, id int64, pagination *requests.Pagination) (*requests.Pager, error) {
return model.PostsModel().Bought(ctx.Context(), id, pagination)
}
type UserBalance struct {
Balance int64 `json:"balance"`
}
// Balance
//
// @Router /admin/users/:id/balance [post]
// @Bind id path
// @Bind balance body
func (ctl *users) Balance(ctx fiber.Ctx, id int64, balance *UserBalance) error {
user, err := model.UsersModel().GetByID(ctx.Context(), id)
if err != nil {
return err
}
return user.AddBalance(ctx.Context(), balance.Balance)
}