LoginViewController.swift 6.92 KB
//
//  LoginViewController.swift
//  ParentAssistant
//
//  Created by 葛建军 on 2018/3/12.
//  Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
//

import UIKit
//登录
class LoginViewController: UIViewController,UITextFieldDelegate {
    @IBOutlet var topView: NSLayoutConstraint!
    @IBOutlet var iconImageView: UIImageView!//系统头像
    @IBOutlet var phoneTextField: UITextField!//电话号码
    @IBOutlet var passwordTextField: UITextField!//密码
    @IBOutlet var passwordHiddenBtn: UIButton!//查看密码按钮
    @IBOutlet var loginBtn: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        layoutSubViews()
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.navigationBar.isHidden = false
    }
    // MARK: - 设置控件属性
    func layoutSubViews(){
        self.navigationController?.navigationBar.isHidden = false
        self.navigationItem.title = "登录"
        topView.constant = (getScreenHeight()-325)/3
        passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected)
        NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.getPhoneNumber(_:)), name: NSNotification.Name(rawValue: MyPhoneNumberNotification.getPhoneNumber), object: nil)
    }
    // MARK: - 根据键盘调整高度
    @objc func keyboardWIllChange(_ noti: Notification){
        let userInfo:NSDictionary=noti.userInfo! as NSDictionary
        let endFrame=(userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
        if endFrame?.origin.y == getScreenHeight() {
            topView.constant = (getScreenHeight()-325)/3
        }else{
            topView.constant = (endFrame?.origin.y)!-375
        }
    }
    @objc func getPhoneNumber(_ noti: Notification){
        let userInfo:NSDictionary=noti.userInfo! as NSDictionary
        phoneTextField.text = userInfo["phoneNumber"] as? String
    }
    
    // MARK: - 密码显示与否
    @IBAction func passwordHiddenAction(_ sender: UIButton) {
        let selected = passwordHiddenBtn.isSelected
        passwordHiddenBtn.isSelected = !selected
        passwordTextField.isSecureTextEntry = selected
    }
    // MARK: - 设置键盘消失
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }
    // MARK: - UITextFieldDelegate
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }
    func textFieldDidEndEditing(_ textField: UITextField) {
        if textField==passwordTextField && phoneTextField.text! != "" && passwordTextField.text! != ""{
            loginBtn.isUserInteractionEnabled = true
            loginBtn.backgroundColor = UIColorFromRGB(0xC5DAFF)
        }else{
            loginBtn.isUserInteractionEnabled = false
            loginBtn.backgroundColor = UIColor.lightGray
        }
    }
    func isMobilePhoneNumber(_ mobile:String)->Bool {
        let str="^1[0-9]{10}"
        return NSPredicate(format: "SELF MATCHES %@", str).evaluate(with: mobile)
    }
    // MARK: - 登录按钮
    @IBAction func loginAction(_ sender: UIButton) {
        self.view.endEditing(true)
        SVProgressHUD.show(withStatus: "登录中...")
        HTTPServer.shared.login(completionHandler: { (str, error) in
            SVProgressHUD.dismiss()
            let json=JSON.fromString(str)
            if let ret=json{
                let er=ret["error"].string
                if let errorStr=er{
                    let Strings=errorStr.components(separatedBy: ":")
                    if Strings.count >= 2 {
                        switch Strings[1] {
                        //用户关联多个身份,请使用学事号登录:100
                        case "101"://用户认证身份不存在:101
                            appDelegate.window!.makeToast("用户认证身份不存在,请进行账号激活。")
                            break
                        //用户帐号或密码错误:102
                        case "103":// 用户不存在:103
                            appDelegate.window!.makeToast("该号码不存在,请联系客服400-826-2468")
                            break
                        default:
                            appDelegate.window!.makeToast(errorStr)
                            break
                        }
                    }else{
                        appDelegate.window!.makeToast(errorStr)
                    }
                }else if ret["access_token"].stringValue != ""{
                    AccountManager.shared.setTokenInfo(tokenInfo: ret)
                    AccountManager.shared.saveToken(tokenInfo: ret)
                    AccountManager.shared.refreshUserInfo(self.phoneTextField.text!, completionHandler: { (finish) in
                        if finish{
                            self.loadUserInfo()
                        }else{
                            appDelegate.window!.makeToast("身份获取失败")
                            SVProgressHUD.dismiss()
                        }
                    })
                }else{
                    SVProgressHUD.dismiss()
                    appDelegate.window!.makeToast("登录失败,请稍后重试")
                }
            }else{
                SVProgressHUD.dismiss()
                appDelegate.window!.makeToast("登录失败")
            }
        }, phone: phoneTextField.text!, password: passwordTextField.text!)
    }
    func loadUserInfo(){
        let ID=AccountManager.shared.rawUserInfo!.contentData()["userid"].stringValue
        YXMessageManager.share.loginWithYX(account: ID, token: ID.md5()) { (success) in
            SVProgressHUD.dismiss()
            if !success {
                AccountManager.shared.logOut()
                appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试")
            }else{
                //云信登录成功
                self.navigationController?.popToRootViewController(animated: true)
            }
        }
    }
    
    // MARK: - 注册页面跳转
    @IBAction func registerAction(_ sender: UIButton) {
        let vc = Story.instantiateViewControllerWithIdentifier("RegisterViewController", storyName: "My") as! RegisterViewController
        self.navigationController?.pushViewController(vc, animated: true)
    }
    // MARK: - 找回密码
    @IBAction func getPasswordAction(_ sender: UIButton) {
        let vc = Story.instantiateViewControllerWithIdentifier("GetBackPasswordViewController", storyName: "My") as! GetBackPasswordViewController
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}