feat: 统一 Admin 主列表分页 (#64)

This commit is contained in:
chengma
2026-08-09 21:51:20 +08:00
parent 5c9ebd968c
commit 155dd3b4a2
23 changed files with 549 additions and 120 deletions
+23 -2
View File
@@ -34,9 +34,13 @@ func (h *Handler) UserList(c *gin.Context) {
}
func (h *Handler) renderUserList(c *gin.Context, httpStatus int, message, errorMessage string, needCreate bool, createUsername string) {
keyword := strings.TrimSpace(c.Query("q"))
keyword := strings.TrimSpace(userListValue(c, "q"))
listStatus := userListValue(c, "status")
if c.Request.Method == http.MethodPost {
listStatus = c.PostForm("list_status")
}
result, err := service.ListUsers(h.db, currentUser(c), keyword,
model.UserStatus(c.Query("status")), service.ParsePage(c.Query("page")))
model.UserStatus(listStatus), service.ParsePage(userListValue(c, "page")))
if err != nil {
fail(c, http.StatusInternalServerError, "读取用户列表失败,账号数据没有被改动。刷新后重试。")
return
@@ -54,9 +58,17 @@ func (h *Handler) renderUserList(c *gin.Context, httpStatus int, message, errorM
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"StatusFilter": result.Status, "Message": message, "Error": errorMessage,
"NeedCreate": needCreate, "CreateUsername": createUsername,
"CurrentPage": result.Page,
}))
}
func userListValue(c *gin.Context, key string) string {
if c.Request.Method == http.MethodPost {
return c.PostForm(key)
}
return c.Query(key)
}
// UserCreate 只创建固定 purchaser 角色,密码不写入 URL、不回显。
func (h *Handler) UserCreate(c *gin.Context) {
err := service.CreatePurchaser(h.db, currentUser(c), c.PostForm("username"),
@@ -114,6 +126,15 @@ func isExpectedUserError(err error) bool {
func redirectUsers(c *gin.Context, message, errorMessage string) {
query := url.Values{}
if keyword := c.PostForm("q"); keyword != "" {
query.Set("q", keyword)
}
if status := c.PostForm("list_status"); status != "" {
query.Set("status", status)
}
if page := c.PostForm("page"); page != "" {
query.Set("page", page)
}
if message != "" {
query.Set("msg", message)
}