YMPasswordLoginViewModel.m 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. //
  2. // YMPasswordLoginViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/5.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMPasswordLoginViewModel.h"
  9. #import "YMRetrievePasswordViewModel.h"
  10. #import "YMRegisterViewModel.h"
  11. #import "YMImproveInfoViewModel.h"
  12. #import <WechatOpenSDK/WXApi.h>
  13. @interface YMPasswordLoginViewModel ()<WXApiDelegate>
  14. /// 登录按钮有效性
  15. @property (nonatomic, strong, readwrite) RACSignal *validLoginSignal;
  16. @end
  17. @implementation YMPasswordLoginViewModel
  18. - (void)ym_initialize{
  19. [super ym_initialize];
  20. /// 登录按钮有效性
  21. self.validLoginSignal = [[[RACSignal combineLatest:@[
  22. RACObserve(self, mobile),
  23. RACObserve(self, password)
  24. ] reduce:^(NSString *mobile, NSString *password) {
  25. //是否不为空
  26. return @(!OCStringIsEmpty(mobile) && !OCStringIsEmpty(password));
  27. }] distinctUntilChanged] takeUntil:self.rac_willDeallocSignal];
  28. }
  29. - (void)accountPasswordLoginRequest{
  30. @weakify(self)
  31. [ZCHUDHelper showWithStatus:@"加载中..."];
  32. [LCHttpHelper requestWithURLString:PhoneLogin parameters:@{
  33. @"mobile":self.mobile?:@"",
  34. @"password":self.password?:@"",
  35. @"agreement":@"1",
  36. } needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  37. // @strongify(self)
  38. NSDictionary* dict = (NSDictionary*)responseObject;
  39. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  40. if (code == 0) {
  41. [ZCHUDHelper dismiss];
  42. YOUPAILCUserModel* userModel = [YOUPAILCUserModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
  43. [LCSaveModel saveUserModel:userModel];
  44. [LCSaveData saveTokenString:userModel.youpaipuserinfo.youpaiptoken];//保存token
  45. [LCSaveData saveLoginMark:YES];
  46. [OCUserDefaults setObject:userModel.youpaipuserinfo.youpaipuser_id forKey:kUSER_ID];
  47. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipgender == 1 ? YES : NO forKey:kIS_FEMALE_GENDER];
  48. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipis_anchor == 1 ? YES : NO forKey:kIS_GODDESS_CERTIFIED];
  49. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipvip == 0 ? NO : YES forKey:kIS_VIP];
  50. [OCUserDefaults synchronize];
  51. [LCHttpHelper requestWithURLString:GiftConfig parameters:nil needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  52. NSDictionary* dict = (NSDictionary*)responseObject;
  53. NSLog(@"GiftConfig == %@",dict);
  54. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  55. if (code==0) {//成功
  56. NSMutableArray *giftArray = [NSMutableArray array];
  57. giftArray = [YOUPAILCGiftModel mj_objectArrayWithKeyValuesArray:[[dict objectForKey:@"data"]objectForKey:@"gift_list"]];
  58. for (int i = 0; i<giftArray.count; i++) {
  59. YOUPAILCGiftModel *model = giftArray[i];
  60. if (model.youpaipsvga.length > 0 ) {
  61. [LCTools giftSVGAWithSvgaUrlStr:model.youpaipsvga];
  62. }
  63. }
  64. }
  65. } failure:^(NSError *error) {
  66. }];
  67. if (userModel.youpaipuserinfo.youpaiptype == 2) {
  68. //是特殊用户
  69. [LCSaveData saveIsspecial:YES];
  70. }
  71. //未完善资料,进入完善资料页面
  72. if (userModel.youpaipuserinfo.youpaipfinish_status == 0) {
  73. YMImproveInfoViewModel *improveInfoVM = [[YMImproveInfoViewModel alloc]initWithParams:@{
  74. @"inviteCode":[LCTools getPasteString]?:@""
  75. }];
  76. [YMRouter openURL:stringFormat(@"%@%@", YM_ROUTER_URL_PREFIX, YM_ROUTER_IMPROVE_INFO) withUserInfo:@{
  77. RouterViewModel:improveInfoVM
  78. } completion:nil];
  79. }else{
  80. //已经完善资料
  81. [[YOUPAILCIMLoginManager sharedCenter]IMLogin:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id token:[LCSaveModel getUserModel].youpaipuserinfo.youpaipim_token];
  82. [LCTools changeRootToTabbar];
  83. }
  84. }else{
  85. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  86. }
  87. } failure:^(NSError *error) {
  88. [ZCHUDHelper showTitle:error.localizedDescription];
  89. }];
  90. }
  91. - (void)sendWechatAuth{
  92. if(![WXApi isWXAppInstalled]){
  93. [ZCHUDHelper showTitle:@"未安装微信或版本过低"];
  94. return;
  95. }
  96. SendAuthReq *req = [[SendAuthReq alloc] init];
  97. req.scope = @"snsapi_userinfo";
  98. req.state = kAccountWeChatSendAuth;
  99. [WXApi sendAuthReq:req viewController:[YMGlobalUtils getCurrentVC] delegate:self completion:nil];
  100. }
  101. - (void)getWechatLoginAuthWithCode:(NSString*)code{
  102. @weakify(self)
  103. [ZCHUDHelper showWithStatus:@"授权中..."];
  104. [LCHttpHelper requestWithURLString:WXLogin parameters:@{
  105. @"code":code
  106. } needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  107. @strongify(self)
  108. NSDictionary* dict = (NSDictionary*)responseObject;
  109. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  110. if (code == 0) {
  111. NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}];
  112. if (OCDictionaryIsEmpty(data)) {
  113. [ZCHUDHelper showTitle:@"授权失败 请重新尝试"];
  114. return;
  115. } else {
  116. [ZCHUDHelper dismiss];
  117. [self wechatLoginRequest:data];
  118. }
  119. }else{
  120. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  121. }
  122. } failure:^(NSError *error) {
  123. [ZCHUDHelper showTitle:error.localizedDescription];
  124. }];
  125. }
  126. - (void)wechatLoginRequest:(NSDictionary*)params{
  127. @weakify(self)
  128. [ZCHUDHelper showWithStatus:@"登录中..."];
  129. [LCHttpHelper requestWithURLString:WXThird parameters:params needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  130. @strongify(self)
  131. NSDictionary* dict = (NSDictionary*)responseObject;
  132. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  133. if (code == 0) {
  134. [ZCHUDHelper dismiss];
  135. YOUPAILCUserModel* userModel = [YOUPAILCUserModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
  136. [LCSaveModel saveUserModel:userModel];
  137. [LCSaveData saveTokenString:userModel.youpaipuserinfo.youpaiptoken];//保存token
  138. [LCSaveData saveLoginMark:YES];
  139. [OCUserDefaults setObject:userModel.youpaipuserinfo.youpaipuser_id forKey:kUSER_ID];
  140. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipgender == 1 ? YES : NO forKey:kIS_FEMALE_GENDER];
  141. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipis_anchor == 1 ? YES : NO forKey:kIS_GODDESS_CERTIFIED];
  142. [OCUserDefaults setBool:userModel.youpaipuserinfo.youpaipvip == 0 ? NO : YES forKey:kIS_VIP];
  143. [OCUserDefaults synchronize];
  144. [LCHttpHelper requestWithURLString:GiftConfig parameters:nil needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  145. NSDictionary* dict = (NSDictionary*)responseObject;
  146. NSLog(@"GiftConfig == %@",dict);
  147. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  148. if (code==0) {//成功
  149. NSMutableArray *giftArray = [NSMutableArray array];
  150. giftArray = [YOUPAILCGiftModel mj_objectArrayWithKeyValuesArray:[[dict objectForKey:@"data"]objectForKey:@"gift_list"]];
  151. for (int i = 0; i<giftArray.count; i++) {
  152. YOUPAILCGiftModel *model = giftArray[i];
  153. if (model.youpaipsvga.length > 0 ) {
  154. [LCTools giftSVGAWithSvgaUrlStr:model.youpaipsvga];
  155. }
  156. }
  157. }
  158. } failure:^(NSError *error) {
  159. }];
  160. if (userModel.youpaipuserinfo.youpaiptype == 2) {
  161. //是特殊用户
  162. [LCSaveData saveIsspecial:YES];
  163. }
  164. //未完善资料,进入完善资料页面
  165. if (userModel.youpaipuserinfo.youpaipfinish_status == 0) {
  166. YMImproveInfoViewModel *improveInfoVM = [[YMImproveInfoViewModel alloc]initWithParams:@{
  167. @"inviteCode":[LCTools getPasteString]?:@""
  168. }];
  169. [YMRouter openURL:stringFormat(@"%@%@", YM_ROUTER_URL_PREFIX, YM_ROUTER_IMPROVE_INFO) withUserInfo:@{
  170. RouterViewModel:improveInfoVM
  171. } completion:nil];
  172. }else{
  173. //已经完善资料
  174. [[YOUPAILCIMLoginManager sharedCenter]IMLogin:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id token:[LCSaveModel getUserModel].youpaipuserinfo.youpaipim_token];
  175. [LCTools changeRootToTabbar];
  176. }
  177. }else{
  178. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  179. }
  180. } failure:^(NSError *error) {
  181. [ZCHUDHelper showTitle:error.localizedDescription];
  182. }];
  183. }
  184. - (void)gotoForgetPasswordVC{
  185. YMRetrievePasswordViewModel *forgetPasswordVM = [[YMRetrievePasswordViewModel alloc]initWithParams:@{}];
  186. [YMRouter openURL:stringFormat(@"%@%@",YM_ROUTER_URL_PREFIX,YM_ROUTER_FORGET_PASSWORD) withUserInfo:@{
  187. RouterViewModel:forgetPasswordVM
  188. } completion:nil];
  189. }
  190. - (void)gotoRegisterVC{
  191. YMRegisterViewModel *registerVM = [[YMRegisterViewModel alloc]initWithParams:@{}];
  192. [YMRouter openURL:stringFormat(@"%@%@",YM_ROUTER_URL_PREFIX,YM_ROUTER_REGISTER) withUserInfo:@{
  193. RouterViewModel:registerVM
  194. } completion:nil];
  195. }
  196. @end