123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- //
- // RQActivateVIPViewModel.m
- // SDJK
- //
- // Created by 张嵘 on 2021/9/9.
- //
- #import "RQActivateVIPViewModel.h"
- @interface RQActivateVIPViewModel ()
- /// activateVIPCode
- @property (nonatomic, readwrite, copy) NSString *activateVIPCode;
- /// error (PS;这个记录请求过程中的发生的错误,请求之前必须置nil)
- @property (nonatomic, readwrite, strong) NSError *error;
- /// 开通按钮有效性
- @property (nonatomic, readwrite, strong) RACSignal *validOpenSignal;
- /// openCommand
- @property (nonatomic, readwrite, strong) RACCommand *openCommand;
- /// getVipPriceCommand
- @property (nonatomic, readwrite, strong) RACCommand *getVipPriceCommand;
- /// getVipPriceOrriginalCommand
- //@property (nonatomic, readwrite, strong) RACCommand *getVipPriceOrriginalCommand;
- /// closeCommand
- @property (nonatomic, readwrite, strong) RACCommand *closeCommand;
- /// vipPrice
- @property (nonatomic, readwrite, copy) NSString *vipPrice;
- /// vipPriceOriginal
- @property (nonatomic, readwrite, copy) NSString *vipPriceOriginal;
- @property (nonatomic, readwrite, strong) NSDictionary *allVipTypeDic;
- @property (nonatomic, readwrite, strong) RQDictTypeModel *currentDictTypeModel;
- @end
- @implementation RQActivateVIPViewModel
- - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
- if (self = [super initWithServices:services params:params]) {
-
- }
- return self;
- }
- - (void)initialize {
- [super initialize];
- self.title = @"开通VIP";
- self.prefersNavigationBarHidden = YES;
- @weakify(self);
-
- /// 按钮的有效性
- self.validOpenSignal = [[RACSignal
- combineLatest:@[RACObserve(self, activateVIPCode)]
- reduce:^(NSString *activateVIPCode) {
- return @(RQStringIsNotEmpty(activateVIPCode));
- }]
- distinctUntilChanged];
-
- void (^doNext)(RQBaseModel *) = ^(RQBaseModel *baseModel){
- if ([baseModel isKindOfClass:[RQPrepareOrderModel class]]) {
- RQPrepareOrderModel *prepareOrderModel = (RQPrepareOrderModel *)baseModel;
- [RQ_WECHAT_MANAGER clickToWechatPayWithPrepareOrder:prepareOrderModel];
- }
- };
-
- self.openCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
- @strongify(self);
- /// 将self.error = nil;
- self.error = nil;
- return [[self buy] doNext:doNext];
- return [RACSignal empty];
- }];
-
-
- self.closeCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
- @strongify(self);
- [self.services popViewModelAnimated:YES];
- return [RACSignal empty];
- }];
-
- [[[RQNotificationCenter rac_addObserverForName:RQUserNotificationAlipayOrWechatSuccess object:nil] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSNotification * note) {
- PayResp *resp = (PayResp *)note.object;
- NSLog(@"----微信支付成功:%@",resp.returnKey);
- [RQ_CACHE_MANAGER removeCacheWithPath:RQ_GET_VipInfo parameters:nil];
- [RQ_USER_MANAGER isVipWithComplete:^(NSInteger isVip) {
- if (isVip > 0) {
- [MBProgressHUD rq_showTips:@"购买VIP成功"];
- } else {
- [MBProgressHUD rq_showTips:@"VIP激活中!请稍等片刻!!!"];
- }
- [self.closeCommand execute:nil];
- }];
- }];
- }
- #pragma mark - PrivateMethods
- - (RACSignal *)open {
- @weakify(self);
- return [[RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
- [[RQ_HTTP_Service putVipCodeWithVipCode:self.activateVIPCode] subscribeNext:^(RQBaseModel *baseModel) {
- [subscriber sendNext:baseModel];
- } error:^(NSError * _Nullable error) {
- [subscriber sendError:error];
- } completed:^{
- [subscriber sendCompleted];
- }];
- return [RACScopedDisposable disposableWithBlock:^{
- /// 取消任务
- }];
- }] doError:^(NSError * _Nonnull error) {
- @strongify(self);
- self.error = error;
- }];
- }
- - (RACSignal *)buy {
- @weakify(self);
- return [[RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
- [[RQ_HTTP_Service postPrepareOrderWithDictCode:[NSString qmui_stringWithNSInteger:self.currentDictTypeModel.dictCode]] subscribeNext:^(RQPrepareOrderModel *prepareOrderModel) {
- [subscriber sendNext:prepareOrderModel];
- } error:^(NSError * _Nullable error) {
- [subscriber sendError:error];
- } completed:^{
- [subscriber sendCompleted];
- }];
- return [RACScopedDisposable disposableWithBlock:^{
- /// 取消任务
- }];
- }] doError:^(NSError * _Nonnull error) {
- @strongify(self);
- self.error = error;
- }];
- }
- - (RACSignal *)getVipPrice {
- @weakify(self);
- return [[RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
- [[RQ_HTTP_Service getConfigKeyWithPath:RQVipPricePath] subscribeNext:^(NSString *vipPriceStr) {
- [subscriber sendNext:vipPriceStr];
- } error:^(NSError * _Nullable error) {
- [subscriber sendError:error];
- } completed:^{
- [subscriber sendCompleted];
- }];
- return [RACScopedDisposable disposableWithBlock:^{
- /// 取消任务
- }];
- }] doError:^(NSError * _Nonnull error) {
- @strongify(self);
- self.error = error;
- }];
- }
- - (RACCommand *)getVipPriceCommand {
- @weakify(self);
- return [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
- @strongify(self);
- /// 将self.error = nil;
- self.error = nil;
- // [[RQ_HTTP_Service getConfigKeyWithPath:RQVipPricePath] subscribeNext:^(NSString *vipPriceStr) {
- // self.vipPrice = vipPriceStr;
- // } error:^(NSError * _Nullable error) {
- // @strongify(self);
- // self.error = error;
- // } completed:^{
- //
- // }];
-
- [[RQ_HTTP_Service getDictTypeWithPath:RQVipTypePath] subscribeNext:^(id _Nullable x) {
- NSArray *a = RQObjectIsNil(x)? @[] : x;
- NSString *vipPriceStr = [[a.rac_sequence.signal filter:^BOOL(RQDictTypeModel *dictTypeModel) {
- @strongify(self);
- NSString *key = [NSString qmui_stringWithNSInteger:RQ_USER_MANAGER.isVip];
- return [dictTypeModel.dictLabel isEqualToString:self.allVipTypeDic[key]];
- }].toArray.rac_sequence.signal map:^id _Nullable(RQDictTypeModel *dictTypeModel) {
- @strongify(self);
- self.currentDictTypeModel = dictTypeModel;
- return dictTypeModel.dictValue;
- }].toArray.firstObject;
- self.vipPrice = [vipPriceStr componentsSeparatedByString:@","].firstObject;
- self.vipPriceOriginal = [vipPriceStr componentsSeparatedByString:@","].lastObject;
- } error:^(NSError * _Nullable error) {
- @strongify(self);
- self.error = error;
- } completed:^{
- }];
- return [RACSignal empty];
- }];
- }
- //- (RACCommand *)getVipPriceOrriginalCommand {
- // @weakify(self);
- // return [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
- // @strongify(self);
- // /// 将self.error = nil;
- // self.error = nil;
- // [[RQ_HTTP_Service getConfigKeyWithPath:RQVipPriceOriginalPath] subscribeNext:^(NSString *vipPriceOriginalStr) {
- // self.vipPriceOriginal = vipPriceOriginalStr;
- // } error:^(NSError * _Nullable error) {
- // @strongify(self);
- // self.error = error;
- // } completed:^{
- //
- // }];
- // return [RACSignal empty];
- // }];
- //}
- - (NSDictionary *)allVipTypeDic {
- return @{
- @"2" : @"sdjk_up_sp_vip",
- @"0" : @"sdjk_sp_vip",
- };
- }
- @end
|