Files
blog-server/internal/model/response/sys_user.go
2026-07-29 22:10:36 +08:00

55 lines
1.4 KiB
Go

package response
import (
"server/internal/db/sqlc"
"server/internal/pkg/httputil"
"time"
)
type SysUserRolesResponse struct {
ID uint `json:"id"`
Code string `json:"code"`
Description string `json:"description"`
}
type SysUserInfo struct {
ID int32 `json:"id"`
Account string `json:"account"`
Username string `json:"username"`
AvatarUrl string `json:"avatar_url"`
Roles []string `json:"roles"`
Menus []sqlc.SysMenu `json:"menus"`
Permissions []string `json:"permissions"`
}
type LoginResponse struct {
AccessToken string `json:"access_token"`
AccessTokenExp time.Time `json:"access_token_exp"`
RefreshToken string `json:"refresh_token"`
RefreshTokenExp time.Time `json:"refresh_token_exp"`
}
func NewSysUserInfo(user sqlc.GetSysUserByIDRow, roles []sqlc.SysRole, menus []sqlc.SysMenu, p []*string) *SysUserInfo {
roleCodes := make([]string, len(roles))
for i, role := range roles {
roleCodes[i] = role.Code
}
permissions := make([]string, 0, len(p))
for _, code := range p {
if code != nil {
permissions = append(permissions, *code)
}
}
return &SysUserInfo{
ID: user.ID,
Account: user.Account,
Username: user.Username,
AvatarUrl: httputil.BuildFileUrl(user.AvatarUrl),
Roles: roleCodes,
Menus: menus,
Permissions: permissions,
}
}