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, } }