Files
quyun/backend_v1/app/http/admin/users.go
Rogee 40df9604d8
Some checks failed
build quyun / Build (push) Failing after 1m24s
fix: 修改用户列表查询条件以支持通过手机号搜索
2025-12-20 14:33:05 +08:00

108 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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)
}