package admin import ( "quyun/v2/app/requests" "quyun/v2/app/services" "quyun/v2/database" "quyun/v2/database/models" "github.com/gofiber/fiber/v3" "go.ipao.vip/gen" ) type UserListQuery struct { Keyword *string `query:"keyword"` } // @provider type users struct{} // List users // // @Summary 用户列表 // @Tags Admin Users // @Produce json // @Param pagination query requests.Pagination false "分页参数" // @Param query query UserListQuery false "筛选条件" // @Success 200 {object} requests.Pager{items=models.User} "成功" // @Router /admin/v1/users [get] // @Bind pagination query // @Bind query query func (ctl *users) List(ctx fiber.Ctx, pagination *requests.Pagination, query *UserListQuery) (*requests.Pager, error) { conds := []gen.Condition{} if query.Keyword != nil && *query.Keyword != "" { conds = append(conds, models.UserQuery.Phone.Like(database.WrapLike(*query.Keyword)), ) } return services.Users.List(ctx, pagination, conds...) } // Show user // // @Summary 用户详情 // @Tags Admin Users // @Produce json // @Param id path int64 true "用户 ID" // @Success 200 {object} models.User "成功" // @Router /admin/v1/users/:id [get] // @Bind user path key(id) model(id) func (ctl *users) Show(ctx fiber.Ctx, user *models.User) (*models.User, error) { return user, nil } // Articles show user bought articles // // @Summary 用户已购作品 // @Tags Admin Users // @Produce json // @Param id path int64 true "用户 ID" // @Param pagination query requests.Pagination false "分页参数" // @Success 200 {object} requests.Pager{items=models.Post} "成功" // @Router /admin/v1/users/:id/articles [get] // @Bind user path key(id) model(id) // @Bind pagination query func (ctl *users) Articles(ctx fiber.Ctx, user *models.User, pagination *requests.Pagination) (*requests.Pager, error) { return services.Posts.Bought(ctx, user.ID, pagination) } type UserBalance struct { Balance int64 `json:"balance"` } type UserPhoneForm struct { Phone string `json:"phone"` // 用户手机号(11 位数字) } // Balance // // @Summary 调整用户余额 // @Tags Admin Users // @Accept json // @Produce json // @Param id path int64 true "用户 ID" // @Param balance body UserBalance true "请求体" // @Success 200 {object} any "成功" // @Router /admin/v1/users/:id/balance [post] // @Bind user path key(id) model(id) // @Bind balance body func (ctl *users) Balance(ctx fiber.Ctx, user *models.User, balance *UserBalance) error { return services.Users.AddBalance(ctx, user.ID, balance.Balance) } // SetPhone // // @Summary 设置用户手机号 // @Tags Admin Users // @Accept json // @Produce json // @Param id path int64 true "用户 ID" // @Param form body UserPhoneForm true "请求体" // @Success 200 {object} any "成功" // @Router /admin/v1/users/:id/phone [post] // @Bind user path key(id) model(id) // @Bind form body func (ctl *users) SetPhone(ctx fiber.Ctx, user *models.User, form *UserPhoneForm) error { return services.Users.SetPhone(ctx, user.ID, form.Phone) }