This commit is contained in:
启星
2025-08-08 10:49:36 +08:00
parent 6400cf78bb
commit b5ce3d580a
8780 changed files with 978183 additions and 0 deletions

View File

@@ -0,0 +1,243 @@
//
// QXRoomDetailViewController.m
// IsLandVoice
//
// Created by on 2025/3/5.
//
#import "QXRoomDetailViewController.h"
#import "QXRoomDetailHeaderView.h"
#import "QXRoomWaterListCell.h"
#import "NSArray+YYAdd.h"
#import "NSString+YYAdd.h"
#import "QXRoomSubsidyViewController.h"
#import "QXRoomWaterModel.h"
#import "QXMineNetwork.h"
@interface QXRoomDetailViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)UITableView *tableView;
@property (nonatomic,strong)NSMutableDictionary *dict;
@property (nonatomic,strong)NSMutableArray *allDateArray;
@property (nonatomic,strong)QXRoomDetailHeaderView *headerView;
@property (nonatomic,strong)NSString* startTime;
@property (nonatomic,strong)NSString* endTime;
@end
@implementation QXRoomDetailViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
-(void)setNavgationItems{
[super setNavgationItems];
self.navigationItem.title = @"房间明细";
}
-(void)initSubViews{
self.page = 1;
UIButton *rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 55, 44)];
[rightBtn setTitle:@"补贴明细" forState:(UIControlStateNormal)];
rightBtn.titleLabel.font = [UIFont systemFontOfSize:13];
[rightBtn setTitleColor:[UIColor colorWithHexString:@"#FF8ACC"] forState:(UIControlStateNormal)];
[rightBtn addTarget:self action:@selector(detailAction) forControlEvents:(UIControlEventTouchUpInside)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
[self.view addSubview:self.headerView];
[self.view addSubview:self.tableView];
self.dict = [NSMutableDictionary dictionary];
[self getPriceData];
}
-(void)detailAction{
QXRoomSubsidyViewController *vc = [[QXRoomSubsidyViewController alloc] init];
vc.room_id = self.room_id;
[self.navigationController pushViewController:vc animated:YES];
}
-(void)getPriceData{
MJWeakSelf
[QXMineNetwork roomWaterDetailWithRoomId:self.room_id start_time:self.startTime end_time:self.endTime page:self.page type:self.type successBlock:^(QXRoomDetailModel * _Nonnull model) {
weakSelf.headerView.model = model;
if (weakSelf.page == 1) {
[weakSelf.dict removeAllObjects];
}
NSArray *arr = [weakSelf.dict allKeys];
for (QXRoomWaterModel*md in model.list) {
BOOL haveKey = NO;
for (NSString *s in arr) {
if ([s isEqualToString:md.time]) {
haveKey = YES;
break;
}
}
if (!haveKey) {
// keyjson
[weakSelf.dict setObject:[md yy_modelToJSONString] forKey:md.time];
}else{
//
NSString *json = [weakSelf.dict objectForKey:md.time];
//
QXRoomWaterModel *m = [QXRoomWaterModel yy_modelWithJSON:json];
//
NSMutableArray *newArr = [NSMutableArray arrayWithArray:m.list];
//
[newArr addObjectsFromArray:md.list];
//
m.list = newArr;
//
[weakSelf.dict setObject:[m yy_modelToJSONString] forKey:md.time];
}
}
NSArray *keys = [weakSelf.dict.allKeys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
// NSString *s1 = obj1;
// NSString *s2 = obj2;
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd"];
NSDate *date1 = [dateFormatter1 dateFromString:obj1];
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"yyyy-MM-dd"];
NSDate *date2 = [dateFormatter2 dateFromString:obj2];
NSComparisonResult result = [date1 compare:date2];
if (result == NSOrderedAscending) {
return NSOrderedDescending;
}else if (result == NSOrderedDescending){
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}];
self.allDateArray = [NSMutableArray arrayWithArray:keys];
[weakSelf.tableView reloadData];
[weakSelf.tableView.mj_header endRefreshing];
if (model.list.count == 0) {
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
}else{
[weakSelf.tableView.mj_footer endRefreshing];
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
[weakSelf.tableView.mj_footer endRefreshing];
[weakSelf.tableView.mj_header endRefreshing];
}];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.allDateArray.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSString *json = [self.dict objectForKey:self.allDateArray[section]];
QXRoomWaterModel*model = [QXRoomWaterModel yy_modelWithJSON:json];
return model.list.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
QXRoomWaterListCell *cell = [QXRoomWaterListCell cellWithTableView:tableView];
NSString *json = [self.dict objectForKey:self.allDateArray[indexPath.section]];
//
QXRoomWaterModel*m = [QXRoomWaterModel yy_modelWithJSON:json];
QXRoomWaterDetailModel *model = m.list[indexPath.row];
cell.model = model;
return cell;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
NSString *time = [self.allDateArray objectAtIndex:section];
NSString *json = [self.dict objectForKey:time];
//
QXRoomWaterModel*model = [QXRoomWaterModel yy_modelWithJSON:json];
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 25)];
header.backgroundColor = [UIColor whiteColor];
UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, 0, 130, 25)];
timeLabel.font = [UIFont systemFontOfSize:13];
timeLabel.textColor = [UIColor colorWithHexString:@"#333333"];
timeLabel.text = time;
[header addSubview:timeLabel];
UILabel *waterLabel = [[UILabel alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-16-130, 0, SCREEN_WIDTH-130-32, 25)];
waterLabel.font = [UIFont systemFontOfSize:13];
waterLabel.textColor = [UIColor colorWithHexString:@"#333333"];
NSString *total_earning = [NSString stringWithFormat:@"%.2f",model.total_earning];
NSString *total_price = [NSString stringWithFormat:@"%.2f",model.total_price];
NSString *s = [NSString stringWithFormat:@"收益 %@ 流水 %@",total_earning,total_price];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:[s rangeOfString:total_earning]];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:[s rangeOfString:total_price]];
// waterLabel.text = [NSString stringWithFormat:@"收益 %@ 流水 %@",model.total_earning,model.total_price];
waterLabel.attributedText = attr;
waterLabel.textAlignment = NSTextAlignmentRight;
[waterLabel sizeToFit];
waterLabel.frame = CGRectMake(SCREEN_WIDTH-16-waterLabel.size.width, 0, waterLabel.size.width, 25);
[header addSubview:waterLabel];
return header;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 25;
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [UIView new];
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.01;
}
-(UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.headerView.bottom, SCREEN_WIDTH, SCREEN_HEIGHT-self.headerView.bottom) style:(UITableViewStylePlain)];
_tableView.dataSource = self;
_tableView.delegate = self;
_tableView.backgroundColor = [UIColor clearColor];
_tableView.tableFooterView = [UIView new];
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.rowHeight = 65;
if (@available(iOS 15.0, *)) {
_tableView.sectionHeaderTopPadding = 0;
} else {
// Fallback on earlier versions
}
MJWeakSelf
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
weakSelf.page = 1;
[weakSelf getPriceData];
}];
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
weakSelf.page++;
[weakSelf getPriceData];
}];
}
return _tableView;
}
-(NSMutableArray *)allDateArray{
if (!_allDateArray) {
_allDateArray = [NSMutableArray array];
}
return _allDateArray;
}
-(QXRoomDetailHeaderView *)headerView{
if (!_headerView) {
UIImage*img = [UIImage imageNamed:@"mine_room_water_bg"];
CGFloat height = (SCREEN_WIDTH-32)/img.size.width*img.size.height;
_headerView = [[QXRoomDetailHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 11+ kSafeAreaTop+44 + height)];
MJWeakSelf
_headerView.chooseDateBlock = ^(NSString * _Nonnull startTime, NSString * _Nonnull endTime) {
weakSelf.startTime = startTime;
weakSelf.endTime = endTime;
weakSelf.page = 1;
[weakSelf getPriceData];
};
}
return _headerView;
}
/*
#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