YMRetrievePasswordViewModel.m 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // YMRetrievePasswordViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/6.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMRetrievePasswordViewModel.h"
  9. @interface YMRetrievePasswordViewModel ()
  10. /// 重置密码按钮有效性
  11. @property (nonatomic, strong, readwrite) RACSignal *validRetrievePasswordSignal;
  12. @end
  13. @implementation YMRetrievePasswordViewModel
  14. - (void)ym_initialize{
  15. [super ym_initialize];
  16. /// 找回按钮有效性
  17. self.validRetrievePasswordSignal = [[[RACSignal combineLatest:@[
  18. RACObserve(self, mobile),
  19. RACObserve(self, verifyCode),
  20. RACObserve(self, password)
  21. ] reduce:^(NSString *mobile, NSString *verifyCode, NSString *password ) {
  22. //是否不为空
  23. return @(!OCStringIsEmpty(mobile) && !OCStringIsEmpty(verifyCode) &&!OCStringIsEmpty(password));
  24. }] distinctUntilChanged] takeUntil:self.rac_willDeallocSignal];
  25. }
  26. /// 获取验证码
  27. - (void)getVerifyCodeWithCapthca:(NSString *)captcha Handler:(void(^)(NSDictionary *dic, NSError * _Nullable error))handler{
  28. @weakify(self)
  29. [ZCHUDHelper showWithStatus:@"获取验证码中"];
  30. [LCHttpHelper requestWithURLString:PhoneCode parameters:@{
  31. @"captcha":captcha,
  32. @"mobile":self.mobile,
  33. @"type":@"findadpwd"
  34. } needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  35. @strongify(self)
  36. NSDictionary* dict = (NSDictionary*)responseObject;
  37. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  38. if (code == 0) {
  39. [ZCHUDHelper showTitle:@"验证码已发送"];
  40. handler(dict?:@{},nil);
  41. }else{
  42. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  43. }
  44. } failure:^(NSError *error) {
  45. [ZCHUDHelper showTitle:error.localizedDescription];
  46. }];
  47. }
  48. /// 获取验证码
  49. - (void)getVerifyCodeWithRid:(NSString *)rid Handler:(void(^)(NSDictionary *dic, NSError * _Nullable error))handler{
  50. @weakify(self)
  51. [ZCHUDHelper showWithStatus:@"获取验证码中"];
  52. [LCHttpHelper requestWithURLString:PhoneCode parameters:@{
  53. @"rid":rid,
  54. @"mobile":self.mobile,
  55. @"type":@"findadpwd"
  56. } needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  57. @strongify(self)
  58. NSDictionary* dict = (NSDictionary*)responseObject;
  59. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  60. if (code == 0) {
  61. [ZCHUDHelper showTitle:@"验证码已发送"];
  62. handler(dict?:@{},nil);
  63. }else{
  64. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  65. }
  66. } failure:^(NSError *error) {
  67. [ZCHUDHelper showTitle:error.localizedDescription];
  68. }];
  69. }
  70. - (void)retrievePasswordRequest{
  71. [LCHttpHelper requestWithURLString:UpdatePassword parameters:@{
  72. @"mobile":self.mobile?:@"",
  73. @"phone_code":self.verifyCode?:@"",
  74. @"password":self.password?:@"",
  75. @"agreement":@"1",
  76. } needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
  77. NSDictionary* dict = (NSDictionary*)responseObject;
  78. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  79. if (code == 0) {
  80. [ZCHUDHelper showTitle:@"密码修改成功"];
  81. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  82. [[YMGlobalUtils getCurrentVC].navigationController popViewControllerAnimated:YES];
  83. });
  84. }else{
  85. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  86. }
  87. } failure:^(NSError *error) {
  88. [ZCHUDHelper showTitle:error.localizedDescription];
  89. }];
  90. }
  91. @end