// // GiGaUserLoginVC.m // GIGA // // Created by lianxiang on 2018/8/20. // Copyright © 2018年 com.giga.ios. All rights reserved. // #import "GiGaUserLoginVC.h" #import "UINavigationBar+Custom.h" #import "PassWordResetVC.h" #import "GiGaRegistViewController.h" #import "GiGaUserDefault.h" #import "WXApi.h" #import "GiGaNetManager.h" #import "WeiIXinApiManager.h" #import "GiGaBaseAPiRequest.h" #import "GiGaUser.h" #import "GiGaServerConfig.h" #import "GIGAMBHUDHelper.h" @interface GiGaUserLoginVC () @property (weak, nonatomic) IBOutlet UIImageView *userImagView; @property (weak, nonatomic) IBOutlet UITextField *acountTextField; @property (weak, nonatomic) IBOutlet UITextField *passwordTextField; @property (weak, nonatomic) IBOutlet UIButton *loginBtn; @property (weak, nonatomic) IBOutlet UIButton *weiXinLoginBtn; @property (weak, nonatomic) IBOutlet UIButton *registBtn; @property (weak, nonatomic) IBOutlet UIButton *secretBtn; @end @implementation GiGaUserLoginVC - (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = NO; // Do any additional setup after loading the view from its nib. [self setUpX]; [self textFieldUI]; [self.view bringSubviewToFront:self.weiXinLoginBtn]; [self.registBtn addTarget:self action:@selector(registBtnAction) forControlEvents:UIControlEventTouchUpInside]; [self.loginBtn addTarget:self action:@selector(loginBtnAction:) forControlEvents:UIControlEventTouchUpInside]; [self.weiXinLoginBtn addTarget:self action:@selector(weiXinLoginAction) forControlEvents:UIControlEventTouchUpInside]; [self.secretBtn addTarget:self action:@selector(secretBtnAction:) forControlEvents:UIControlEventTouchUpInside]; NC_ADD_TARGET_NAME_OBJECT(self, @selector(WeiXinLongIn:), kWeiXinAuthrization_Success, nil) NC_ADD_TARGET_NAME_OBJECT(self, @selector(userRegistSuccsessNoti:), kUserRegistSucccess, nil) if (![WXApi isWXAppInstalled]) { self.weiXinLoginBtn.hidden = YES; } } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setClearNav]; } -(void)dealloc{ NC_REMOVE_NAME(self, kWeiXinAuthrization_Success,nil); } -(void)setUpX{ UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom]; rightBtn.frame = CGRectMake(0, 0, 40, 40); [rightBtn setImage:[UIImage imageNamed:@"btn_back"] forState:UIControlStateNormal]; [rightBtn addTarget:self action:@selector(rightBtnAction) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn]; } -(void)textFieldUI{ UIView *acountView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; UIImageView *acountViewIcon = [[UIImageView alloc] initWithFrame:CGRectMake(15,9, 12, 22)]; acountViewIcon.image = [UIImage imageNamed:@"ic_number"]; [acountView addSubview:acountViewIcon]; self.acountTextField.leftView = acountView; self.acountTextField.leftViewMode = UITextFieldViewModeAlways; // NSAttributedString *passholderText = [[NSAttributedString alloc] initWithString:@"密码" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:[UIColor redColor]}]; // self.passwordTextField.attributedPlaceholder = passholderText; UIView *passView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; UIImageView *passViewIcon = [[UIImageView alloc] initWithFrame:CGRectMake(15,8, 12, 22)]; passViewIcon.image = [UIImage imageNamed:@"icon_key"]; [passView addSubview:passViewIcon]; self.passwordTextField.leftView = passView; self.passwordTextField.leftViewMode = UITextFieldViewModeAlways; self.loginBtn.layer.masksToBounds = YES; self.loginBtn.layer.cornerRadius = self.loginBtn.frame.size.height / 2; NSMutableAttributedString *attri = [[NSMutableAttributedString alloc] init]; NSTextAttachment *attch = [[NSTextAttachment alloc] init]; attch.image = [UIImage imageNamed:@"ic_wechat"]; attch.bounds = CGRectMake(0,-4, 12.9, 12.5); NSAttributedString *imastr=[NSAttributedString attributedStringWithAttachment:attch]; [attri appendAttributedString:imastr]; NSAttributedString *titleStr = [[NSAttributedString alloc] initWithString:@" 微信账号登录" attributes:@{NSFontAttributeName:[UIFont fontWithName:@"PingFangSC-Semibold" size:10],NSForegroundColorAttributeName:[UIColor colorWithRed:187/255.0 green:187/255.0 blue:187/255.0 alpha:1/1.0]}]; [attri appendAttributedString:titleStr]; [self.weiXinLoginBtn setAttributedTitle:attri forState:UIControlStateNormal]; } -(void)rightBtnAction{ [self dismissViewControllerAnimated:YES completion:nil]; } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } } -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (IBAction)forgetPassBtn:(id)sender { PassWordResetVC *passVC= [[PassWordResetVC alloc] init]; [self.navigationController pushViewController:passVC animated:YES]; [self.navigationController.navigationBar setBackgroundImage]; } #pragma mark - 去注册 -(void)registBtnAction{ GiGaRegistViewController *registVC = [[GiGaRegistViewController alloc] init]; [self.navigationController pushViewController:registVC animated:YES]; } #pragma mark 手机号登录 -(void)loginBtnAction:(UIButton *)btn{ if (self.acountTextField.text == nil) { GIGA_ShowToast(@"请输入手机号"); return; } if (![GiGaHelper isPhoneNumber:self.acountTextField.text]) { GIGA_ShowToast(@"请输入正确手机号"); return; } if (self.passwordTextField.text == nil) { GIGA_ShowToast(@"密码不能为空"); return; } if (self.passwordTextField.text.length <= 6) { GIGA_ShowToast(@"密码长度不能小于六位字符"); return; } [self loginWithAction:btn]; } -(void)loginWithAction:(UIButton *)btn{ NSDictionary *weixinInfoDic = [GiGaUserDefault getWeiXinAccessToenDic]; NSDictionary *params = nil; if (weixinInfoDic) { params = @{ @"username":self.acountTextField.text, @"password":self.passwordTextField.text, @"openid":weixinInfoDic[@"openid"], }; }else{ params = @{ @"username":self.acountTextField.text, @"password":self.passwordTextField.text }; } //[GIGAMBHUDHelper messageAddto:self.view title:@"登录中..."]; [self.view makeToastActivity:CSToastPositionCenter]; NSString *url = [NSString stringWithFormat:@"%@sys/v1/login",[GiGaServerConfig getMainUrl]]; [GiGaNetManager userLoginrequest:url params:params completionHandler:^(NSURLResponse *response, NSDictionary *resDic, NSError * _Nullable error) { GILog(@"%@",resDic); [self.view hideToastActivity]; GiGaAPIResult *result = [[GiGaAPIResult alloc] initWithDictionary:resDic]; GILog(@"**登陆***\n code:%ld\n message:%@\n *******\n",result.code,result.message); if (result.success) { [self userloginSussecess:resDic]; }else{ GIGA_ShowToast(result.message); } }]; } -(void)saveUserData{ //埋点 [MobClick endEvent:MobClick_UserLogin]; [GiGaUserDefault saveUserId:@"123"]; } #pragma mark - 微信登录 // 授权 -(void)weiXinLoginAction{ if ([WXApi isWXAppInstalled]) { SendAuthReq * req = [[SendAuthReq alloc] init] ; req.scope = @"snsapi_userinfo"; req.state = @"wx_oauth2_authorization_state"; [WXApi sendReq:req]; } } //授权成功获取access_token -(void)WeiXinLongIn:(NSNotification *)notification{ //检查网络 //[self testNetworkStatus]; [self.view makeToastActivity:CSToastPositionCenter]; NSDictionary *param = @{ @"appid":WXin_APPID, @"secret":WXin_APPSecret, @"code":notification.object[@"code"], @"grant_type":@"authorization_code" }; [WeiIXinApiManager weixinAccessTokeRequstUrl:@"https://api.weixin.qq.com/sns/oauth2/access_token" parameters:param success:^(id response) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:nil]; GILog(@"access_token back -->%@",dict); [GiGaUserDefault saveWeiXinaccesstokenInfoWithDic:dict]; [self requstWeiXinUserinfo]; } failure:^(NSError *err) { [self.view makeToast:err.localizedDescription]; GILog(@"access_token err-->%@",err.localizedDescription); }]; } //获取微信用户信息 -(void)requstWeiXinUserinfo{ NSDictionary *tokenDic = [GiGaUserDefault getWeiXinAccessToenDic]; NSDictionary *param = @{ @"openid":tokenDic[@"openid"], @"access_token":tokenDic[@"access_token"], }; [WeiIXinApiManager getWeiXinUserInfoUrl:@"https://api.weixin.qq.com/sns/userinfo" parameters:param success:^(id response) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:nil]; GILog(@"weixinUser info back -->%@",dict); [self gigaUploadweixinInfo:dict]; } failure:^(NSError *err) { [self.view makeToast:err.localizedDescription]; GILog(@"weixin_userinfoApi err-->%@",err.localizedDescription); }]; } //上传微信用户信息 -(void)gigaUploadweixinInfo:(NSDictionary *)weiXinUserinfo{ [self.view makeToastActivity:CSToastPositionCenter]; NSString *url = [NSString stringWithFormat:@"%@sys/v1/wechatlogin",[GiGaServerConfig getMainUrl]]; [GiGaNetManager requestMethod:RequestPostMethod Url:url params:weiXinUserinfo responseBlock:^(NSDictionary *responseDict, NSDictionary *responseHeaderFields, NSError *error) { [self.view hideToastActivity]; if (!error) { if ([responseDict[@"code"] integerValue] == 0) { //[self userloginSussecess:responseDict]; [self.view makeToast:responseDict[@"msg"] duration:2.0 position:CSToastPositionCenter]; [self jxt_showAlertWithTitle:@"温馨提示" message:@"请先绑定或注册手机号" appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) { alertMaker.addActionCancelTitle(@"知道了"); } actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) { }]; }else if([responseDict[@"code"] integerValue] == 500){ //登录流程待定 // [self.view makeToast:responseDict[@"msg"] duration:2.0 position:CSToastPositionCenter]; // [self jxt_showAlertWithTitle:@"温馨提示" message:@"请绑定手机号" appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) { // // } actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) { // // }]; }else{ [self.view makeToast:responseDict[@"msg"] duration:2.0 position:CSToastPositionCenter]; } }else{ [self.view makeToast:@"用户信息提交异常"]; GILog(@"上传微信用户信息error:\n%@",error.localizedDescription); } }]; } -(void)userloginSussecess:(NSDictionary *)resDic{ //token [GiGaUserDefault saveToken:resDic[@"token"]]; //埋点 [MobClick endEvent:MobClick_UserLogin]; //暂定123 登陆标志 [GiGaUserDefault saveUserId:@"123"]; GIGA_WIndowTost(@"登录成功!"); [self dismissViewControllerAnimated:YES completion:nil]; } //接收注册成功通知 -(void)userRegistSuccsessNoti:(NSNotification *)noti{ self.acountTextField.text =(NSString *)noti.object; } //密码加密按钮 -(void)secretBtnAction:(UIButton *)btn{ btn.selected = !btn.selected; if (btn.selected) { //秘文 self.passwordTextField.secureTextEntry = YES; [btn setImage:[UIImage imageNamed:@"btn_tab_notselect"] forState:UIControlStateSelected]; }else{ self.passwordTextField.secureTextEntry = NO; [btn setImage:[UIImage imageNamed:@"btn_tab_desplay"] forState:UIControlStateNormal]; } } @end