YMImproveInfoViewModel.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. //
  2. // YMImproveInfoViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/8.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMImproveInfoViewModel.h"
  9. #import "YMImproveInfoAvatarOrNicknameModel.h"
  10. @interface YMImproveInfoViewModel ()<TZImagePickerControllerDelegate>
  11. /// 完善信息按钮有效性
  12. @property (nonatomic, strong, readwrite) RACSignal *validImproveInfoSignal;
  13. /// 年龄选择器VM
  14. @property (nonatomic, strong) YMPickerViewModel *agePickerVM;
  15. /// 男性头像数组
  16. @property (nonatomic, copy) NSArray <NSString*>*maleAvatarArray;
  17. /// 女性头像数组
  18. @property (nonatomic, copy) NSArray <NSString*>*femaleAvatarArray;
  19. /// 男性昵称数组
  20. @property (nonatomic, copy) NSArray <YMMaleNicknameModel*>*maleNicknameArray;
  21. /// 女性昵称数组
  22. @property (nonatomic, copy) NSArray <YMFemaleNicknameModel*>*femaleNicknameArray;
  23. /// 男性昵称key
  24. @property (nonatomic, copy) NSString *improveInfoMaleNicknameKey;
  25. /// 女性昵称key
  26. @property (nonatomic, copy) NSString *improveInfoFemaleNicknameKey;
  27. @end
  28. @implementation YMImproveInfoViewModel
  29. - (void)ym_initialize{
  30. [super ym_initialize];
  31. [[YMGlobalUtils shared] getInviteCode:^(NSString * _Nonnull code) {
  32. self.inviteCode = code?:@"";
  33. }];
  34. self.genderType = ImproveInfoGenderTypeMale;
  35. self.improveInfoAge = @"18";
  36. NSMutableArray *rowNameArray = [NSMutableArray array];
  37. for (int i = 18; i<=60; i++) {
  38. [rowNameArray addObject:@{@"rowName":stringFormat(@"%d",i)}];
  39. }
  40. self.agePickerVM = [[YMPickerViewModel alloc]initWithParams:@{
  41. @"componentDataSource":@[
  42. @{
  43. @"componentName":@"年龄",
  44. @"rowDataSource":rowNameArray
  45. }
  46. ]
  47. }];
  48. /// 完善信息按钮有效性
  49. self.validImproveInfoSignal = [[[RACSignal combineLatest:@[
  50. RACObserve(self, improveInfoFemaleNickname)
  51. ] reduce:^(NSString *improveInfoFemaleNickname) {
  52. //是否不为空
  53. return @(!OCStringIsEmpty(improveInfoFemaleNickname));
  54. }] distinctUntilChanged] takeUntil:self.rac_willDeallocSignal];
  55. }
  56. - (void)getNicknameOrAvatarData{
  57. @weakify(self)
  58. [LCHttpHelper requestWithURLString:Getnickname parameters:@{} needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  59. @strongify(self)
  60. NSDictionary* dict = (NSDictionary*)responseObject;
  61. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  62. if (code == 0) {
  63. YMImproveInfoAvatarOrNicknameModel *model = [YMImproveInfoAvatarOrNicknameModel yy_modelWithJSON:[dict dictionaryValueForKey:@"data" defaultValue:@{}]];
  64. if (OCArrayIsEmpty(model.male.avatar)) {
  65. self.improveInfoMaleAvatarUrl = model.male_default.avatar.firstObject?:@"";
  66. } else {
  67. self.maleAvatarArray = model.male.avatar;
  68. }
  69. self.improveInfoMaleNickname = model.male_default.nickname.firstObject.name?:@"";
  70. self.improveInfoMaleNicknameKey = model.male_default.nickname.firstObject.key?:@"";
  71. self.maleNicknameArray = model.male.nickname;
  72. if (OCArrayIsEmpty(model.female.avatar)) {
  73. self.improveInfoFemaleAvatarUrl = model.female_default.avatar.firstObject?:@"";
  74. } else {
  75. self.femaleAvatarArray = model.female.avatar;
  76. }
  77. self.improveInfoFemaleNickname = model.female_default.nickname.firstObject.name?:@"";
  78. self.improveInfoFemaleNicknameKey = model.female_default.nickname.firstObject.key?:@"";
  79. self.femaleNicknameArray = model.female.nickname;
  80. [self randomAvatar];
  81. }else{
  82. }
  83. } failure:^(NSError *error) {
  84. }];
  85. }
  86. - (void)openAvatarPickerPopupView{
  87. TZImagePickerController *imagePickerVC = [[TZImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:4 delegate:self];
  88. [LCTZImageConfigHelper setDefaultTZImageConfig:imagePickerVC];
  89. imagePickerVC.allowTakePicture = YES;
  90. imagePickerVC.allowPickingVideo = NO;
  91. imagePickerVC.allowPickingImage = YES;
  92. imagePickerVC.allowPickingOriginalPhoto = NO;
  93. imagePickerVC.showSelectedIndex = YES;
  94. imagePickerVC.allowCrop = NO;
  95. imagePickerVC.sortAscendingByModificationDate = YES;
  96. [imagePickerVC setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  97. //1通过,0待审核,2,未通过
  98. [LCCommonHttp uploadWithImages:photos Type:@"avatar" successBlock:^(NSArray<NSString *> *ossImagePaths) {
  99. NSString *uploadImage = ossImagePaths.firstObject;
  100. self.improveInfoAvatarUrl = uploadImage;
  101. }];
  102. }];
  103. imagePickerVC.modalPresentationStyle = UIModalPresentationFullScreen;
  104. [[YMGlobalUtils getCurrentVC] presentViewController:imagePickerVC animated:YES completion:nil];
  105. }
  106. - (void)openAgePickerPopupView{
  107. YMPickerPopupView *customView = [[YMPickerPopupView alloc]init];
  108. [customView ym_bindViewModel:self.agePickerVM];
  109. customView.titleText = @"请选择年龄";
  110. YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:nil popStyle:YMPopupStyleSmoothFromBottom dismissStyle:YMDismissStyleSmoothToBottom];
  111. popupView.priority = 999;
  112. popupView.cornerRadius = adapt(10);
  113. popupView.rectCorners = UIRectCornerTopLeft|UIRectCornerTopRight;
  114. popupView.positionStyle = YMPositionStyleBottom;
  115. popupView.isClickBgDismiss = YES;
  116. popupView.isHideBg = NO;
  117. popupView.bgAlpha = 0.5;
  118. @weakify(popupView)
  119. customView.buttonBlock = ^(BOOL isConfirm, NSArray<NSDictionary *> * _Nonnull currentSelectedDataArray) {
  120. @strongify(popupView)
  121. if (isConfirm) {
  122. self.improveInfoAge = [currentSelectedDataArray[0] stringValueForKey:@"currentSelectedValue" defaultValue:@""];
  123. }
  124. [popupView dismissWithStyle:YMDismissStyleSmoothToBottom duration:2.0];
  125. };
  126. [popupView pop];
  127. }
  128. - (void)randomAvatar{
  129. switch (self.genderType) {
  130. case ImproveInfoGenderTypeMale:
  131. {
  132. if (!OCArrayIsEmpty(self.maleAvatarArray)) {
  133. NSMutableArray *randomArray = [[NSMutableArray alloc] init];
  134. int index = arc4random() % [self.maleAvatarArray count];
  135. [randomArray addObject:[self.maleAvatarArray objectAtIndex:index]];
  136. self.improveInfoMaleAvatarUrl = randomArray.firstObject;
  137. }
  138. }
  139. break;
  140. case ImproveInfoGenderTypeFemale:
  141. {
  142. if (!OCArrayIsEmpty(self.femaleAvatarArray)) {
  143. NSMutableArray *randomArray = [[NSMutableArray alloc] init];
  144. int index = arc4random() % [self.femaleAvatarArray count];
  145. [randomArray addObject:[self.femaleAvatarArray objectAtIndex:index]];
  146. self.improveInfoFemaleAvatarUrl = randomArray.firstObject;
  147. }
  148. }
  149. break;
  150. default:
  151. break;
  152. }
  153. }
  154. - (void)randomNickname{
  155. switch (self.genderType) {
  156. case ImproveInfoGenderTypeMale:
  157. {
  158. if (!OCArrayIsEmpty(self.maleNicknameArray)) {
  159. NSMutableArray *randomArray = [[NSMutableArray alloc] init];
  160. int index = arc4random() % [self.maleNicknameArray count];
  161. [randomArray addObject:[self.maleNicknameArray objectAtIndex:index]];
  162. YMMaleNicknameModel *model = randomArray.firstObject;
  163. self.improveInfoMaleNickname = model.name;
  164. self.improveInfoMaleNicknameKey = model.key;
  165. }
  166. }
  167. break;
  168. case ImproveInfoGenderTypeFemale:
  169. {
  170. if (!OCArrayIsEmpty(self.femaleNicknameArray)) {
  171. NSMutableArray *randomArray = [[NSMutableArray alloc] init];
  172. int index = arc4random() % [self.femaleNicknameArray count];
  173. [randomArray addObject:[self.femaleNicknameArray objectAtIndex:index]];
  174. YMFemaleNicknameModel *model = randomArray.firstObject;
  175. self.improveInfoFemaleNickname = model.name;
  176. self.improveInfoFemaleNicknameKey = model.key;
  177. }
  178. }
  179. break;
  180. default:
  181. break;
  182. }
  183. }
  184. - (void)submitImproverInfoData{
  185. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  186. if (!OCStringIsEmpty(self.improveInfoAvatarUrl)) {
  187. [params setObject:self.improveInfoAvatarUrl?:@"" forKey:@"avatar"];
  188. [params setObject:self.improveInfoAvatarUrl?:@"" forKey:@"albums"];
  189. }else{
  190. switch (self.genderType) {
  191. case ImproveInfoGenderTypeMale:
  192. {
  193. [params setObject:self.improveInfoMaleAvatarUrl?:@"" forKey:@"avatar"];
  194. [params setObject:self.improveInfoMaleAvatarUrl?:@"" forKey:@"albums"];
  195. }
  196. break;
  197. case ImproveInfoGenderTypeFemale:
  198. {
  199. [params setObject:self.improveInfoFemaleAvatarUrl?:@"" forKey:@"avatar"];
  200. [params setObject:self.improveInfoFemaleAvatarUrl?:@"" forKey:@"albums"];
  201. }
  202. break;
  203. default:
  204. break;
  205. }
  206. }
  207. switch (self.genderType) {
  208. case ImproveInfoGenderTypeMale:
  209. {
  210. [params setObject:self.improveInfoMaleNickname?:@"" forKey:@"nickname"];
  211. [params setObject:self.improveInfoMaleNicknameKey?:@"" forKey:@"key"];
  212. }
  213. break;
  214. case ImproveInfoGenderTypeFemale:
  215. {
  216. [params setObject:self.improveInfoFemaleNickname?:@"" forKey:@"nickname"];
  217. [params setObject:self.improveInfoFemaleNicknameKey?:@"" forKey:@"key"];
  218. }
  219. break;
  220. default:
  221. break;
  222. }
  223. [params setObject:@(self.genderType) forKey:@"gender"];
  224. [params setObject:self.improveInfoAge forKey:@"age"];
  225. //邀请码取自粘贴板
  226. if (self.inviteCode.length==0) {
  227. NSString*code = [LCTools getPasteString];
  228. self.inviteCode = code;
  229. }
  230. [params setObject:self.inviteCode?:@"" forKey:@"invite_code"];
  231. @weakify(self)
  232. [ZCHUDHelper showWithStatus:@"提交中..."];
  233. [LCHttpHelper requestWithURLString:UpdateUserMsgNew parameters:params needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  234. @strongify(self)
  235. NSDictionary* dict = (NSDictionary*)responseObject;
  236. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  237. if (code == 0) {
  238. [ZCHUDHelper dismiss];
  239. [UMengRecordTool umengEventCountWithId:CompleteRegistration];
  240. YOUPAILCUserModel* userModel = [YOUPAILCUserModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
  241. [LCSaveModel saveUserModel:userModel];
  242. [MobClick profileSignInWithPUID:userModel.youpaipuserinfo.youpaipuser_id];
  243. [LCSaveData saveLoginMark:YES];
  244. //初始化SDK
  245. [[YOUPAILCIMLoginManager sharedCenter] youpaifNIMinit:isProdPush];
  246. [[YOUPAILCIMNotificationManager sharedCenter] start];
  247. if (![[YOUPAILCIMLoginManager sharedCenter] youpaifIMIsLogined]) {
  248. [[YOUPAILCIMLoginManager sharedCenter]IMLogin:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id token:[LCSaveModel getUserModel].youpaipuserinfo.youpaipim_token];
  249. }
  250. [LCTools changeRootToTabbar];
  251. }else{
  252. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  253. }
  254. } failure:^(NSError *error) {
  255. [ZCHUDHelper showTitle:error.localizedDescription];
  256. }];
  257. }
  258. @end