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.SetBalance(ctx.Context(), balance.Balance) }