//
|
// ForgotPasswordViewModel.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/5/27.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxCocoa
|
class ForgotPasswordViewModel: YYViewModel {
|
|
/// 手机号
|
let phoneNumber = BehaviorRelay<String>(value: "")
|
|
/// 密码
|
let password = BehaviorRelay<String>(value: "")
|
|
/// 验证码
|
let code = BehaviorRelay<String>(value: "")
|
|
/// 发送验证码
|
lazy var sendSMSCodeSubject = PublishSubject<RequestStatus>()
|
|
/// 验证验证码
|
lazy var checkCaptchaSubject = PublishSubject<RequestStatus>()
|
|
/// 更新手机号
|
lazy var updatePhoneSubject = PublishSubject<RequestStatus>()
|
|
/// 忘记密码
|
func forgotPassword() {
|
do {
|
try phoneNumber.value.checkPhoneNumber()
|
try code.value.checkSMSCode()
|
try password.value.checkPassword()
|
requestSubject.onNext(.loading)
|
APIManager.shared.provider.rx
|
.request(.forgetPassword(phone: phoneNumber.value, code: code.value, password: password.value))
|
.map(YYModel<Nothing>.self)
|
.validate()
|
.subscribe(onSuccess: {[unowned self] (model) in
|
self.requestSubject.onNext(.success(nil))
|
}) {[unowned self] (error) in
|
self.requestSubject.onNext(.error(error))
|
}.disposed(by: disposeBag)
|
|
} catch {
|
requestSubject.onNext(.error(error))
|
}
|
}
|
|
/// 发送验证码
|
func sendSMSCode(type: Int) {
|
do {
|
try phoneNumber.value.checkPhoneNumber()
|
try phoneNumber.value.checkPhoneNumberBind()
|
sendSMSCodeSubject.onNext(.loading)
|
APIManager.shared.provider.rx
|
.request(.queryCaptcha(phone: phoneNumber.value,type: type))
|
.map(YYModel<Nothing>.self)
|
.validate()
|
.subscribe(onSuccess: { [weak self] (model) in
|
self?.sendSMSCodeSubject.onNext(.success(model))
|
}) { (error) in
|
self.sendSMSCodeSubject.onNext(.error(error))
|
}
|
.disposed(by: disposeBag)
|
} catch {
|
self.sendSMSCodeSubject.onNext(.error(error))
|
}
|
|
}
|
|
/// 验证验证码
|
func checkCaptcha() {
|
do {
|
try code.value.checkSMSCode()
|
checkCaptchaSubject.onNext(.loading)
|
APIManager.shared.provider.rx
|
.request(.checkCaptcha(phone: phoneNumber.value, code: code.value))
|
.map(YYModel<CheckSMSCodeModel>.self)
|
.validate()
|
.subscribe(onSuccess: { [weak self] (model) in
|
guard let data = model.data else {return}
|
self?.checkCaptchaSubject.onNext(.success(data))
|
}) { (error) in
|
self.checkCaptchaSubject.onNext(.error(error))
|
}
|
.disposed(by: disposeBag)
|
} catch {
|
self.checkCaptchaSubject.onNext(.error(error))
|
}
|
}
|
|
/// 更新手机号
|
func updatePhone() {
|
do {
|
try phoneNumber.value.checkPhoneNumber()
|
try code.value.checkSMSCode()
|
updatePhoneSubject.onNext(.loading)
|
APIManager.shared.provider.rx
|
.request(.updatePhone(phone: phoneNumber.value, code: code.value))
|
.map(YYModel<CheckSMSCodeModel>.self)
|
.validate()
|
.subscribe(onSuccess: { [weak self] (model) in
|
guard let data = model.data else {return}
|
self?.updatePhoneSubject.onNext(.success(data))
|
}) { (error) in
|
self.updatePhoneSubject.onNext(.error(error))
|
}
|
.disposed(by: disposeBag)
|
} catch {
|
self.updatePhoneSubject.onNext(.error(error))
|
}
|
}
|
}
|