Selaa lähdekoodia

【会员系统】完善重置密码流程

wanjun 4 kuukautta sitten
vanhempi
commit
e26e8ada51

+ 66 - 37
PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterManager.swift

@@ -68,38 +68,74 @@ class KMMemberCenterManager: NSObject {
      */
     func resetPassword(email: String, verifyCode: String, password: String, _ complete: @escaping KMMemberCenterComplete) {
         let urlString = configuration.activityBaseURL() + "/member-system-sso/auth/memberResetPassword"
-        let params: [String: Any] = ["email": email,
+//        var escapedString = q
+//        escapedString = String(data: escapedString.data(using: .utf8)!, encoding: .utf8)!
+        let paraDict: [String: Any] = ["email": email,
                                      "verifyCode": verifyCode,
                                      "appId": "1",
                                      "password": password]
-        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
-            
-        } completion: { [weak self] (task, responseObject, error) in
-            var dic: NSDictionary = [:]
-            if error == nil, let responseObject = responseObject as? NSDictionary {
-                dic = responseObject
-            } else {
-                var info = responseObject
-                if let error = error {
-                    if let data = error.userInfo["com.alamofire.serialization.response.error.data"] as? Data {
-                        info = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? NSDictionary
-                    }
-                }
-                dic = (info as? NSDictionary) ?? [:]
-            }
+        let postData  = try! JSONSerialization.data(withJSONObject: paraDict)
+        var request = URLRequest(url: URL(string: urlString)!,timeoutInterval: Double.infinity)
+        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
+        request.httpMethod = "POST"
+        request.httpBody = postData
+        let task = URLSession.shared.dataTask(with: request) { data, response, error in
+           guard let data = data else {
+               print(String(describing: error))
+               return
+           }
+            let jsonObject = try? JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary ?? [:]
+            if jsonObject != nil {
+                let code: Int = jsonObject!["code"] as? Int ?? 0
+                let result_bool: Bool = jsonObject!["result"] as? Bool ?? false
+                let message: String = jsonObject!["msg"] as? String ?? ""
 
-            let code: Int = dic["code"] as? Int ?? 0
-            let result_bool: Bool = dic["result"] as? Bool ?? false
-            let message: String = dic["msg"] as? String ?? ""
-
-            let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
-//            let error = NSError(domain: message, code: code)
-            if code == 200 {
-                complete(true, result)
+                let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
+                if code == 200 {
+                    complete(true, result)
+                } else {
+                    complete(false, result)
+                }
             } else {
-                complete(false, result)
+                complete(false, KMMemberCenterResult(code: 0, msg: "unknown error", result: false))
             }
         }
+        task.resume()
+
+        
+//        let urlString = configuration.activityBaseURL() + "/member-system-sso/auth/memberResetPassword"
+//        let params: [String: Any] = ["email": email,
+//                                     "verifyCode": verifyCode,
+//                                     "appId": "1",
+//                                     "password": password]
+//        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
+//            
+//        } completion: { [weak self] (task, responseObject, error) in
+//            var dic: NSDictionary = [:]
+//            if error == nil, let responseObject = responseObject as? NSDictionary {
+//                dic = responseObject
+//            } else {
+//                var info = responseObject
+//                if let error = error {
+//                    if let data = error.userInfo["com.alamofire.serialization.response.error.data"] as? Data {
+//                        info = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? NSDictionary
+//                    }
+//                }
+//                dic = (info as? NSDictionary) ?? [:]
+//            }
+//
+//            let code: Int = dic["code"] as? Int ?? 0
+//            let result_bool: Bool = dic["result"] as? Bool ?? false
+//            let message: String = dic["msg"] as? String ?? ""
+//
+//            let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
+////            let error = NSError(domain: message, code: code)
+//            if code == 200 {
+//                complete(true, result)
+//            } else {
+//                complete(false, result)
+//            }
+//        }
     }
     
     /**
@@ -108,11 +144,10 @@ class KMMemberCenterManager: NSObject {
      @param complete 回调
      */
     func emailVerification(email: String, _ complete: @escaping KMMemberCenterComplete) {
-        let urlString = configuration.activityBaseURL() + "/member-system-sso/auth/validEmail"
-        let params: [String: Any] = ["email": email]
-        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
+        let urlString = String(format: "%@/member-system-sso/auth/validEmail?email=%@", configuration.activityBaseURL(), email)
+        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: nil) { requestSerializer in
             
-        } completion: { [weak self] (task, responseObject, error) in
+        } completion: { (task, responseObject, error) in
             var dic: NSDictionary = [:]
             if error == nil, let responseObject = responseObject as? NSDictionary {
                 dic = responseObject
@@ -131,7 +166,6 @@ class KMMemberCenterManager: NSObject {
             let message: String = dic["msg"] as? String ?? ""
 
             let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
-//            let error = NSError(domain: message, code: code)
             if code == 200 {
                 complete(true, result)
             } else {
@@ -160,7 +194,7 @@ class KMMemberCenterManager: NSObject {
                                      "appId": "1"]
         KMRequestServer.requestServer.request(urlString: urlString, method: .get, params: params) { requestSerializer in
             
-        } completion: { [weak self] (task, responseObject, error) in
+        } completion: { (task, responseObject, error) in
             var dic: NSDictionary = [:]
             if error == nil, let responseObject = responseObject as? NSDictionary {
                 dic = responseObject
@@ -179,7 +213,6 @@ class KMMemberCenterManager: NSObject {
             let message: String = dic["msg"] as? String ?? ""
 
             let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
-//            let error = NSError(domain: message, code: code)
             if code == 200 {
                 complete(true, result)
             } else {
@@ -207,7 +240,7 @@ class KMMemberCenterManager: NSObject {
                                      "account": account,
                                      "code": code,
                                      "appId": "1"]
-        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
+        KMRequestServer.requestServer.request(urlString: urlString, method: .get, params: params) { requestSerializer in
             
         } completion: { [weak self] (task, responseObject, error) in
             var dic: NSDictionary = [:]
@@ -228,7 +261,6 @@ class KMMemberCenterManager: NSObject {
             let message: String = dic["msg"] as? String ?? ""
 
             let result = KMMemberCenterResult(code: code, msg: message, result: result_bool)
-//            let error = NSError(domain: message, code: code)
             if code == 200 {
                 complete(true, result)
             } else {
@@ -567,10 +599,7 @@ class KMMemberCenterManager: NSObject {
         if token == "" {
             return
         }
-//        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/logout"
         let uuid: String = GetHardwareUUID() ?? ""
-//        let params: [String: Any] = ["deviceSign": uuid,
-//                                     "appId": "1"]
         let urlString = String(format: "%@/member-system-sso/user/logout?deviceSign=%@&appId=1", configuration.activityBaseURL(),uuid)
         KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: nil) { requestSerializer in
             requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")

+ 52 - 38
PDF Office/PDF Master/MemberCenter/View/KMEnterNewPasswordView.swift

@@ -62,8 +62,8 @@ class KMEnterNewPasswordView: KMBaseXibView {
         passwordTextField.delegate = self
         passwordTextField1.delegate = self
         
-        passwordTextField.stringValue = viewModel.password
-        passwordTextField1.stringValue = viewModel.password
+//        passwordTextField.stringValue = viewModel.password
+//        passwordTextField1.stringValue = viewModel.password
         passwordErrorLabel.isHidden = !viewModel.passwordError()
 
         resetPasswordsLabel.textColor = NSColor(named: "000000")
@@ -89,48 +89,46 @@ class KMEnterNewPasswordView: KMBaseXibView {
         }
     }
     
-    private func skipSignUpView() -> Void {
-        guard let parentView = self.superview else { return }
-        if parentView is NSBox {
+    private func skipSignUpView() {
+        DispatchQueue.main.async { [weak self] in
+            guard let self = self, let parentView = self.superview else { return }
+            
             let model = KMSignUpViewModel()
-            model.email = viewModel.email
-            model.password = viewModel.password
+            model.email = self.viewModel.email
+            model.password = self.viewModel.password
             model.signUpState = .password
             let signUpView = KMSignUpView(model: model, superView: parentView)
-            NSAnimationContext.runAnimationGroup { context in
-                context.duration = 0.3
-                self.animator().alphaValue = 0
-            } completionHandler: {
-                self.removeFromSuperview()
-                signUpView.alphaValue = 0
-                (parentView as! NSBox).contentView = signUpView
-                NSAnimationContext.runAnimationGroup({ context in
+            
+            if let parentBox = parentView as? NSBox {
+                NSAnimationContext.runAnimationGroup { context in
                     context.duration = 0.3
-                    signUpView.animator().alphaValue = 1
-                }, completionHandler: nil)
-            }
-        } else {
-            guard let parentView = self.superview else { return }
-            let model = KMSignUpViewModel()
-            model.email = viewModel.email
-            model.password = viewModel.password
-            model.signUpState = .password
-            let signUpView = KMSignUpView(model: model, superView: parentView)
-            NSAnimationContext.runAnimationGroup { context in
-                context.duration = 0.3
-                self.animator().alphaValue = 0
-            } completionHandler: {
-                self.removeFromSuperview()
-                signUpView.alphaValue = 0
-                parentView.addSubview(signUpView)
-                NSAnimationContext.runAnimationGroup({ context in
+                    self.animator().alphaValue = 0
+                } completionHandler: {
+                    self.removeFromSuperview()
+                    signUpView.alphaValue = 0
+                    parentBox.contentView = signUpView
+                    NSAnimationContext.runAnimationGroup({ context in
+                        context.duration = 0.3
+                        signUpView.animator().alphaValue = 1
+                    }, completionHandler: nil)
+                }
+            } else {
+                NSAnimationContext.runAnimationGroup { context in
                     context.duration = 0.3
-                    signUpView.animator().alphaValue = 1
-                }, completionHandler: nil)
+                    self.animator().alphaValue = 0
+                } completionHandler: {
+                    self.removeFromSuperview()
+                    signUpView.alphaValue = 0
+                    parentView.addSubview(signUpView)
+                    NSAnimationContext.runAnimationGroup({ context in
+                        context.duration = 0.3
+                        signUpView.animator().alphaValue = 1
+                    }, completionHandler: nil)
+                }
             }
         }
     }
-    
+
     // MARK: Bind Method
     
     func bindViewModel() -> Void {
@@ -147,6 +145,16 @@ class KMEnterNewPasswordView: KMBaseXibView {
                 self?.passwordErrorLabel.isHidden = false
             }
             .store(in: &cancellables)
+        viewModel.$password
+            .receive(on: RunLoop.main)
+            .sink { [weak self] newValue in
+                if newValue.count <= 30 && newValue.count >= 0 {
+                    self?.viewModel.passwordErrorMessage = ""
+                } else {
+                    self?.viewModel.passwordErrorMessage = NSLocalizedString("*Please enter right Password code", tableName: "MemberCenterLocalizable", comment: "")
+                }
+            }
+            .store(in: &cancellables)
     }
 
     // MARK: Action Method
@@ -160,9 +168,15 @@ class KMEnterNewPasswordView: KMBaseXibView {
         viewModel.resetPassword() { [weak self] success, msg   in
             guard let self = self else { return }
             if success {
-                
+                self.skipSignUpView()
             } else {
-                
+                let alert = NSAlert()
+                alert.messageText = NSLocalizedString(msg, comment: "")
+                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                let result = alert.runModal()
+                if (result == .alertFirstButtonReturn) {
+                    self.skipSignUpView()
+                }
             }
         }
     }

+ 3 - 3
PDF Office/PDF Master/MemberCenter/View/KMEnterNewPasswordView.xib

@@ -83,12 +83,12 @@
                                     <rect key="frame" x="1" y="1" width="277" height="26"/>
                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                     <subviews>
-                                        <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="WIx-HY-fqK">
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="WIx-HY-fqK">
                                             <rect key="frame" x="0.0" y="0.0" width="277" height="26"/>
                                             <subviews>
                                                 <secureTextField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HGf-ua-bPm">
-                                                    <rect key="frame" x="8" y="5" width="243" height="16"/>
-                                                    <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" drawsBackground="YES" usesSingleLineMode="YES" id="fg3-dM-O24">
+                                                    <rect key="frame" x="6" y="5" width="247" height="16"/>
+                                                    <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" usesSingleLineMode="YES" id="fg3-dM-O24">
                                                         <font key="font" metaFont="system"/>
                                                         <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
                                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>

+ 36 - 18
PDF Office/PDF Master/MemberCenter/View/KMEnterVerificationCodeView.swift

@@ -96,11 +96,12 @@ class KMEnterVerificationCodeView: KMBaseXibView {
         verifficationTextField.delegate = self
 
         resetPasswordsLabel.textColor = NSColor(named: "000000")
-        tipLabel.font = NSFont.SFMediumFontWithSize(20)
+        resetPasswordsLabel.font = NSFont.SFMediumFontWithSize(20)
         tipLabel.textColor = NSColor(named: "0E1114")
-        resetPasswordsLabel.font = NSFont.SFProTextRegularFont(12)
-        verifficationTextField.stringValue = viewModel.email
+        tipLabel.font = NSFont.SFProTextRegularFont(12)
 
+        sendLabel.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
+        sendLabel.font = NSFont.SFProTextRegularFont(16)
         verifficationErrorLabel.isHidden = viewModel.passwordError()
         verifficationErrorLabel.textColor = NSColor(named: "FA1E5D")
         verifficationErrorLabel.font = NSFont.SFProTextRegularFont(9)
@@ -111,28 +112,29 @@ class KMEnterVerificationCodeView: KMBaseXibView {
 
     private func sendBoxRefresh() -> Void {
         sendLabel.stringValue = viewModel.sendContent
-        if viewModel.sendContent == NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") {
+        if viewModel.sendContent == NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") ||
+            viewModel.sendContent == NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
             if viewModel.email.count > 0 {
-                sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
+                if viewModel.isValidEmail() {
+                    sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
+                } else {
+                    sendBox.fillColor = NSColor(named: "273C62_0.4") ?? NSColor.blue
+                }
             } else {
                 sendBox.fillColor = NSColor(named: "273C62_0.4") ?? NSColor.blue
             }
+            sendLabel.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
         } else {
-            if viewModel.sendContent == NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
-                sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
-            } else {
-                sendBox.fillColor = NSColor(named: "DADBDE") ?? NSColor.gray
-                sendLabel.stringValue = String(format: "%@s", viewModel.sendContent)
-            }
+            sendBox.fillColor = NSColor(named: "DADBDE") ?? NSColor.gray
+            sendLabel.stringValue = String(format: "%@s", viewModel.sendContent)
+            sendLabel.textColor = NSColor(named: "0E1114") ?? NSColor.black
         }
     }
     
     private func skipEnterNewPasswordView() -> Void {
         guard let parentView = self.superview else { return }
         if parentView is NSBox {
-            let model = KMSignUpViewModel()
-            model.email = viewModel.email
-            let codeView = KMEnterVerificationCodeView(model: model, superView: parentView)
+            let codeView = KMEnterNewPasswordView(model: viewModel, superView: parentView)
             NSAnimationContext.runAnimationGroup { context in
                 context.duration = 0.3
                 self.animator().alphaValue = 0
@@ -147,9 +149,7 @@ class KMEnterVerificationCodeView: KMBaseXibView {
             }
         } else {
             guard let parentView = self.superview else { return }
-            let model = KMSignUpViewModel()
-            model.email = viewModel.email
-            let codeView = KMEnterVerificationCodeView(model: model, superView: parentView)
+            let codeView = KMEnterNewPasswordView(model: viewModel, superView: parentView)
             NSAnimationContext.runAnimationGroup { context in
                 context.duration = 0.3
                 self.animator().alphaValue = 0
@@ -178,7 +178,21 @@ class KMEnterVerificationCodeView: KMBaseXibView {
             .receive(on: RunLoop.main)
             .sink { [weak self] newValue in
                 self?.verifficationErrorLabel.stringValue = newValue
-                self?.verifficationErrorLabel.isHidden = false
+                if self?.viewModel.passwordErrorMessage == "" {
+                    self?.verifficationErrorLabel.isHidden = true
+                } else {
+                    self?.verifficationErrorLabel.isHidden = false
+                }
+            }
+            .store(in: &cancellables)
+        viewModel.$verificationCode
+            .receive(on: RunLoop.main)
+            .sink { [weak self] newValue in
+                if newValue.count <= 6 && newValue.count >= 0 {
+                    self?.viewModel.passwordErrorMessage = ""
+                } else {
+                    self?.viewModel.passwordErrorMessage = NSLocalizedString("*Please enter right Verification code", tableName: "MemberCenterLocalizable", comment: "")
+                }
             }
             .store(in: &cancellables)
     }
@@ -186,6 +200,10 @@ class KMEnterVerificationCodeView: KMBaseXibView {
     // MARK: Action Method
     
     @IBAction func nextButtonAction(_ sender: NSButton) {
+        if viewModel.verificationCode.count <= 0 || viewModel.verificationCode.count > 6 || !viewModel.isValidVerificationCode() {
+            viewModel.passwordErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
+            return
+        }
         viewModel.passwordErrorMessage = ""
         viewModel.enterVerificationCodeNextAction() { [weak self] success, msg   in
             guard let self = self else { return }

+ 5 - 1
PDF Office/PDF Master/MemberCenter/View/KMForgotPasswordView.swift

@@ -139,7 +139,7 @@ class KMForgotPasswordView: KMBaseXibView {
             guard let parentView = self.superview else { return }
             let model = KMSignUpViewModel()
             model.email = viewModel.email
-            let codeView = KMEnterVerificationCodeView(model: model, superView: parentView)
+            let codeView = KMEnterVerificationCodeView(model: viewModel, superView: parentView)
             NSAnimationContext.runAnimationGroup { context in
                 context.duration = 0.3
                 self.animator().alphaValue = 0
@@ -170,6 +170,10 @@ class KMForgotPasswordView: KMBaseXibView {
     // MARK: Action Method
     
     @IBAction func nextButtonAction(_ sender: NSButton) {
+        if viewModel.email.count <= 0 || viewModel.email.count > 100 || !viewModel.isValidEmail() {
+            viewModel.emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
+            return
+        }
         viewModel.emailErrorMessage = ""
         viewModel.forgotPasswordNextAction() { [weak self] success, msg in
             guard let self = self else { return }

+ 7 - 1
PDF Office/PDF Master/MemberCenter/View/KMSignUpView.swift

@@ -271,9 +271,11 @@ class KMSignUpView: KMBaseXibView {
             } else {
                 sendBox.fillColor = NSColor(named: "273C62_0.4") ?? NSColor.blue
             }
+            sendLabel.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
         } else {
             sendBox.fillColor = NSColor(named: "DADBDE") ?? NSColor.gray
             sendLabel.stringValue = String(format: "%@s", viewModel.sendContent)
+            sendLabel.textColor = NSColor(named: "0E1114") ?? NSColor.black
         }
     }
     
@@ -315,7 +317,11 @@ class KMSignUpView: KMBaseXibView {
             .receive(on: RunLoop.main)
             .sink { [weak self] newValue in
                 self?.passwordErrorLabel.stringValue = newValue
-                self?.passwordErrorLabel.isHidden = false
+                if self?.viewModel.passwordErrorMessage == "" {
+                    self?.passwordErrorLabel.isHidden = true
+                } else {
+                    self?.passwordErrorLabel.isHidden = false
+                }
             }
             .store(in: &cancellables)
         viewModel.$sendContent

+ 29 - 73
PDF Office/PDF Master/MemberCenter/ViewModel/KMSignUpViewModel.swift

@@ -233,12 +233,7 @@ class KMSignUpViewModel: ObservableObject {
      @param
      */
     func forgotPasswordNextAction(_ complete: @escaping ForgotPasswordComplete) -> Void {
-        if !isValidEmail() {
-            emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
-            return
-        }
-
-        if email.count <= 0 {
+        if email.count <= 0 || email.count > 100 || !isValidEmail() {
             emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
@@ -246,31 +241,14 @@ class KMSignUpViewModel: ObservableObject {
             return
         }
         
-        KMMemberCenterManager.manager.emailVerification(email: email) { [weak self] error, wrapper  in
+        KMMemberCenterManager.manager.emailVerification(email: email) { [weak self] success, wrapper  in
             guard let self = self else { return }
             let resultDict = wrapper! as KMMemberCenterResult
             let msg = resultDict.msg! as String
-            if error {
-                print("错误信息:%@", msg as Any)
-                let alert = NSAlert()
-                alert.messageText = NSLocalizedString(msg, comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
-                alert.beginSheetModal(for: NSApp.mainWindow!)
+            if success {
+                complete(true, msg)
             } else {
-                if resultDict.code == 200 {
-                    let result: Bool = resultDict.result!
-                    if result {
-                        complete(true, msg)
-                    } else {
-                        complete(false, msg)
-                    }
-                } else {
-                    print("错误信息:%@", msg as Any)
-                    let alert = NSAlert()
-                    alert.messageText = NSLocalizedString(msg, comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
-                    alert.beginSheetModal(for: NSApp.mainWindow!)
-                }
+                complete(false, msg)
             }
         }
     }
@@ -280,12 +258,23 @@ class KMSignUpViewModel: ObservableObject {
      @param
      */
     func enterVerificationCodeNextAction(_ complete: @escaping ForgotPasswordComplete) -> Void {
-        if verificationCode.count <= 0 || !isValidVerificationCode() {
+        if verificationCode.count <= 0 || verificationCode.count > 6 || !isValidVerificationCode() {
             emailErrorMessage = NSLocalizedString("*Please enter right Verification code", tableName: "MemberCenterLocalizable", comment: "")
             complete(false, "")
             return
         }
-        complete(true, "")
+        KMMemberCenterManager.manager.checkVerificationCode(type: .reset, account: email, code: verificationCode) { [weak self] success, wrapper  in
+            guard let self = self else { return }
+            let resultDict = wrapper! as KMMemberCenterResult
+            let msg = resultDict.msg
+            let result: Bool = resultDict.result ?? false
+            if success {
+                complete(true, "")
+            } else {
+                self.passwordErrorMessage = NSLocalizedString("*Please enter right Verification code", tableName: "MemberCenterLocalizable", comment: "")
+                complete(false, "")
+            }
+        }
     }
     
     /**
@@ -297,67 +286,34 @@ class KMSignUpViewModel: ObservableObject {
             emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
-        KMMemberCenterManager.manager.getVerificationCode(action: type, receiver: email) { [weak self] error, wrapper  in
+        KMMemberCenterManager.manager.getVerificationCode(action: type, receiver: email) { [weak self] success, wrapper  in
             guard let self = self else { return }
             let resultDict = wrapper! as KMMemberCenterResult
             let msg = resultDict.msg
             let result: Bool = resultDict.result ?? false
-            if error {
-                if !result {
-                    self.emailErrorMessage = NSLocalizedString("*Please enter right Address", tableName: "MemberCenterLocalizable", comment: "")
-                    print("错误信息:%@", msg as Any)
-                    let alert = NSAlert()
-                    alert.messageText = NSLocalizedString(msg!, comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
-                    alert.beginSheetModal(for: NSApp.mainWindow!)
-                }
+            if success {
+                print("验证邮箱成功")
             } else {
-                if resultDict.code == 200 {
-                    if !result {
-                        self.emailErrorMessage = NSLocalizedString("*Please enter right Address", tableName: "MemberCenterLocalizable", comment: "")
-                    } else {
-                        print("验证邮箱成功")
-                    }
-                } else {
-                    print("错误信息:%@", msg as Any)
-                    let alert = NSAlert()
-                    alert.messageText = NSLocalizedString(msg!, comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
-                    alert.beginSheetModal(for: NSApp.mainWindow!)
-                }
+                self.emailErrorMessage = NSLocalizedString("*Please enter right Address", tableName: "MemberCenterLocalizable", comment: "")
             }
         }
     }
     
     /**
-     @abstract 获取邮箱验证
+     @abstract 重置密码
      @param
      */
     func resetPassword(_ complete: @escaping ForgotPasswordComplete) -> Void {
-        KMMemberCenterManager.manager.resetPassword(email: email, verifyCode: verificationCode, password: password) { [weak self] error, wrapper  in
+        if password.count <= 0 || verificationCode.count > 30 {
+            passwordErrorMessage = NSLocalizedString("*Please enter right Password code", tableName: "MemberCenterLocalizable", comment: "")
+            return
+        }
+        KMMemberCenterManager.manager.resetPassword(email: email, verifyCode: verificationCode, password: password) { [weak self] success, wrapper  in
             guard let self = self else { return }
             let resultDict = wrapper! as KMMemberCenterResult
             let msg = resultDict.msg! as String
             let result: Bool = resultDict.result ?? false
-            if error {
-                if !result {
-                    print("错误信息:%@", msg as Any)
-                    complete(false, msg)
-                }
-            } else {
-                if resultDict.code == 200 {
-                    if !result {
-                        print("错误信息:%@", msg as Any)
-                        complete(false, msg)
-                    } else {
-                        print("验证邮箱成功")
-                        complete(false, msg)
-                    }
-                } else {
-                    print("错误信息:%@", msg as Any)
-                    complete(false, msg)
-                }
-            }
+            complete(success, msg)
         }
     }
 }