// // WatchDialViewController.m // tongxin // // Created by ecell on 2023/3/22. // Copyright © 2023 xTT. All rights reserved. // #import "WatchDialViewController.h" #import "MyWatchDialViewController.h" #import #import "DialMsgModel.h" #import "WSLWaterFlowLayout.h" #import "WatchDialCollectionViewCell.h" #import "DialCollectionReusableView.h" #import "PayPopView.h" #import "PayModel.h" @interface WatchDialViewController () @property (nonatomic, assign) WSLWaterFlowLayoutStyle flowLayoutStyle; @property (nonatomic ,strong) UICollectionView *menuCollectionView; @property (nonatomic ,strong) NSMutableArray *modelListArr; @property (nonatomic ,assign) NSInteger page; @property (nonatomic ,strong) PayPopView *popView; @end @implementation WatchDialViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = self.myTableView.backgroundColor; self.title = @"表盘中心"; self.popView = [[PayPopView alloc] init]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"我的表盘" style:UIBarButtonItemStylePlain target:self action:@selector(MyDialAction)]; self.page = 1; [self GetPayModel]; [self GetModel]; WEAKSELF WSLWaterFlowLayout *FlowLayout = [[WSLWaterFlowLayout alloc] init]; FlowLayout.delegate = self; FlowLayout.flowLayoutStyle = self.flowLayoutStyle; _menuCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight) collectionViewLayout:FlowLayout]; _menuCollectionView.backgroundColor = UIColor.clearColor; _menuCollectionView.dataSource = self; _menuCollectionView.delegate = self; // _menuCollectionView.showsVerticalScrollIndicator = NO; // _menuCollectionView.alwaysBounceVertical = NO; // _menuCollectionView.scrollEnabled = NO; if (@available(iOS 11.0, *)) _menuCollectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; [_menuCollectionView registerClass:WatchDialCollectionViewCell.class forCellWithReuseIdentifier:NSStringFromClass(WatchDialCollectionViewCell.class)]; [_menuCollectionView registerClass:[DialCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"DialCollectionReusableView"]; [self.view addSubview:_menuCollectionView]; [_menuCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; _menuCollectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ weakSelf.page = 1; [weakSelf GetModel]; }]; _menuCollectionView.mj_footer = [MJRefreshFooter footerWithRefreshingBlock:^{ [weakSelf GetModel]; }]; } #pragma mark - WSLWaterFlowLayoutDelegate //返回每个item大小 - (CGSize)waterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake((ScreenWidth-35)/2, (ScreenWidth)/1.85); } /** 头视图Size */ -(CGSize )waterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout sizeForHeaderViewInSection:(NSInteger)section { return CGSizeMake(ScreenWidth, 40); } /** 列数*/ -(CGFloat)columnCountInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout { return 2; } /** 列间距*/ -(CGFloat)columnMarginInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout { return 15; } /** 行间距*/ -(CGFloat)rowMarginInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout { return 10; } /** 边缘之间的间距*/ -(UIEdgeInsets)edgeInsetInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout { return UIEdgeInsetsMake(5, 10, 5, 10); } #pragma mark - UICollectionView数据源 //组个数 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return self.modelListArr.count; } //组内成员个数 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return [self.modelListArr[section] count]; } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { DialCollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"DialCollectionReusableView" forIndexPath:indexPath]; DialMsgModel *model = self.modelListArr[indexPath.section][0]; headerView.titleStr = model.categoryName; return headerView; } return nil; } //设置元素内容 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { WatchDialCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(WatchDialCollectionViewCell.class) forIndexPath:indexPath]; DialMsgModel *model = self.modelListArr[indexPath.section][indexPath.item]; cell.model = model; cell.labelTouch = ^(DialMsgModel * _Nonnull model) { [self.popView subPopView:model]; }; return cell; } -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { } #pragma mark 获取表盘列表 - (void)GetModel { if (self.page == 1) { [self.myDataSource removeAllObjects]; } NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setObject:@(self.page) forKey:@"current"]; [parameters setObject:@"" forKey:@"marketName"]; [parameters setObject:@(20) forKey:@"pageSize"]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:HTTP_POST_PAGELIST parameters:parameters error:nil]; request.timeoutInterval = 10.f; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSURLSessionDataTask*task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { NSDictionary *dic = responseObject; if (dic && [dic[@"code"] integerValue] == 200) { NSArray *arr = dic[@"data"][@"records"]; for (NSDictionary *dics in arr) { [self.myDataSource addObject:dics]; } [self modelWithJSON:self.myDataSource]; if (arr.count > 0) self.page++; else self.menuCollectionView.mj_footer.state = MJRefreshStateNoMoreData; [self.menuCollectionView.mj_header endRefreshing]; [self.menuCollectionView.mj_footer endRefreshing]; } else { NSLog(@"请求失败error=%@", error); } }]; [task resume]; } - (void)modelWithJSON:(NSMutableArray *)arr { [self.modelListArr removeAllObjects]; NSArray *typesArray = [arr valueForKey:@"categoryName"];//得到的属性type对应的value数组 ,listArray 是没有分组的数据 NSOrderedSet *set = [NSOrderedSet orderedSetWithArray:typesArray];//排序 NSArray *sectionArray = [set array]; [sectionArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSPredicate *pre = [NSPredicate predicateWithFormat:@"categoryName == %@", obj]; NSArray *indexArray = [self.myDataSource filteredArrayUsingPredicate:pre]; NSMutableArray *modelArr = [[NSMutableArray alloc] init]; for (NSDictionary *dic in indexArray) { DialMsgModel *model = [DialMsgModel yy_modelWithJSON:dic]; [modelArr addObject:model]; } [self.modelListArr addObject:modelArr]; }]; [self.menuCollectionView reloadData]; NSLog(@"%@",self.modelListArr); } #pragma mark 获取支付方式 - (void)GetPayModel { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:HTTP_POST_PAYTYPE parameters:parameters error:nil]; request.timeoutInterval = 10.f; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSURLSessionDataTask*task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { NSDictionary *dic = responseObject; if (dic && [dic[@"code"] integerValue] == 200) { BOOL payInnerFlag = [dic[@"data"][@"payInnerFlag"] boolValue];/// 是否是内购 if (payInnerFlag) { } else { NSMutableArray *payArr = [[NSMutableArray alloc] init]; NSArray *arr = dic[@"data"][@"payDialTypeVOList"]; [arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { PayModel *model = [PayModel yy_modelWithJSON:obj]; [payArr addObject:model]; }]; self.popView.payArr = payArr; } } else { NSLog(@"请求失败error=%@", error); } }]; [task resume]; } - (NSMutableArray *)modelListArr { if(!_modelListArr) _modelListArr = [[NSMutableArray alloc] init]; return _modelListArr; } - (void)MyDialAction { MyWatchDialViewController *vc = [[MyWatchDialViewController alloc] init]; [self.navigationController pushViewController:vc animated:YES]; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end