123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // RQPlaceDetailNoteViewModel.m
- // JiaPei
- //
- // Created by 张嵘 on 2023/4/17.
- //
- #import "RQPlaceDetailNoteViewModel.h"
- @interface RQPlaceDetailNoteViewModel ()
- @property (nonatomic, readwrite, strong) RQPlaceListModel *placeListModel;
- @end
- @implementation RQPlaceDetailNoteViewModel
- #pragma mark - Public Method
- - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
- if (self = [super initWithServices:services params:params]) {
- self.placeListModel = params[RQViewCommonValueKey];
- }
- return self;
- }
- - (void)initialize {
- [super initialize];
- @weakify(self)
- /// 隐藏导航栏的细线
- self.prefersNavigationBarBottomLineHidden = YES;
- self.shouldPullDownToRefresh = YES;
- self.shouldPullUpToLoadMore = YES;
-
- ///配置数据
- [self rq_configureData];
-
- [[[[RACObserve(RQ_COMMON_MANAGER, vipListArr) deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] skip:1] subscribeNext:^(id _Nullable x) {
- @strongify(self)
- BOOL isBuy = [RQ_COMMON_MANAGER.vipListArr containsObject:self.placeListModel.name];
- self.placeListModel.isCheckVip = isBuy;
- [self.requestRemoteDataCommand execute:nil];
- }];
- }
- #pragma mark - PrivateMethod
- - (void)rq_configureData {
- @weakify(self);
- RQCommonGroupViewModel *group = [RQCommonGroupViewModel groupViewModel];
-
-
- RQCommonGroupViewModel *payGroup = [RQCommonGroupViewModel groupViewModel];
- RQPlaceBuyItemViewModel *placeBuyItemViewModel = [[RQPlaceBuyItemViewModel alloc] initWithPlaceListModel:self.placeListModel];
- payGroup.itemViewModels = @[placeBuyItemViewModel];
-
- RQCommonGroupViewModel *introduceGroup = [RQCommonGroupViewModel groupViewModel];
- [introduceGroup setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
- groupModel.headerHeight = 54.f;
- groupModel.header = @"实拍优势";
- groupModel.headerFont = RQSemiboldFont(23.f);
- groupModel.headerLabelColor = RQ_MAIN_TEXT_COLOR_1;
- groupModel.headerBgColor = UIColor.whiteColor;
- }];
- RQPlaceDetailNoteIntroduceItemViewModel *placeDetailNoteIntroduceItemViewModel = [[RQPlaceDetailNoteIntroduceItemViewModel alloc] init];
- introduceGroup.itemViewModels = @[placeDetailNoteIntroduceItemViewModel];
-
- RAC(self, items) = self.requestRemoteDataCommand.executionSignals.switchToLatest;
- RAC(group, itemViewModels) = [RACObserve(self, items) map:^(NSArray * items) {
- @strongify(self)
- return RQObjectIsNil(items)? @[] : [self dataSourceWithItems:items];
- }];
- RAC(self, dataSource) = [RACObserve(group, itemViewModels) map:^(NSArray * itemViewModels) {
- return @[group, payGroup, introduceGroup];
- }];
-
- }
- /// 请求数据
- - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
- [QMUITips showLoadingInView:DefaultTipsParentView];
- NSArray * (^itemsBlock)(NSArray *) = ^(NSArray *products) {
- [QMUITips hideAllTips];
- if (page == 1 || page == 0) {
- /// 下拉刷新
- } else {
- /// 上拉加载
- products = @[(self.items ?: @[]).rac_sequence, products.rac_sequence].rac_sequence.flatten.array;
- }
- return products;
- };
-
- ///
- return [[[RQ_HTTP_Service getPlaceVideoListWithPageNum:0 pageSize:0 searchString:self.placeListModel.name examId:[NSString stringWithFormat:@"%zd",self.placeListModel.id]] map:itemsBlock] doError:^(NSError * _Nonnull error) {
- [QMUITips hideAllTips];
- [QMUITips showError:[NSError rq_tipsFromError:error]];
- }];
- }
- #pragma mark - 辅助方法
- - (NSArray *)dataSourceWithItems:(NSArray *)items {
- NSArray *viewModels = [items.rac_sequence map:^(RQPlaceVideoListModel *placeVideoListModel) {
- RQPlaceVideoListItemViewModel *placeVideoListItemViewModel = [[RQPlaceVideoListItemViewModel alloc] initWithPlaceVideoListModel:placeVideoListModel items:items placeListModel:self.placeListModel];
- return placeVideoListItemViewModel;
- }].array;
- return viewModels ?: @[];
- }
- @end
|