// // MyIncomeViewController.m // KulexiuForTeacher // // Created by 王智 on 2022/4/26. // #import "MyIncomeViewController.h" #import "MyIncomeListCell.h" #import "IncomeHeaderView.h" #import "WithdrawViewController.h" #import "KSFullDatePicker.h" #import "IncomeListModel.h" #import "IncomeCountViewController.h" #import "KSBaseWKWebViewController.h" #import "KSChoosePicker.h" #import "FreezeListViewController.h" #import "NoRecordViewController.h" @interface MyIncomeViewController () @property (nonatomic, strong) IncomeHeaderView *headView; @property (nonatomic, strong) NSDateFormatter *dateFormatter; @property (nonatomic, strong) NSString *searchDate; @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSString *bizType; @property (nonatomic, assign) NSInteger chooseIndex; @property (nonatomic, strong) NSMutableArray *sortArray; @end @implementation MyIncomeViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self allocTitle:@"我的收入"]; [self configUI]; [self setDefaultConfig]; } - (void)setDefaultConfig { [self.dateFormatter setDateFormat:@"yyyy-MM"]; NSDate *date = [NSDate date]; self.searchDate = [self.dateFormatter stringFromDate:date]; [self.dateFormatter setDateFormat:@"yyyy年M月"]; self.headView.timeLabel.text = [self.dateFormatter stringFromDate:date]; self.headView.typeLabel.text = @"全部收入"; } - (void)rightBtnClick { // web KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init]; ctrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/incomeConsus"]; [self.navigationController pushViewController:ctrl animated:YES]; } - (void)configUI { [self rightButtonTitle:@"收入统计"]; [self.scrollView removeFromSuperview]; [self.view addSubview:self.headView]; CGFloat headHeight = [IncomeHeaderView getViewHeight]; [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.mas_equalTo(self.view); make.height.mas_equalTo(headHeight); }]; [self.view addSubview:self.tableView]; [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.mas_equalTo(self.view); make.top.mas_equalTo(self.headView.mas_bottom); make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin); }]; MJWeakSelf; self.tableView.mj_header = [KSGifRefreshHeader headerWithRefreshingBlock:^{ [weakSelf resetParamenter]; [weakSelf requestData]; [weakSelf requestAccountDetail]; }]; self.tableView.mj_footer = [KSGifRefreshFooter footerWithRefreshingBlock:^{ if (weakSelf.isLoadMore) { weakSelf.pages += 1; [weakSelf requestData]; } else { [weakSelf.tableView.mj_footer endRefreshingWithNoMoreData]; } }]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self refreshAndRequestData]; } - (void)refreshAndRequestData { [self requestAccountDetail]; [self resetParamenter]; [self requestData]; } - (void)resetParamenter { self.pages = 1; self.isLoadMore = YES; self.dataArray = [NSMutableArray array]; [self.tableView.mj_footer resetNoMoreData]; [self setPromptString:@"暂无数据" imageName:@"wd_img_zwsj" inView:self.tableView]; [self.tableView reloadData]; } - (void)endRefresh { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.tableView.mj_header endRefreshing]; [self.tableView.mj_footer endRefreshing]; }); } - (void)requestAccountDetail { [KSNetworkingManager teacherAccountDetail:KS_GET success:^(NSDictionary * _Nonnull dic) { if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) { double amount = [[dic dictionaryValueForKey:@"data"] doubleValueForKey:@"amountUsable"]; double freezeAmount = [[dic dictionaryValueForKey:@"data"] doubleValueForKey:@"amountFrozen"]; double noRecordAmount = [[dic dictionaryValueForKey:@"data"] doubleValueForKey:@"amountUnrecorded"]; self.headView.moneyLabel.text = [NSString formatMoneyDoubleNum:amount]; self.headView.freezeAmount.text = [NSString formatMoneyDoubleNum:freezeAmount]; self.headView.noRecordAmount.text = [NSString formatMoneyDoubleNum:noRecordAmount]; } else { [self MBPShow:MESSAGEKEY]; } } faliure:^(NSError * _Nonnull error) { }]; } - (void)requestData { [self showhud]; [KSNetworkingManager userAccountPageRequest:KS_POST paymentStatus:@"IN" searchDate:self.searchDate bizType:self.bizType postStatus:@"RECORDED" page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) { [self removehub]; [self endRefresh]; if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) { NSArray *sourceArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"rows"]; for (NSDictionary *parm in sourceArray) { IncomeListModel *model = [[IncomeListModel alloc] initWithDictionary:parm]; [self.dataArray addObject:model]; } if (sourceArray.count < self.rows) { self.isLoadMore = NO; } } else { [self MBPShow:MESSAGEKEY]; } [self.tableView reloadData]; [self changePromptLabelState]; } faliure:^(NSError * _Nonnull error) { [self removehub]; [self endRefresh]; if (self.networkAvaiable == NO) { [self setPromptString:@"暂无网络" imageName:@"no_networking" inView:self.tableView]; } [self.dataArray removeAllObjects]; [self.tableView reloadData]; }]; } #pragma mark --- table data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { IncomeListModel *model = self.dataArray[indexPath.row]; NSString *preDay = nil; if (indexPath.row != 0) { IncomeListModel *preModel = self.dataArray[indexPath.row-1]; preDay = preModel.timeDay; } MyIncomeListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIncomeListCell"]; [cell configSource:model preSourceDay:preDay]; return cell; } #pragma mark --- lazying - (NSDateFormatter *)dateFormatter { if (!_dateFormatter) { _dateFormatter = [NSObject getDateformatter]; } return _dateFormatter; } - (UITableView *)tableView { if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.backgroundColor = [UIColor clearColor]; _tableView.delegate = self; _tableView.dataSource = self; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [_tableView registerNib:[UINib nibWithNibName:@"MyIncomeListCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MyIncomeListCell"]; _tableView.estimatedRowHeight = 125.0f; _tableView.rowHeight = UITableViewAutomaticDimension; UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 15)]; bottomView.backgroundColor = HexRGB(0xf6f8f9); _tableView.tableFooterView = bottomView; } return _tableView; } - (IncomeHeaderView *)headView { if (!_headView) { _headView = [IncomeHeaderView shareInstance]; MJWeakSelf; [_headView headerActionCallback:^(INCOME_ACTION action) { [weakSelf sortAction:action]; }]; } return _headView; } - (void)sortAction:(INCOME_ACTION)action { switch (action) { case INCOME_ACTION_TIME: { [self showPickerView]; } break; case INCOME_ACTION_TYPE: { NSMutableArray *nameArray = [NSMutableArray array]; for (NSDictionary *parm in self.sortArray) { [nameArray addObject:[parm stringValueForKey:@"name"]]; } MJWeakSelf; KSChoosePicker *picker = [[KSChoosePicker alloc] initWithTitle:@"" sourceData:nameArray chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) { if (chooseIndex == 0) { weakSelf.headView.typeLabel.text = @"全部收入"; weakSelf.bizType = nil; } else { weakSelf.headView.typeLabel.text = returnValue; NSDictionary *parm = self.sortArray[chooseIndex]; weakSelf.bizType = [parm stringValueForKey:@"bizType"]; } self.headView.secondArrowUp = NO; [weakSelf refreshAndRequestData]; } cancel:^{ self.headView.secondArrowUp = NO; }]; [picker showPicker]; } break; case INCOME_ACTION_WITHDRAW: { WithdrawViewController *ctrl = [[WithdrawViewController alloc] init]; [self.navigationController pushViewController:ctrl animated:YES]; } break; case INCOME_ACTION_FREEZE: { FreezeListViewController *ctrl = [[FreezeListViewController alloc] init]; [self.navigationController pushViewController:ctrl animated:YES]; } break; case INCOME_ACTION_NORECORD: { NoRecordViewController *ctrl = [[NoRecordViewController alloc] init]; [self.navigationController pushViewController:ctrl animated:YES]; } break; default: break; } } - (void)showPickerView { KSFullDatePicker *pickerView = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_YEAR_MONTH selectDateBlock:^(NSString *date) { self.searchDate = date; NSString *displayTime = [self getTimeDisplay:date]; [self.headView.timeLabel setText:displayTime]; [self resetPickerStatus]; [self refreshAndRequestData];// } cancleBlock:^{ [self resetPickerStatus]; }]; [pickerView show]; } - (NSString *)getTimeDisplay:(NSString *)chooseMonth { [self.dateFormatter setDateFormat:@"yyyy-MM"]; NSDate *chooseDate = [self.dateFormatter dateFromString:chooseMonth]; [self.dateFormatter setDateFormat:@"yyyy年M月"]; NSString *displayTime = [self.dateFormatter stringFromDate:chooseDate]; return displayTime; } - (void)resetPickerStatus { self.headView.firstArrowUp = NO; } - (NSMutableArray *)sortArray { if (!_sortArray) { _sortArray = [NSMutableArray array]; [_sortArray addObject:@{@"name" : @"全部收入", @"bizType": @""}]; [_sortArray addObject:@{@"name" : @"陪练课", @"bizType": @"PRACTICE"}]; [_sortArray addObject:@{@"name" : @"直播课", @"bizType": @"LIVE"}]; [_sortArray addObject:@{@"name" : @"视频课", @"bizType": @"VIDEO"}]; [_sortArray addObject:@{@"name" : @"乐谱", @"bizType": @"MUSIC"}]; [_sortArray addObject:@{@"name" : @"直播课推荐", @"bizType": @"LIVE_SHARE"}]; [_sortArray addObject:@{@"name" : @"视频课推荐", @"bizType": @"VIDEO_SHARE"}]; [_sortArray addObject:@{@"name" : @"乐谱推荐", @"bizType": @"MUSIC_SHARE"}]; [_sortArray addObject:@{@"name" : @"小酷Ai推荐", @"bizType": @"VIP_SHARE"}]; [_sortArray addObject:@{@"name" : @"商品推荐", @"bizType": @"MALL_SHARE"}]; } return _sortArray; } /* #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