LoginViewController.swift.orig 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. //
  2. // LoginViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/6/28.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftyUserDefaults
  10. import AlamofireObjectMapper
  11. import Alamofire
  12. import SwiftyTimer
  13. import SwiftyJSON
  14. import ObjectMapper
  15. import CocoaLumberjack
  16. import Promises
  17. class LoginViewController: UIViewController {
  18. @IBOutlet weak var iconImageView: UIImageView!
  19. private var viewModel:OOLoginViewModel = {
  20. return OOLoginViewModel()
  21. }()
  22. @IBOutlet weak var startImage: UIImageView!
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25. //load image
  26. iconImageView.image = OOCustomImageManager.default.loadImage(.launch_logo)
  27. switch PROJECTMODE {
  28. case 1:
  29. self.startImage.image = UIImage(named: "startImage_szslb")
  30. case 2:
  31. self.startImage.image = UIImage(named: "startImage_hzcgw")
  32. case 3:
  33. self.startImage.image = UIImage(named: "startImage_hljdx")
  34. default:
  35. self.startImage.image = UIImage(named: "startImage")
  36. }
  37. }
  38. override func viewWillAppear(_ animated: Bool) {
  39. super.viewWillAppear(animated)
  40. NotificationCenter.default.addObserver(self, selector: #selector(receiveBindCompleted(customNotification:)), name: OONotification.bindCompleted.notificationName, object: nil)
  41. }
  42. override func viewDidAppear(_ animated: Bool) {
  43. super.viewDidAppear(animated)
  44. //Defaults[.isFirstTime] = nil
  45. if AppConfigSettings.shared.isFirstTime == true {
  46. AppConfigSettings.shared.isFirstTime = false
  47. let pVC = OOGuidePageController(nibName: "OOGuidePageController", bundle: nil)
  48. //let navVC = ZLNavigationController(rootViewController: pVC)
  49. self.presentVC(pVC)
  50. }else{
  51. self.startFlowForPromise()
  52. }
  53. }
  54. <<<<<<< HEAD
  55. // MARK:- 主流程执行
  56. func startFlow() {
  57. startPromise().then { (dData) -> Promise<String> in
  58. return self.checkDataPromise(dData)
  59. }.then { (checkResult) -> Promise<String> in
  60. return self.downConfigPromise()
  61. }.then { (downResult) -> Promise<O2Account> in
  62. return self.getUserInfoPromise()
  63. }.then { (account) -> Promise<O2Account> in
  64. return self.autoLoginPromise(account)
  65. }.then { (account) -> Promise<Bool> in
  66. return self.loginActionByCookie(account)
  67. }.then { result in
  68. //成功跳转到Main场景
  69. let account = Defaults[.account]
  70. // UMessage.addAlias((account?.id!)!, type: "UMengAlias", response: { (result, error) in
  71. // print("\(result),\(error)")
  72. // })
  73. self.forwardToSegue("autoLoginSegue")
  74. }.catch { (loginErr) in
  75. let err = loginErr as! OOLoginError
  76. =======
  77. func startFlowForPromise() {
  78. //本地 -> 校验 -> 下载NodeAPI -> 下载configInfo -> 自动登录
  79. AppConfigSettings.shared.currentUpdate = nil
  80. viewModel.verifiyLocalBindNode().then {
  81. (model) -> Promise<OONodeModel> in
  82. return self.viewModel.verifiyBindNode(model: model)
  83. }.then { (model) -> Promise<OONodeModel> in
  84. return self.viewModel.downloadNodeInfo(model: model)
  85. }.then({ (model) -> Promise<(OONodeModel,Bool)> in
  86. return self.viewModel.verConfigInfo(model: model)
  87. }).then({ (result) -> Promise<Bool> in
  88. if result.1 == true {
  89. return self.viewModel.downloadConfigInfo(model: result.0)
  90. }else{
  91. return Promise {
  92. fulfill,reject in
  93. fulfill(true)
  94. }
  95. }
  96. })
  97. .then { (result) -> Promise<Bool> in
  98. if let _ = AppConfigSettings.shared.account {
  99. return self.viewModel.loginWithToken()
  100. }else{
  101. return self.viewModel.loginWithCrendentail(credential: AppConfigSettings.shared.unitModel?.mobile ?? "", codeAnswer: AppConfigSettings.shared.unitModel?.code ?? "")
  102. }
  103. }.then({ (result) in
  104. //跳转到主页
  105. //self.forwardToSegue("autoLoginSegue")
  106. let destVC = OOTabBarController.genernateVC()
  107. UIApplication.shared.keyWindow?.rootViewController = destVC
  108. UIApplication.shared.keyWindow?.makeKeyAndVisible()
  109. }).catch { loginError in
  110. let err = loginError as! OOLoginError
  111. >>>>>>> v2.0
  112. switch err {
  113. case .verifiyBindNodeError(_):
  114. //校验绑定结点信息错误
  115. self.forwardToSegue("bindPhoneSegue")
  116. break
  117. case .downloadNodeInfoError(_):
  118. //下载节点API信息错误
  119. self.forwardToSegue("bindPhoneSegue")
  120. break
  121. case .defaultBindNodeInfoError:
  122. //是否已经绑定过,没有绑定过报此错
  123. self.forwardToSegue("bindPhoneSegue")
  124. break
  125. case .loginWithCredentialError(_):
  126. self.forwardToSegue("loginSystemSegue")
  127. //自动登录出错
  128. break
  129. case .loginWithCookieError(_):
  130. self.forwardToSegue("loginSystemSegue")
  131. //自动登录出错
  132. break
  133. case .noAccountError:
  134. //没有此帐号,应该是使用用户名和密码登录
  135. self.forwardToSegue("loginSystemSegue")
  136. break
  137. case .downloadConfigInfoError(let error):
  138. self.showError(title: error.errorDescription!)
  139. break
  140. default:
  141. break
  142. }
  143. }
  144. }
  145. // MARK:- 到不同的segue
  146. func forwardToSegue(_ segueIdentitifer:String){
  147. DispatchQueue.main.async {
  148. self.performSegue(withIdentifier: segueIdentitifer, sender: nil)
  149. }
  150. }
  151. @objc func receiveBindCompleted(customNotification:Notification){
  152. self.startFlowForPromise()
  153. }
  154. @IBAction func unBindComplete(_ sender: UIStoryboardSegue){
  155. //绑定完成,执行
  156. self.startFlowForPromise()
  157. }
  158. @IBAction func show(_ sender: UITapGestureRecognizer) {
  159. //ProgressHUD.show("系统加截中,请稍候...", interaction: true)
  160. }
  161. //登录后返回执行此方法
  162. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  163. }
  164. deinit {
  165. NotificationCenter.default.removeObserver(self)
  166. }
  167. }