Files
blog-server/internal/model/response/user.go
2026-08-19 22:05:49 +08:00

59 lines
1.4 KiB
Go

package response
import (
"server/internal/db/sqlc"
"time"
)
type UserRolesResponse struct {
ID uint `json:"id"`
Code string `json:"code"`
Description string `json:"description"`
}
type UserInfo 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 NewUserInfo(user sqlc.GetUserRow, roles []sqlc.SysRole, menus []sqlc.SysMenu, p []*string) *UserInfo {
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)
}
}
avatarURL := ""
if user.AvatarUrl != nil {
avatarURL = *user.AvatarUrl
}
return &UserInfo{
ID: user.ID,
Account: user.Account,
Username: user.Username,
AvatarUrl: avatarURL,
Roles: roleCodes,
Menus: menus,
Permissions: permissions,
}
}