From 803737b574e56089cdb7638b44a6130badbfb7e4 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 20 Mar 2026 11:23:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B3=A8=E5=86=8C=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- punchnet/Views/Register/RegisterModel.swift | 35 ++++++++++++--------- punchnet/Views/Register/RegisterView.swift | 35 +++++++++++---------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/punchnet/Views/Register/RegisterModel.swift b/punchnet/Views/Register/RegisterModel.swift index 3a3148e..c7a6feb 100644 --- a/punchnet/Views/Register/RegisterModel.swift +++ b/punchnet/Views/Register/RegisterModel.swift @@ -14,8 +14,17 @@ class RegisterModel { enum Stage { case requestVerifyCode(username: String?) - case submitVerifyCode(username: String) - case setPassword(username: String) + case submitVerifyCode(username: String, sessionId: Int) + case setPassword(sessionId: Int) + } + + // 注册会话信息 + struct RegisterSession: Codable { + let sessionId: Int + + enum CodingKeys: String, CodingKey { + case sessionId = "session_id" + } } var stage: Stage = .requestVerifyCode(username: nil) @@ -26,35 +35,33 @@ class RegisterModel { "mac": SystemConfig.macAddressString(mac: SystemConfig.getMacAddress()) ] - func requestVerifyCode(username: String) async throws -> String { + func requestVerifyCode(username: String) async throws -> RegisterSession { var params: [String: Any] = [ "username": username ] params.merge(baseParams) {$1} - return try await SDLAPIClient.doPost(path: "/auth/sendVerifyCode", params: params, as: String.self) + return try await SDLAPIClient.doPost(path: "/register/sendVerfiyCode", params: params, as: RegisterSession.self) } - func submitVerifyCode(username: String, verifyCode: String) async throws -> String { + func submitVerifyCode(sessionId: Int, verifyCode: String) async throws -> String { var params: [String: Any] = [ - "username": username, - "verify_code": verifyCode, + "session_id": sessionId, + "code": verifyCode, ] params.merge(baseParams) {$1} - return try await SDLAPIClient.doPost(path: "/auth/submitVerifyCode", params: params, as: String.self) + return try await SDLAPIClient.doPost(path: "/register/verfiyCode", params: params, as: String.self) } - func register(username: String, password: String) async throws -> String { + func register(sessionId: Int, password: String) async throws -> String { var params: [String: Any] = [ - "username": username, - "password": password, - "version": SystemConfig.version_name, - "system": SystemConfig.systemInfo + "session_id": sessionId, + "password": password ] params.merge(baseParams) {$1} - return try await SDLAPIClient.doPost(path: "/auth/register", params: params, as: String.self) + return try await SDLAPIClient.doPost(path: "/register/submit", params: params, as: String.self) } } diff --git a/punchnet/Views/Register/RegisterView.swift b/punchnet/Views/Register/RegisterView.swift index 8ddf51b..6aa334b 100644 --- a/punchnet/Views/Register/RegisterView.swift +++ b/punchnet/Views/Register/RegisterView.swift @@ -21,10 +21,10 @@ struct RegisterRootView: View { switch registerModel.stage { case .requestVerifyCode(let username): RegisterRequestVerifyCodeView(username: username ?? "") - case .submitVerifyCode(let username): - RegisterSubmitVerifyCodeView(username: username) - case .setPassword(let username): - RegisterSetPasswordView(username: username) + case .submitVerifyCode(let username, let sessionId): + RegisterSubmitVerifyCodeView(username: username, sessionId: sessionId) + case .setPassword(let sessionId): + RegisterSetPasswordView(sessionId: sessionId) } } .transition(.asymmetric( @@ -81,10 +81,10 @@ struct RegisterRequestVerifyCodeView: View { var body: some View { VStack(spacing: 24) { - headerSection(title: "创建个人网络", subtitle: "输入手机号或邮箱开始注册") + headerSection(title: "创建个人网络", subtitle: "输入邮箱开始注册") VStack(spacing: 16) { - PunchTextField(icon: "person.crop.circle", placeholder: "手机号 / 邮箱", text: $username) + PunchTextField(icon: "person.crop.circle", placeholder: "邮箱", text: $username) } .frame(width: 280) @@ -113,26 +113,26 @@ struct RegisterRequestVerifyCodeView: View { Task { @MainActor in if username.isEmpty { self.showAlert = true - self.errorMessage = "手机号/邮箱为空" + self.errorMessage = "邮箱为空" self.isProcessing = false return } switch SDLUtil.identifyContact(username) { - case .email, .phone: + case .email: do { - //_ = try await self.registerModel.requestVerifyCode(username: username) + let registerSession = try await self.registerModel.requestVerifyCode(username: username) withAnimation(.spring(duration: 0.6, bounce: 0.2)) { - self.registerModel.stage = .submitVerifyCode(username: username) + self.registerModel.stage = .submitVerifyCode(username: username, sessionId: registerSession.sessionId) self.registerModel.transitionEdge = .trailing } } catch { self.showAlert = true self.errorMessage = error.localizedDescription } - case .invalid: + default: self.showAlert = true - self.errorMessage = "手机号/邮箱格式错误" + self.errorMessage = "邮箱格式错误" } self.isProcessing = false } @@ -143,7 +143,10 @@ struct RegisterRequestVerifyCodeView: View { // MARK: - 第二步:验证 struct RegisterSubmitVerifyCodeView: View { @Environment(RegisterModel.self) var registerModel + let username: String + let sessionId: Int + @State private var code: String = "" @State private var isProcessing = false @@ -247,9 +250,9 @@ struct RegisterSubmitVerifyCodeView: View { self.isProcessing = true Task { @MainActor in do { - //_ = try await self.registerModel.submitVerifyCode(username: username, verifyCode: self.code) + let result = try await self.registerModel.submitVerifyCode(sessionId: sessionId, verifyCode: self.code) withAnimation(.spring(duration: 0.6, bounce: 0.2)) { - self.registerModel.stage = .setPassword(username: username) + self.registerModel.stage = .setPassword(sessionId: sessionId) self.registerModel.transitionEdge = .trailing } } catch { @@ -264,7 +267,7 @@ struct RegisterSubmitVerifyCodeView: View { // MARK: - 第三步:设置密码 struct RegisterSetPasswordView: View { @Environment(RegisterModel.self) var registerModel - let username: String + let sessionId: Int @State private var password = "" @State private var confirm = "" @State private var isProcessing = false @@ -329,7 +332,7 @@ struct RegisterSetPasswordView: View { self.isProcessing = true Task { @MainActor in do { - // _ = try await self.registerModel.register(username: username, password: self.password) + let result = try await self.registerModel.register(sessionId: sessionId, password: self.password) } catch { self.errorMessage = error.localizedDescription }