152 lines
6.0 KiB
Go
152 lines
6.0 KiB
Go
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)
|
||
}
|
||
|
||
// AddExperience 增加经验值(内部RPC调用)
|
||
func (p *UnifiedProvider) AddExperience(ctx context.Context, req *pb.AddExperienceRequest) (*pb.AddExperienceResponse, error) {
|
||
return p.userProvider.AddExperience(ctx, req)
|
||
}
|