LoginViewController.swift 8.2 KB

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