LoginViewController.swift 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. //
  2. // LoginViewController.swift
  3. // SocketChat
  4. //
  5. // Created by Justine on 16/5/20.
  6. // Copyright © 2016年 AppCoda. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import MBProgressHUD
  11. import SocketIOClientSwift
  12. class LoginViewController: UIViewController{
  13. var isallowsegue = false
  14. @IBOutlet weak var userName: UITextField!
  15. @IBOutlet weak var passWord: UITextField!
  16. var hud:MBProgressHUD = MBProgressHUD()
  17. var Response:ServerModel = ServerModel.init()
  18. var afusername:String?
  19. var afuserid:Int?
  20. @IBAction func LoginBtn(sender: UIButton) {
  21. //使用全局方法 去除空格
  22. var username = (userName.text!)
  23. var password = (passWord.text!)
  24. username = trimstring(username, trimchar: " ")
  25. password = trimstring(password, trimchar: " ")
  26. //后知后觉临时加入 存取用的username
  27. afusername = username
  28. //将用户转换为登陆对象传递
  29. hud.labelText = "连接中..."
  30. hud.show(true)
  31. self.checkUser(username,password: password)
  32. }
  33. func checkUser(username:String,password:String)->Void{
  34. defer{
  35. //该方法执行完成后 自动隐藏
  36. hud.hide(true, afterDelay: 1.0)
  37. }
  38. //网络请求用户名
  39. let url = CENTER_SERVER+username
  40. //validate默认statecode 200~299 为正常
  41. Alamofire.Manager.sharedInstance.request(.GET, url).responseJSON{ R in
  42. switch R.result {
  43. case .Failure(let error):
  44. print("---------error start----------")
  45. print(error)
  46. print("---------error end------------")
  47. return
  48. case .Success:
  49. guard let bigDic:NSMutableDictionary = R.result.value as? NSMutableDictionary else{
  50. print("//转字典后再取值给servermodel")
  51. return}
  52. let ret = bigDic["ret"] as! Int
  53. let msg = bigDic["msg"] as! String
  54. let dataDic:NSDictionary = bigDic["data"] as! NSDictionary
  55. //强转为ServerModel
  56. self.Response.ret = ret
  57. self.Response.msg = msg
  58. self.Response.data = ServerData.init(fromDictionary: dataDic)
  59. //self.Response = (R.result.value! as? ServerModel)
  60. print(self.Response)
  61. guard (self.Response.ret! == 1) else{
  62. //弹窗口显示 msg
  63. print("###############################")
  64. print(self.Response.msg)
  65. return
  66. }
  67. //返回各服务 字典对象data{appserver chatserver fileserver downserver等}
  68. let data = self.Response.data.toDictionary()
  69. //清空老数据
  70. ManagerUserDefault().DelServers()
  71. //储存各项服务器
  72. ManagerUserDefault().SetServers(data)
  73. let serverID = ManagerUserDefault().SelectUserDefault(SERVER_ID) as! String
  74. let tmpmsg:[String] = [username,password,serverID]
  75. let LoginMSG:LoginMsg = LoginMsg(fromStringarr: tmpmsg)
  76. //sendArr[1] = LoginMSG.toDictionary()
  77. let parm = LoginMSG.toDictionary()as! [String : AnyObject!]
  78. let url = (GET_SOCKET_SERVER as! String) + "/v1/user/login"
  79. print("################ parm ###############")
  80. let head = ["Content-Type":"application/json",
  81. "accept":"application/json",
  82. "accept-ecoding":"gzip, deflate",
  83. "accpet-language":"en-US,en;q=0.8"
  84. ]
  85. Alamofire.Manager.sharedInstance.request(Method.POST, url, parameters: parm , encoding: ParameterEncoding.JSON, headers: head).responseJSON(completionHandler: { (R) in
  86. guard R.result.error == nil else {
  87. print("############### error #############")
  88. print("operation: %@" ,R.response.debugDescription)
  89. print(R.result.error)
  90. return
  91. }
  92. print(R.result.value!)
  93. //结果转模型储存
  94. guard let bigDic1:NSMutableDictionary = R.result.value as? NSMutableDictionary else{
  95. print("Failed return //转字典后再取值给model")
  96. print("### My Define alamofire httprequest error ######")
  97. return
  98. }
  99. let issuccess = (bigDic1["success"] as! Int)
  100. if (issuccess != 1){
  101. //hud Alert
  102. print("登陆失败,服务端返回错误为\(bigDic1["message"])")
  103. }
  104. else{
  105. //存用户名 userID
  106. ManagerUserDefault().InsertUserDefault(self.afusername!, key: USERDEFAULT_USER_NAME)
  107. ManagerUserDefault().InsertUserDefault(self.afuserid!, key: USERDEFAULT_USER_ID)
  108. ManagerUserDefault().InsertUserDefault(self.passWord!, key: USERDEFAULT_USER_PWD)
  109. //根据返回值大字典bigDic1里的小字典data["isLocked"]判断是否登陆
  110. guard let dataDic1:NSDictionary = bigDic1["data"] as? NSDictionary else{
  111. print("大字典bigDic1转字典dataDic1转换失败")
  112. return
  113. }
  114. self.afuserid = dataDic1["id"] as? Int
  115. //未锁定
  116. guard (dataDic1["isLocked"]as! Bool) == false else{
  117. print("账号已锁定请联系管理员")
  118. self.hud.labelText = "账号已锁定请联系管理员"
  119. return
  120. }
  121. //未验证
  122. if (dataDic1["needSMS"]as! Bool) {
  123. //showBindbySMScontroller
  124. print("设备需要绑定,即将进入短信绑定界面")
  125. //清空老用户信息
  126. ManagerUserDefault().DeleteUserDefault(USERDEFAULT_USER_NAME)
  127. ManagerUserDefault().DeleteUserDefault(USERDEFAULT_USER_ID)
  128. print("进入前储存用户信息")
  129. self.showSMSVC()
  130. }
  131. //进入主界面 更新设备token
  132. else{
  133. //showRootViewController
  134. print("即将进入主界面")
  135. self.isallowsegue = true
  136. //APPDELEGATE.showRootViewContorller() 暂时不传参数
  137. self.performSegueWithIdentifier("ShowRootView", sender: nil)
  138. }
  139. }
  140. })
  141. }
  142. }
  143. }
  144. func showSMSVC(){
  145. let story = UIStoryboard(name: "Main", bundle: nil)
  146. let SMSVC = story.instantiateViewControllerWithIdentifier("SMSVC")
  147. self.presentViewController(SMSVC, animated: true, completion: nil)
  148. }
  149. override func viewDidLoad() {
  150. super.viewDidLoad()
  151. self.view.addSubview(hud)
  152. // Do any additional setup after loading the view.
  153. }
  154. override func didReceiveMemoryWarning() {
  155. super.didReceiveMemoryWarning()
  156. // Dispose of any resources that can be recreated.
  157. }
  158. /*
  159. // MARK: - Navigation
  160. // In a storyboard-based application, you will often want to do a little preparation before navigation
  161. override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  162. // Get the new view controller using segue.destinationViewController.
  163. // Pass the selected object to the new view controller.
  164. }
  165. */
  166. //转场景前 执行操作 写在调用之前,可能要进行参数的传递
  167. override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  168. if segue.identifier == "ShowRootView"{
  169. //进入主界面前 建立socket 链接 然后p_Auth认证用户可靠性
  170. //认证
  171. let controller = segue.destinationViewController as! RootViewController
  172. }
  173. print("返回错误或其他原因禁止转场")
  174. }
  175. override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
  176. print("返回错误或其他原因禁止转场")
  177. return self.isallowsegue
  178. }
  179. }