RegisterViewController.mm 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. //
  2. // RegisterViewController.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/10/17.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "RegisterViewController.h"
  9. #import "RegisterView.h"
  10. #import "UserAccountModel.h"
  11. #import "PrivacyPolicyVC.h"
  12. #import "NSString+Extention.h"
  13. @interface RegisterViewController ()<UserAccountModelDelegate>
  14. {
  15. UserAccountModel *accountModel; //账号相关功能接口管理器
  16. RegisterView *registerView; //注册视图
  17. NSInteger sendTime; //倒计时时间
  18. NSTimer *countDownTimer; //倒计时计时器
  19. }
  20. @end
  21. @implementation RegisterViewController
  22. - (void)viewDidLoad {
  23. [super viewDidLoad];
  24. //账号相关功能接口管理器
  25. accountModel = [[UserAccountModel alloc] init];
  26. accountModel.delegate = self;
  27. self.view.backgroundColor = [UIColor colorWithRed:240/255.0 green:240/255.0 blue:240/255.0 alpha:1];
  28. //初始化注册视图
  29. registerView = [[RegisterView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)];
  30. __weak typeof(self) weakSelf = self;
  31. //注册按钮点击事件处理
  32. registerView.registerBtnClicked = ^(NSString * _Nonnull userName, NSString * _Nonnull password1, NSString * _Nonnull password2, NSString * _Nonnull phoneStr, NSString * _Nonnull codeStr) {
  33. [weakSelf registerUserName:userName password1:password1 password2:password2 code:codeStr PhoneOrEmail:phoneStr];
  34. };
  35. //获取验证码点击事件处理
  36. registerView.getCodeBtnClicked = ^(NSString * _Nonnull phoneStr) {
  37. [weakSelf getCodeWithPhoneOrEmail:phoneStr];
  38. };
  39. //查看隐私政策事件处理
  40. registerView.btnPrivacyBtnClicked = ^{
  41. [weakSelf btnPrivacyBtnClicked];
  42. };
  43. self.view = registerView;
  44. //设置导航栏
  45. [self setNaviStyle];
  46. }
  47. //设置导航栏
  48. - (void)setNaviStyle {
  49. self.navigationItem.title = TS("Register_User");
  50. UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"new_back.png"] style:UIBarButtonItemStylePlain target:self action:@selector(popViewController)];
  51. self.navigationItem.leftBarButtonItem = leftBtn;
  52. }
  53. #pragma mark - button event 按钮点击事件
  54. -(void)popViewController
  55. {
  56. if([SVProgressHUD isVisible]){
  57. [SVProgressHUD dismiss];
  58. }
  59. [self.navigationController popViewControllerAnimated:YES];
  60. }
  61. #pragma mark 隐私政策按钮点击
  62. -(void)btnPrivacyBtnClicked
  63. {
  64. PrivacyPolicyVC *privacyVC = [[PrivacyPolicyVC alloc] init];
  65. [self.navigationController pushViewController:privacyVC animated:YES];
  66. }
  67. #pragma mark 注册按钮点击
  68. -(void)registerUserName:(NSString *)username password1:(NSString *)password1 password2:(NSString *)password2 code:(NSString *)code PhoneOrEmail:(NSString *)phoneEmail
  69. {
  70. registerView.errorTipLabel.text = @"";
  71. //判断是否为空
  72. if (username.length == 0||password1.length == 0||password2.length == 0) {
  73. registerView.errorTipLabel.text = TS("fill_Info");
  74. return;
  75. }
  76. //检测用户名是否合法
  77. if(![NSString isValidateUserName:username]){
  78. registerView.errorTipLabel.text = TS("illegal_username");
  79. return;
  80. }
  81. //密码两个密码是否相等
  82. if (![password1 isEqualToString:password2]) {
  83. registerView.errorTipLabel.text = TS("pass_notsame");
  84. return;
  85. }
  86. //检查密码格式
  87. if(![NSString isValidatePassword:password1]){
  88. registerView.errorTipLabel.text = TS("edit_pwd_error5");
  89. return;
  90. }
  91. if (registerView.jumpBtn.selected) { //跳过验证码注册
  92. [accountModel registerUserName:username password:password1 code:@"" PhoneOrEmail:@""];
  93. }else{
  94. //判断手机号和验证码是否为空
  95. if (phoneEmail.length == 0||code.length == 0) {
  96. registerView.errorTipLabel.text = TS("fill_Info");
  97. return;
  98. }
  99. //通过手机号或者邮箱注册
  100. [accountModel registerUserName:username password:password1 code:code PhoneOrEmail:phoneEmail];
  101. }
  102. [SVProgressHUD show];
  103. }
  104. #pragma mark 获取验证码
  105. -(void)getCodeWithPhoneOrEmail:(NSString *)phoneStr
  106. {
  107. registerView.errorTipLabel.text = @"";
  108. //手机号码或者邮箱不得为空
  109. if (registerView.phoneTF.text.length == 0) {
  110. registerView.errorTipLabel.text = TS("moblie_error");
  111. return;
  112. }
  113. //判断用户输入的邮箱还是手机号
  114. if([registerView.phoneTF.text containsString:@"@"]) {
  115. //邮箱注册
  116. if (![NSString isValidateEmail:registerView.phoneTF.text])//邮箱格式判断是否正确
  117. {
  118. registerView.errorTipLabel.text = TS("PhoneOrEmailError");
  119. return;
  120. }
  121. //获取验证码
  122. [accountModel getCodeWithPhoneOrEmailNumber:phoneStr];
  123. }
  124. else{
  125. //手机号注册,手机号初步判断是否有效
  126. if (registerView.phoneTF.text.length != 11) {
  127. registerView.errorTipLabel.text = TS("PhoneOrEmailError");
  128. return;
  129. }
  130. //获取验证码
  131. [accountModel getCodeWithPhoneOrEmailNumber:phoneStr];
  132. }
  133. [SVProgressHUD show];
  134. }
  135. //获取验证码倒计时处理
  136. -(void)countDownFunction
  137. {
  138. if(sendTime > 0) {//刷新倒计时时间
  139. NSString *getCodeBtnTitle = [NSString stringWithFormat:@"%d%@",(int)sendTime,TS("general_second")];
  140. [registerView.getCodeBtn setTitle:getCodeBtnTitle forState:UIControlStateNormal];
  141. sendTime--;
  142. registerView.jumpBtn.hidden = YES;
  143. }else{
  144. [registerView.getCodeBtn setTitle:TS("ReGetRegCode") forState:UIControlStateNormal];
  145. registerView.getCodeBtn.enabled = YES;
  146. //倒计时结束,手机号输入框显示
  147. registerView.phoneTF.hidden = NO;
  148. registerView.codeTF.hidden = YES;
  149. //定时器暂停
  150. [countDownTimer setFireDate:[NSDate distantFuture]];
  151. //倒计时结束且验证码栏未填,显示跳过按钮
  152. if (registerView.codeTF.text.length == 0) {
  153. registerView.jumpBtn.hidden = NO;
  154. }
  155. }
  156. }
  157. #pragma mark - funsdk 回调处理
  158. // 获取验证码回调
  159. - (void)getCodeDelegateResult:(long)reslut
  160. {
  161. [SVProgressHUD dismiss];
  162. if (reslut >= 0) {
  163. registerView.phoneTF.hidden = YES;
  164. registerView.codeTF.hidden = NO;
  165. //获取验证码按钮变为倒计时
  166. sendTime = 120;
  167. registerView.getCodeBtn.enabled = NO;
  168. countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDownFunction) userInfo:nil repeats:YES];
  169. }else{
  170. if(reslut != EE_AS_PHONE_CODE2 && reslut!= EE_AS_REGISTE_BY_EMAIL_CODE5){
  171. registerView.jumpBtn.hidden = NO;
  172. [SVProgressHUD showSuccessWithStatus:TS("EE_AS_SYS_GET_USER_INFO_CODE4")];
  173. }
  174. }
  175. }
  176. //用户注册回调
  177. -(void)registerUserNameDelegateResult:(long)reslut
  178. {
  179. [SVProgressHUD dismiss];
  180. if (reslut >= 0) {
  181. [SVProgressHUD showSuccessWithStatus:TS("Register_Success")];
  182. }
  183. else{
  184. registerView.errorTipLabel.text = TS("register_failure");
  185. }
  186. }
  187. @end