package grpc import ( userv1 "hyapp/api/proto/user/v1" authdomain "hyapp/services/user-service/internal/domain/auth" userdomain "hyapp/services/user-service/internal/domain/user" authservice "hyapp/services/user-service/internal/service/auth" ) // toProtoToken 把领域令牌转换为 protobuf 响应。 func toProtoToken(token authdomain.Token) *userv1.AuthToken { return &userv1.AuthToken{ UserId: token.UserID, DisplayUserId: token.DisplayUserID, DefaultDisplayUserId: token.DefaultDisplayUserID, DisplayUserIdKind: token.DisplayUserIDKind, DisplayUserIdExpiresAtMs: token.DisplayUserIDExpiresAtMs, SessionId: token.SessionID, AccessToken: token.AccessToken, RefreshToken: token.RefreshToken, ExpiresInSec: token.ExpiresInSec, TokenType: token.TokenType, } } // toProtoUser 把领域用户转换为 protobuf 用户投影。 func toProtoUser(user userdomain.User) *userv1.User { return &userv1.User{ UserId: user.UserID, Status: toProtoStatus(user.Status), CreatedAtMs: user.CreatedAtMs, UpdatedAtMs: user.UpdatedAtMs, DisplayUserId: user.CurrentDisplayUserID, DefaultDisplayUserId: user.DefaultDisplayUserID, DisplayUserIdKind: string(user.CurrentDisplayUserIDKind), DisplayUserIdExpiresAtMs: user.CurrentDisplayUserIDExpiresAtMs, } } // toProtoIdentity 把短号领域投影转换为 protobuf 响应。 func toProtoIdentity(identity userdomain.Identity) *userv1.UserIdentity { return &userv1.UserIdentity{ UserId: identity.UserID, DisplayUserId: identity.DisplayUserID, Status: string(identity.Status), DefaultDisplayUserId: identity.DefaultDisplayUserID, DisplayUserIdKind: string(identity.DisplayUserIDKind), DisplayUserIdExpiresAtMs: identity.DisplayUserIDExpiresAtMs, } } // toProtoStatus 固定未知状态的安全默认值。 func toProtoStatus(status userdomain.Status) userv1.UserStatus { switch status { case userdomain.StatusActive: return userv1.UserStatus_USER_STATUS_ACTIVE case userdomain.StatusDisabled: return userv1.UserStatus_USER_STATUS_DISABLED case userdomain.StatusBanned: return userv1.UserStatus_USER_STATUS_BANNED default: return userv1.UserStatus_USER_STATUS_UNSPECIFIED } } // authMeta 提取认证链路审计所需的 gateway 透传字段。 func authMeta(meta *userv1.RequestMeta) authservice.Meta { if meta == nil { return authservice.Meta{} } return authservice.Meta{ RequestID: meta.GetRequestId(), ClientIP: meta.GetClientIp(), UserAgent: meta.GetUserAgent(), } }