Преглед на файлове

【会员系统】新增个人信息模块接口串接

wanjun преди 4 месеца
родител
ревизия
f513668f41

+ 333 - 28
PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterManager.swift

@@ -265,24 +265,14 @@ class KMMemberCenterManager: NSObject {
             var token_type = ""
             var expires_in = ""
             var scope = ""
-            if let token = result_dict["refresh_token"] {
-                refresh_token = token as! String
-            }
-            if let token = result_dict["access_token"] {
-                access_token = token as! String
-            }
-            if let token = result_dict["token_type"] {
-                token_type = token as! String
-            }
-            if let token = result_dict["expires_in"] {
-                expires_in = token as! String
-            }
-            if let token = result_dict["scope"] {
-                scope = token as! String
-            }
+            if let token = result_dict["refresh_token"] { refresh_token = token as! String }
+            if let token = result_dict["access_token"] { access_token = token as! String }
+            if let token = result_dict["token_type"] { token_type = token as! String }
+            if let token = result_dict["expires_in"] { expires_in = token as! String }
+            if let token = result_dict["scope"] { scope = token as! String }
             let loginResult = KMMemberLoginResult(refreshToken: refresh_token, accessToken: access_token, tokenType: token_type, expiresIn: expires_in, scope: scope)
             
-            var result = KMMemberCenterResult(loginResult: loginResult)
+            let result = KMMemberCenterResult(loginResult: loginResult)
             result.code = code
             result.msg = message
 //            let error = NSError(domain: message, code: code)
@@ -331,18 +321,10 @@ class KMMemberCenterManager: NSObject {
                 var productId = ""
                 var uniqueSn = ""
                 var deviceName = ""
-                if let token = dict["device_id"] {
-                    device_id = token as! String
-                }
-                if let token = dict["productId"] {
-                    productId = token as! String
-                }
-                if let token = dict["uniqueSn"] {
-                    uniqueSn = token as! String
-                }
-                if let token = dict["deviceName"] {
-                    deviceName = token as! String
-                }
+                if let token = dict["device_id"] { device_id = token as! String }
+                if let token = dict["productId"] { productId = token as! String }
+                if let token = dict["uniqueSn"] { uniqueSn = token as! String }
+                if let token = dict["deviceName"] { deviceName = token as! String }
                 let list = KMMemberDeviceList(deviceId: device_id, productId: productId, uniqueSn: uniqueSn, appId: deviceName)
                 deviceLists.append(list)
             }
@@ -398,7 +380,330 @@ class KMMemberCenterManager: NSObject {
     
     // MARK: 个人信息模块
     
+    /**
+     @abstract              获取老带新已邀请人数
+     @param complete 回调
+     */
+    func getInviteNum(complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/getInviteNum"
+        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: nil) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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 resultInt: Int = dic["result"] as? Int ?? 0
+            let message: String = dic["msg"] as? String ?? ""
+            
+            let result = KMMemberCenterResult(code: code, msg: message, resultInt: resultInt)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+        }
+    }
+    
+    /**
+     @abstract              获取用户个人信息
+     @param complete 回调
+     */
+    func userInfo(complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/info"
+        KMRequestServer.requestServer.request(urlString: urlString, method: .get, params: nil) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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_dict: NSDictionary = dic["result"] as? NSDictionary ?? [:]
+            let message: String = dic["msg"] as? String ?? ""
+            
+            var userId = ""
+            var email = ""
+            var fullName = ""
+            var activeVIP = KMMemberUserInfo()
+            var aiPoint = 0
+            var validFlag = ""
+            var isHavePwd = ""
+            var isHaveAIDiscount = ""
+            var canTrail = ""
+            if let token = result_dict["id"] { userId = token as! String }
+            if let token = result_dict["email"] { email = token as! String }
+            if let token = result_dict["fullName"] { fullName = token as! String }
+            
+            let activeVIP_dict: NSDictionary = result_dict["activeVIP"] as? NSDictionary ?? [:]
+            var activeVIP_id = ""
+            var activeVIP_userId = ""
+            var activeVIP_status = 0
+            var activeVIP_endDate = ""
+            var activeVIP_payType = 0
+            var activeVIP_productName = ""
+            var activeVIP_levels = ""
+            var activeVIP_platforms = ""
+            var activeVIP_point = 0
+            var activeVIP_maxDeviceNum = 0
+            var activeVIP_paymentModel = ""
+            var activeVIP_isAi = ""
+            if let token = activeVIP_dict["id"] { activeVIP_id = token as! String }
+            if let token = activeVIP_dict["userId"] { activeVIP_userId = token as! String }
+            if let token = activeVIP_dict["status"] { activeVIP_status = token as! Int }
+            if let token = activeVIP_dict["endDate"] { activeVIP_endDate = token as! String }
+            if let token = activeVIP_dict["payType"] { activeVIP_payType = token as! Int }
+            if let token = activeVIP_dict["productName"] { activeVIP_productName = token as! String }
+            if let token = activeVIP_dict["levels"] { activeVIP_levels = token as! String }
+            if let token = activeVIP_dict["platforms"] { activeVIP_platforms = token as! String }
+            if let token = activeVIP_dict["point"] { activeVIP_point = token as! Int }
+            if let token = activeVIP_dict["maxDeviceNum"] { activeVIP_maxDeviceNum = token as! Int }
+            if let token = activeVIP_dict["paymentModel"] { activeVIP_paymentModel = token as! String }
+            if let token = activeVIP_dict["isAi"] { activeVIP_isAi = token as! String }
+            let userInfoActiveVIP = KMMemberUserInfoActiveVIP(id: activeVIP_id, userId: activeVIP_userId, status: activeVIP_status, endDate: activeVIP_endDate, payType: activeVIP_payType, productName: activeVIP_productName, levels: activeVIP_levels, platforms: activeVIP_platforms, point: activeVIP_point, maxDeviceNum: activeVIP_maxDeviceNum, paymentModel: activeVIP_paymentModel, isAi: activeVIP_isAi)
+
+            if let token = result_dict["aiPoint"] { aiPoint = token as! Int }
+            if let token = result_dict["validFlag"] { validFlag = token as! String }
+            if let token = result_dict["isHavePwd"] { isHavePwd = token as! String }
+            if let token = result_dict["isHaveAIDiscount"] { isHaveAIDiscount = token as! String }
+            if let token = result_dict["canTrail"] { canTrail = token as! String }
+
+            let userInfo = KMMemberUserInfo(id: userId, email: email, fullName: fullName, activeVIP: [userInfoActiveVIP], aiPoint: aiPoint, validFlag: validFlag, isHavePwd: isHavePwd, isHaveAIDiscount: isHaveAIDiscount, canTrail: canTrail)
+            
+            let result = KMMemberCenterResult(code: code, msg: message, userInfo: userInfo)
+//            let error = NSError(domain: message, code: code)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+
+        }
+    }
+    
+    /**
+     @abstract              退出登录
+     @param complete 回调
+     */
+    func userLogout(complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/logout"
+        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: nil) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+        }
+    }
+    
+    /**
+     @abstract              获取用户当前会员情况
+     @param complete 回调
+     */
+    func userRightList(complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso//user/rightList"
+        KMRequestServer.requestServer.request(urlString: urlString, method: .get, params: nil) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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_Array: [NSDictionary] = dic["result"] as? [NSDictionary] ?? [[:]]
+            let message: String = dic["msg"] as? String ?? ""
+            
+            var results: [KMMemberUserInfoActiveVIP] = []
+            for dict1 in result_Array {
+                var activeVIP_id = ""
+                var activeVIP_userId = ""
+                var activeVIP_status = 0
+                var activeVIP_endDate = ""
+                var activeVIP_payType = 0
+                var activeVIP_productName = ""
+                var activeVIP_levels = ""
+                var activeVIP_platforms = ""
+                var activeVIP_point = 0
+                var activeVIP_maxDeviceNum = 0
+                var activeVIP_paymentModel = ""
+                var activeVIP_isAi = ""
+                if let token = dict1["id"] { activeVIP_id = token as! String }
+                if let token = dict1["userId"] { activeVIP_userId = token as! String }
+                if let token = dict1["status"] { activeVIP_status = token as! Int }
+                if let token = dict1["endDate"] { activeVIP_endDate = token as! String }
+                if let token = dict1["payType"] { activeVIP_payType = token as! Int }
+                if let token = dict1["productName"] { activeVIP_productName = token as! String }
+                if let token = dict1["levels"] { activeVIP_levels = token as! String }
+                if let token = dict1["platforms"] { activeVIP_platforms = token as! String }
+                if let token = dict1["point"] { activeVIP_point = token as! Int }
+                if let token = dict1["maxDeviceNum"] { activeVIP_maxDeviceNum = token as! Int }
+                if let token = dict1["paymentModel"] { activeVIP_paymentModel = token as! String }
+                if let token = dict1["isAi"] { activeVIP_isAi = token as! String }
+                let userInfoActiveVIP = KMMemberUserInfoActiveVIP(id: activeVIP_id, userId: activeVIP_userId, status: activeVIP_status, endDate: activeVIP_endDate, payType: activeVIP_payType, productName: activeVIP_productName, levels: activeVIP_levels, platforms: activeVIP_platforms, point: activeVIP_point, maxDeviceNum: activeVIP_maxDeviceNum, paymentModel: activeVIP_paymentModel, isAi: activeVIP_isAi)
+                results.append(userInfoActiveVIP)
+            }
+
+            let result = KMMemberCenterResult(code: code, msg: message, activeVIPs: results)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+        }
+    }
+    
+    /**
+     @abstract              用户手动注销
+     @param code 邮箱验证码
+     @param complete 回调
+     */
+    func userLogOffForUser(code: String, complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/logOffForUser"
+        let params: [String: Any] = ["code": code,
+                                     "appId": "1"]
+        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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 message: String = dic["msg"] as? String ?? ""
+            let result_dict: NSDictionary = dic["result"] as? NSDictionary ?? [:]
+
+            var currentTime = ""
+            var logOffTime = ""
+            if let token = result_dict["currentTime"] { currentTime = token as! String }
+            if let token = result_dict["logOffTime"] { logOffTime = token as! String }
+            let logOff = KMMemberLogOff(currentTime: currentTime, logOffTime: logOffTime)
+            
+            let result = KMMemberCenterResult(code: code, msg: message, logOff: logOff)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+        }
+    }
     
+    /**
+     @abstract              撤销注销申请
+     @param complete 回调
+     */
+    func userRevokeCancel(_ complete: @escaping KMMemberCenterComplete) {
+        let token: String = KMMemberInfo.defaultManager.access_token
+        if token == "" {
+            return
+        }
+        
+        let urlString = configuration.activityBaseURL() + "/member-system-sso/user/revokeCancel"
+        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: nil) { requestSerializer in
+            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        } 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 message: String = dic["msg"] as? String ?? ""
+            let result_Bool: Bool = dic["result"] as? Bool ?? false
+
+            let result = KMMemberCenterResult(code: code, msg: message, result: result_Bool)
+            if code == 200 {
+                complete(true, result)
+            } else {
+                complete(false, result)
+            }
+        }
+    }
     
     // MARK: 商品模块
     

+ 114 - 0
PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterResult.swift

@@ -19,6 +19,13 @@ class KMMemberCenterResult: NSObject {
     var maxDeviceNum        : Int?   // 设备限制数
 
     var resultStr           : String?
+    var resultInt          : Int?
+
+    var userInfo   : KMMemberUserInfo? //用户信息
+    
+    var activeVIPs : [KMMemberUserInfoActiveVIP]? // 当前会员状况
+    
+    var logOff: KMMemberLogOff? // 手动注销
 
     /**
      @abstract 新会员系统重置密码 & 验证邮箱(重置密码) & 获取邮箱验证码 & 实时检查邮件验证码
@@ -50,11 +57,52 @@ class KMMemberCenterResult: NSObject {
         self.resultStr = resultStr
     }
     
+    // 老带新已邀请人数
+    init(code: Int, msg: String, resultInt: Int) {
+        self.code = code
+        self.msg = msg
+        self.resultInt = resultInt
+    }
+    
     // 获取用户登录设备列表
     init(deviceListResult: [KMMemberDeviceList], maxDeviceNum: Int) {
         self.deviceList_Result = deviceListResult
         self.maxDeviceNum = maxDeviceNum
     }
+    
+    /**
+     @abstract              获取用户个人信息
+     @param complete 回调
+     */
+    init(code: Int, msg: String, userInfo: KMMemberUserInfo) {
+        self.code = code
+        self.msg = msg
+        self.userInfo = userInfo
+    }
+    
+    /**
+     @abstract              获取用户当前的会员情况
+     @param code 返回值
+     @param msg 返回信息
+     @param activeVIPs 用户当前的会员情况
+     */
+    init(code: Int, msg: String, activeVIPs: [KMMemberUserInfoActiveVIP]) {
+        self.code = code
+        self.msg = msg
+        self.activeVIPs = activeVIPs
+    }
+    
+    /**
+     @abstract              用户手动注销
+     @param code 返回值
+     @param msg 返回信息
+     @param logOff 手动注销时间
+     */
+    init(code: Int, msg: String, logOff: KMMemberLogOff) {
+        self.code = code
+        self.msg = msg
+        self.logOff = logOff
+    }
 }
 
 class KMMemberLoginResult: NSObject {
@@ -108,3 +156,69 @@ class KMMemberDeviceList: NSObject {
         self.validFlag = validFlag
     }
 }
+
+
+class KMMemberUserInfo: NSObject {
+    var id              : String? // 【必需】用户id
+    var email           : String? // 【必需】邮箱
+    var fullName        : String? // 【必需】名称
+    var activeVIP       : [KMMemberUserInfoActiveVIP]? // 【必需】活跃的会员
+    var aiPoint         : Int?    // 【必需】ai点数
+    var validFlag       : String? // 【必需】注销(0), * 正常(1), * 停用(2), * 注销中(5);
+    var isHavePwd       : String? // 【必需】1是0否 是否设置了密码
+    var isHaveAIDiscount: String? // 【必需】1是0否 是否有ai折扣
+    var canTrail        : String? // 【必需】1是0否 是否能试用
+    
+    init(id: String? = "", email: String? = "", fullName: String? = "", activeVIP: [KMMemberUserInfoActiveVIP]? = [], aiPoint: Int? = 0, validFlag: String? = "", isHavePwd: String? = "", isHaveAIDiscount: String? = "", canTrail: String? = "") {
+        self.id = id
+        self.email = email
+        self.fullName = fullName
+        self.activeVIP = activeVIP
+        self.aiPoint = aiPoint
+        self.validFlag = validFlag
+        self.isHavePwd = isHavePwd
+        self.isHaveAIDiscount = isHaveAIDiscount
+        self.canTrail = canTrail
+    }
+}
+
+class KMMemberUserInfoActiveVIP: NSObject {
+    var id              : String? // 【可选】id   
+    var userId          : String? // 【可选】用户id
+    var status          : Int?    // 【可选】状态 0注册1订阅中2订阅过期3试用中4试用过期
+    var endDate         : String? // 【可选】到期时间
+    var payType         : Int?    // 【可选】0未开启自动续订 1自动续订
+    var productName     : String? // 【可选】产品名字
+    var levels          : String? // 【可选】会员等级 1是免费 2是标准 3是高级
+    var platforms       : String? // 【可选】支持的平台
+    var point           : Int?    // 【可选】剩余ai点数(svip才有)
+    var maxDeviceNum    : Int?    // 【可选】最大登录设备限制数
+    var paymentModel    : String? // 【可选】支付方式 付费模式(1自动续订(vip svip) 2单次付费(永久会员))
+    var isAi            : String? // 【可选】是否是ai产品(0否1是)
+    
+    init(id: String? = "", userId: String? = "", status: Int? = 0, endDate: String? = "", payType: Int? = 0, productName: String? = "", levels: String? = "", platforms: String? = "", point: Int? = 0, maxDeviceNum: Int? = 0, paymentModel: String? = "", isAi: String? = "") {
+        self.id = id
+        self.userId = userId
+        self.status = status
+        self.endDate = endDate
+        self.payType = payType
+        self.productName = productName
+        self.levels = levels
+        self.platforms = platforms
+        self.point = point
+        self.maxDeviceNum = maxDeviceNum
+        self.paymentModel = paymentModel
+        self.isAi = isAi
+    }
+}
+
+
+class KMMemberLogOff: NSObject {
+    var currentTime     : String? // 【必需】id
+    var logOffTime      : String? // 【必需】用户id
+    
+    init(currentTime: String? = "", logOffTime: String? = "") {
+        self.currentTime = currentTime
+        self.logOffTime = logOffTime
+    }
+}

+ 5 - 5
PDF Office/PDF Master/MemberCenter/Model/KMMemberInfo.swift

@@ -16,9 +16,9 @@ class KMMemberInfo: NSObject {
     /**
      登录
      */
-    var refresh_token: Bool = false
-    var access_token: Bool = false
-    var token_type: Bool = false
-    var expires_in: Bool = false
-    var scope: Bool = false
+    var refresh_token: String = ""
+    var access_token: String = ""
+    var token_type: String = ""
+    var expires_in: String = ""
+    var scope: String = ""
 }

+ 5 - 5
PDF Office/PDF Master/MemberCenter/ViewModel/KMSignUpViewModel.swift

@@ -76,7 +76,7 @@ class KMSignUpViewModel: ObservableObject {
     }
     
     func countDown(type: KMVerificationCodeType, count: Int = 60) -> Void {
-        getVerificationCode(type: type)
+        getVerificationCode(type)
         if emailErrorMessage.count > 0 {
             return
         }
@@ -200,7 +200,7 @@ class KMSignUpViewModel: ObservableObject {
      @abstract KMForgotPasswordView 登录弹窗(忘记密码)Next 按钮响应事件
      @param
      */
-    func forgotPasswordNextAction(complete: @escaping ForgotPasswordComplete) -> Void {
+    func forgotPasswordNextAction(_ complete: @escaping ForgotPasswordComplete) -> Void {
         if !isValidEmail() {
             emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             return
@@ -239,7 +239,7 @@ class KMSignUpViewModel: ObservableObject {
      @abstract KMEnterVerificationCodeView 登录弹窗(输入验证码)Next 按钮响应事件
      @param
      */
-    func enterVerificationCodeNextAction(complete: @escaping ForgotPasswordComplete) -> Void {
+    func enterVerificationCodeNextAction(_ complete: @escaping ForgotPasswordComplete) -> Void {
         if verificationCode.count <= 0 {
             emailErrorMessage = NSLocalizedString("*Please enter right Verification code", tableName: "MemberCenterLocalizable", comment: "")
             complete(false, "")
@@ -257,7 +257,7 @@ class KMSignUpViewModel: ObservableObject {
      @abstract 获取邮箱验证码
      @param
      */
-    func getVerificationCode(type: KMVerificationCodeType) -> Void {
+    func getVerificationCode(_ type: KMVerificationCodeType) -> Void {
         if !isValidEmail() {
             emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             return
@@ -290,7 +290,7 @@ class KMSignUpViewModel: ObservableObject {
      @abstract 获取邮箱验证码
      @param
      */
-    func resetPassword(complete: @escaping ForgotPasswordComplete) -> Void {
+    func resetPassword(_ complete: @escaping ForgotPasswordComplete) -> Void {
         KMMemberCenterManager.manager.resetPassword(email: email, verifyCode: verificationCode, password: password) { [weak self] error, wrapper  in
             guard let self = self else { return }
             let resultDict = wrapper! as KMMemberCenterResult