2026-05-02 13:02:38 +08:00

55 lines
1.2 KiB
Go

package shared
import (
"strconv"
"hyapp-admin-server/internal/middleware"
"hyapp-admin-server/internal/repository"
"hyapp-admin-server/internal/response"
"github.com/gin-gonic/gin"
)
type Actor struct {
UserID uint
Username string
Permissions []string
}
func ActorFromContext(c *gin.Context) Actor {
return Actor{
UserID: middleware.CurrentUserID(c),
Username: middleware.CurrentUsername(c),
Permissions: middleware.CurrentPermissions(c),
}
}
func ListOptions(c *gin.Context) repository.ListOptions {
page, _ := strconv.Atoi(DefaultString(c.Query("page"), "1"))
pageSize, _ := strconv.Atoi(DefaultString(c.Query("page_size"), DefaultString(c.Query("pageSize"), "10")))
if page < 1 {
page = 1
}
if pageSize < 1 {
pageSize = 10
}
return repository.ListOptions{
Page: page,
PageSize: pageSize,
Keyword: c.Query("keyword"),
Role: c.Query("role"),
Status: c.Query("status"),
Sort: c.Query("sort"),
}
}
func ParseID(c *gin.Context, name string) (uint, bool) {
raw := c.Param(name)
id, err := strconv.ParseUint(raw, 10, 64)
if err != nil || id == 0 {
response.BadRequest(c, "ID 参数不正确")
return 0, false
}
return uint(id), true
}