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