topfans/backend/services/userService/provider/unified_provider.go
2026-04-07 22:29:48 +08:00

147 lines
5.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package provider
import (
"context"
pb "github.com/topfans/backend/pkg/proto/user"
)
// UnifiedProvider 统一Provider实现作为集成层委托给其他Provider
// 实现 Triple 协议生成的 UserSocialServiceHandler 接口
// 这样设计可以:
// 1. 避免代码重复
// 2. 保持原有Provider的职责清晰
// 3. 统一Provider只负责集成和路由
type UnifiedProvider struct {
authProvider *AuthProvider
userProvider *UserProvider
}
// 确保 UnifiedProvider 实现了 UserSocialServiceHandler 接口
var _ pb.UserSocialServiceHandler = (*UnifiedProvider)(nil)
// NewUnifiedProvider 创建统一Provider实例
// 接收Service层实例内部创建对应的Provider
func NewUnifiedProvider(
authProvider *AuthProvider,
userProvider *UserProvider,
) *UnifiedProvider {
return &UnifiedProvider{
authProvider: authProvider,
userProvider: userProvider,
}
}
// ==================== 认证相关方法(委托给 AuthProvider====================
// Register 用户注册
func (p *UnifiedProvider) Register(ctx context.Context, req *pb.RegisterRequest) (*pb.RegisterResponse, error) {
return p.authProvider.Register(ctx, req)
}
// Login 用户登录
func (p *UnifiedProvider) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginResponse, error) {
return p.authProvider.Login(ctx, req)
}
// Logout 用户登出
func (p *UnifiedProvider) Logout(ctx context.Context, req *pb.LogoutRequest) (*pb.LogoutResponse, error) {
return p.authProvider.Logout(ctx, req)
}
// RefreshToken 刷新Token
func (p *UnifiedProvider) RefreshToken(ctx context.Context, req *pb.RefreshTokenRequest) (*pb.RefreshTokenResponse, error) {
return p.authProvider.RefreshToken(ctx, req)
}
// ValidateToken 验证Token
func (p *UnifiedProvider) ValidateToken(ctx context.Context, req *pb.ValidateTokenRequest) (*pb.ValidateTokenResponse, error) {
return p.authProvider.ValidateToken(ctx, req)
}
// CheckNickname 检查昵称是否已被注册
func (p *UnifiedProvider) CheckNickname(ctx context.Context, req *pb.CheckNicknameRequest) (*pb.CheckNicknameResponse, error) {
return p.userProvider.CheckNickname(ctx, req)
}
// CheckMobile 检查手机号是否已被注册
func (p *UnifiedProvider) CheckMobile(ctx context.Context, req *pb.CheckMobileRequest) (*pb.CheckMobileResponse, error) {
return p.userProvider.CheckMobile(ctx, req)
}
// ==================== 用户信息相关方法(委托给 UserProvider====================
// GetUser 获取用户信息
func (p *UnifiedProvider) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.GetUserResponse, error) {
return p.userProvider.GetUser(ctx, req)
}
// GetFanProfile 获取粉丝档案
func (p *UnifiedProvider) GetFanProfile(ctx context.Context, req *pb.GetFanProfileRequest) (*pb.GetFanProfileResponse, error) {
return p.userProvider.GetFanProfile(ctx, req)
}
// GetCurrentUser 获取当前登录用户信息
func (p *UnifiedProvider) GetCurrentUser(ctx context.Context, req *pb.GetCurrentUserRequest) (*pb.GetCurrentUserResponse, error) {
return p.userProvider.GetCurrentUser(ctx, req)
}
// GetMyProfile 获取个人信息页
func (p *UnifiedProvider) GetMyProfile(ctx context.Context, req *pb.GetMyProfileRequest) (*pb.GetMyProfileResponse, error) {
return p.userProvider.GetMyProfile(ctx, req)
}
// UpdateNickname 修改昵称
func (p *UnifiedProvider) UpdateNickname(ctx context.Context, req *pb.UpdateNicknameRequest) (*pb.UpdateNicknameResponse, error) {
return p.userProvider.UpdateNickname(ctx, req)
}
// UpdatePassword 修改密码
func (p *UnifiedProvider) UpdatePassword(ctx context.Context, req *pb.UpdatePasswordRequest) (*pb.UpdatePasswordResponse, error) {
return p.userProvider.UpdatePassword(ctx, req)
}
// UpdateAvatar 更新用户头像
func (p *UnifiedProvider) UpdateAvatar(ctx context.Context, req *pb.UpdateAvatarRequest) (*pb.UpdateAvatarResponse, error) {
return p.userProvider.UpdateAvatar(ctx, req)
}
// ==================== 粉丝身份相关方法(委托给 UserProvider====================
// GetFanIdentities 获取可选粉丝身份列表
func (p *UnifiedProvider) GetFanIdentities(ctx context.Context, req *pb.GetFanIdentitiesRequest) (*pb.GetFanIdentitiesResponse, error) {
return p.userProvider.GetFanIdentities(ctx, req)
}
// GetMyFanIdentities 获取我的粉丝身份列表
func (p *UnifiedProvider) GetMyFanIdentities(ctx context.Context, req *pb.GetMyFanIdentitiesRequest) (*pb.GetMyFanIdentitiesResponse, error) {
return p.userProvider.GetMyFanIdentities(ctx, req)
}
// AddIdentity 新增粉丝身份
func (p *UnifiedProvider) AddIdentity(ctx context.Context, req *pb.AddIdentityRequest) (*pb.AddIdentityResponse, error) {
return p.userProvider.AddIdentity(ctx, req)
}
// SwitchIdentity 切换粉丝身份
func (p *UnifiedProvider) SwitchIdentity(ctx context.Context, req *pb.SwitchIdentityRequest) (*pb.SwitchIdentityResponse, error) {
return p.userProvider.SwitchIdentity(ctx, req)
}
// ==================== 内部RPC方法委托给 UserProvider====================
// UpdateFanProfileSocial 更新粉丝档案的好友数量内部RPC调用
func (p *UnifiedProvider) UpdateFanProfileSocial(ctx context.Context, req *pb.UpdateFanProfileSocialRequest) (*pb.UpdateFanProfileSocialResponse, error) {
return p.userProvider.UpdateFanProfileSocial(ctx, req)
}
// UpdateCrystalBalance 更新水晶余额内部RPC调用
func (p *UnifiedProvider) UpdateCrystalBalance(ctx context.Context, req *pb.UpdateCrystalBalanceRequest) (*pb.UpdateCrystalBalanceResponse, error) {
return p.userProvider.UpdateCrystalBalance(ctx, req)
}
// UpdateAssetsCount 更新资产数量内部RPC调用
func (p *UnifiedProvider) UpdateAssetsCount(ctx context.Context, req *pb.UpdateAssetsCountRequest) (*pb.UpdateAssetsCountResponse, error) {
return p.userProvider.UpdateAssetsCount(ctx, req)
}