You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
10 KiB
294 lines
10 KiB
1 year ago
|
//
|
||
|
// WatchDialViewController.m
|
||
|
// tongxin
|
||
|
//
|
||
|
// Created by ecell on 2023/3/22.
|
||
|
// Copyright © 2023 xTT. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "WatchDialViewController.h"
|
||
|
#import "MyWatchDialViewController.h"
|
||
|
#import <AFNetworking.h>
|
||
|
#import "DialMsgModel.h"
|
||
|
#import "WSLWaterFlowLayout.h"
|
||
|
#import "WatchDialCollectionViewCell.h"
|
||
|
#import "DialCollectionReusableView.h"
|
||
|
#import "PayPopView.h"
|
||
|
#import "PayModel.h"
|
||
|
|
||
|
@interface WatchDialViewController ()<WSLWaterFlowLayoutDelegate,UICollectionViewDelegate,UICollectionViewDataSource>
|
||
|
|
||
|
@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
|