feat: 统一 Admin 主列表分页 (#64)
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user