v3
veypi 2 weeks ago
parent f81ac78f60
commit a3923ebcdb

@ -5,7 +5,6 @@ import (
"github.com/veypi/vbase/libs/auth" "github.com/veypi/vbase/libs/auth"
"github.com/veypi/vbase/models" "github.com/veypi/vbase/models"
"github.com/veypi/vigo" "github.com/veypi/vigo"
"github.com/veypi/vigo/contrib/crud"
) )
type userIDReq struct { type userIDReq struct {
@ -33,7 +32,57 @@ func userGet(x *vigo.X, req *userIDReq) (*models.User, error) {
return data, err return data, err
} }
var _ = Router.Get("/", "用户列表", auth.Check("user", "", auth.DoUpdate), crud.List(cfg.DB, &models.User{})) type listReq struct {
Page int `src:"query" json:"page" desc:"页码"`
PageSize int `src:"query" json:"page_size" desc:"每页数量"`
Keyword string `src:"query" json:"keyword" desc:"搜索关键词"`
}
type listResp struct {
Items []*models.User `json:"items"`
Total int64 `json:"total"`
Page int `json:"page"`
PageSize int `json:"page_size"`
TotalPages int `json:"total_pages"`
}
func userList(x *vigo.X, req *listReq) (*listResp, error) {
if req.Page <= 0 {
req.Page = 1
}
if req.PageSize <= 0 || req.PageSize > 100 {
req.PageSize = 10
}
var total int64
query := cfg.DB().Model(&models.User{})
if req.Keyword != "" {
query = query.Where("username LIKE ? OR nickname LIKE ? OR email LIKE ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%")
}
if err := query.Count(&total).Error; err != nil {
return nil, err
}
var items []*models.User
offset := (req.Page - 1) * req.PageSize
if err := query.Offset(offset).Limit(req.PageSize).Find(&items).Error; err != nil {
return nil, err
}
totalPages := int((total + int64(req.PageSize) - 1) / int64(req.PageSize))
return &listResp{
Items: items,
Total: total,
Page: req.Page,
PageSize: req.PageSize,
TotalPages: totalPages,
}, nil
}
var _ = Router.Get("/", "用户列表", auth.Check("user", "", auth.DoUpdate), userList)
var _ = Router.Patch("/{user_id}", "更新用户", auth.Check("user", "user_id", auth.DoUpdate, checkOwner), userPatch) var _ = Router.Patch("/{user_id}", "更新用户", auth.Check("user", "user_id", auth.DoUpdate, checkOwner), userPatch)

@ -10,10 +10,10 @@ import (
"embed" "embed"
"github.com/veypi/vbase/api" "github.com/veypi/vbase/api"
"github.com/veypi/vhtml"
vhtmlui "github.com/veypi/vhtml-ui" vhtmlui "github.com/veypi/vhtml-ui"
"github.com/veypi/vigo" "github.com/veypi/vigo"
"github.com/veypi/vigo/contrib/cors" "github.com/veypi/vigo/contrib/cors"
"github.com/veypi/vigo/contrib/vhtml"
) )
var Router = vigo.NewRouter() var Router = vigo.NewRouter()

Loading…
Cancel
Save