package main import ( "context" "fmt" "log" "time" "dubbo.apache.org/dubbo-go/v3/client" _ "dubbo.apache.org/dubbo-go/v3/imports" pb "github.com/topfans/backend/pkg/proto/user" ) func main() { // 创建 Dubbo 客户端(直连模式) // 注意:URL 格式为 tri://host:port,不需要包含接口名称 cli, err := client.NewClient( client.WithClientURL("tri://127.0.0.1:20000"), ) if err != nil { log.Fatalf("Failed to create client: %v", err) } // 创建 UserSocialService 客户端 // NewUserSocialService 会自动处理接口名称和连接 svc, err := pb.NewUserSocialService(cli) if err != nil { log.Fatalf("Failed to create UserSocialService: %v", err) } // 等待一下,确保连接建立 time.Sleep(100 * time.Millisecond) // 创建带超时的 context ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() // 测试注册功能 fmt.Println("=== 测试用户注册 ===") registerReq := &pb.RegisterRequest{ Mobile: "13800000001", Password: "password123", StarId: 1, Nickname: "测试用户", } registerResp, err := svc.Register(ctx, registerReq) if err != nil { log.Fatalf("注册失败: %v", err) } if registerResp.Base.Code != 0 { log.Fatalf("注册失败,错误码: %d, 错误信息: %s", registerResp.Base.Code, registerResp.Base.Message) } fmt.Printf("✅ 注册成功!\n") fmt.Printf("Token: %s\n", registerResp.AccessToken) fmt.Printf("用户ID: %d\n", registerResp.User.Id) fmt.Printf("用户手机号: %s\n", registerResp.User.Mobile) if registerResp.FanProfile != nil { fmt.Printf("粉丝档案昵称: %s\n", registerResp.FanProfile.Nickname) fmt.Printf("粉丝档案ID: %d\n", registerResp.FanProfile.Id) } // 测试登录功能 fmt.Println("\n=== 测试用户登录 ===") loginReq := &pb.LoginRequest{ Mobile: "13800000001", Password: "password123", } loginResp, err := svc.Login(ctx, loginReq) if err != nil { log.Fatalf("登录失败: %v", err) } if loginResp.Base.Code != 0 { log.Fatalf("登录失败,错误码: %d, 错误信息: %s", loginResp.Base.Code, loginResp.Base.Message) } fmt.Printf("✅ 登录成功!\n") fmt.Printf("Token: %s\n", loginResp.AccessToken) fmt.Printf("用户ID: %d\n", loginResp.User.Id) fmt.Printf("当前粉丝身份数: %d\n", len(loginResp.FanProfiles)) fmt.Println("\n✅ 所有测试通过!") }