CNLiveOrderListCommonView.m 12.2 KB
//
//  CNLiveOrderListCommonView.m
//  CNLiveMyOrder
//
//  Created by 殷巧娟 on 2019/6/13.
//

#import "CNLiveOrderListCommonView.h"
#import "CNLiveOrderModel.h"
#import "CNLiveMineOrderTableViewCell.h"
#import "CNLiveNoOrderView.h"
#import <CNLiveRequestBastKit/CNLiveNetworking.h>
#import "CNLiveBaseKit.h"
#import <QMUIKit/QMUIKit.h>
#import "MJRefresh.h"
#import "CNErrorOrNoNetView.h"
#import "CNLiveOrderEventHandle.h"
#import "CNLiveMineOrderItem.h"
#import "MJExtension.h"
#import "CNLiveEnvironmentConfiguration.h"
#import "CNUserInfoManager.h"
#import "TIMAdapter.h"
#import "CommonLibrary.h"
#import "CNLiveGetImage.h"
@interface CNLiveOrderListCommonView ()<UITableViewDelegate,UITableViewDataSource,CNLiveMineOrderTableViewCellDelegate> {
}
@property (nonatomic, strong) NSMutableArray *listArr;  //数据源
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) CNLiveNoOrderView *noDataView;
@property (nonatomic, copy) NSString *status; //订单状态 0-全部,1-代付款,2-待收货,3-待评价,4-全部退款 ,5退款中(全部只返回123数据)
@property (nonatomic, assign) NSInteger page;
@property (nonatomic, assign) BOOL next;
@end

@implementation CNLiveOrderListCommonView
- (instancetype)initWithFrame:(CGRect)frame orderStatus:(NSString *)status
    {
        self = [super initWithFrame:frame];
        if (self) {
            self.backgroundColor = kWeChatBgColor;
            _status = status;
            [self setNoDataViewByStatus:[status integerValue]];
            [self addSubview:self.tableView];
        }
        return self;
    }
    
- (void)refreshData {
    _page = 1;
    _next = YES;
    [self requestDataWithPage:_page refresh:YES];
}
    
- (void)requestDataWithPage:(NSInteger)page refresh:(BOOL)refresh {
      __weak typeof(self) weakSelf = self;
    [QMUITips showLoadingInView:self];
    NSDictionary *param = @{@"appId":AppId,
                            @"sid":@"10511059",
                            @"status":_status,
                            @"pageNo":[NSString stringWithFormat:@"%ld", (long)page],
                            @"pageSize":@"15"};
    [CNLiveNetworking setCacheVersion:page];
    [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNGetOrderListUrl Param:param CacheType:CNLiveNetworkCacheTypeCacheNetwork CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
        
        [QMUITips hideAllToastInView:self animated:YES];
        
        if (!error) {
            
            if (refresh) {
                weakSelf.page = 1;
                [weakSelf.listArr removeAllObjects];
                [weakSelf.tableView.mj_header endRefreshing];
            } else {
                [weakSelf.tableView.mj_footer endRefreshing];
            }
            
            CNLiveOrderModel *model = [CNLiveOrderModel mj_objectWithKeyValues:[responseObject objectForKey:@"data"]];
            
            weakSelf.next = model.hasNext;
            weakSelf.tableView.mj_footer.hidden = !_next;
            
            if (model.orderList.count == 0) {
                //noData
                [weakSelf.tableView addSubview:self.noDataView];
                
            } else {
                
                [weakSelf.noDataView removeFromSuperview];
                
                for (CNLiveOrderList *orderList in model.orderList) {
                    [weakSelf.listArr addObject:orderList];
                }
            }
            
            [weakSelf.tableView reloadData];
            
        } else {
            
            [QMUITips showError:error.localizedDescription inView:self hideAfterDelay:1.5];
            
            if (refresh) {
                [weakSelf.tableView.mj_header endRefreshing];
            } else {
                [weakSelf.tableView.mj_footer endRefreshing];
            }
            
            if (error.code == -1009) {
                [weakSelf showErrorRetryType:RetryTypeNoNet];
            } else {
                [weakSelf showErrorRetryType:RetryTypeError];
            }
            
        }
    }];
    
    
}
    
- (void)showErrorRetryType:(RetryType)type {
    
    [CNErrorOrNoNetView showErrorByType:type view:self hidenRetry:self.listArr.count > 0 handle:^{
        [self refreshData];
    }];
}
    
    //刷新
- (void)refreshList {
    [self requestDataWithPage:1 refresh:YES];
}
    
    //加载更多
- (void)loadMoreData {
    
    _page += 1;
    
    if (_next) {
        [self requestDataWithPage:_page refresh:NO];
    }
}
    
- (void)setNoDataViewByStatus:(NSInteger)status {
    
    switch (status) {
        case 0:
//        [self.noDataView setImageName:[UIImage imageNamed:@"dd_quanbumeiyou"] title:@"目前没有订单" customTopH:0];
            [self.noDataView setImageName:[CNLiveGetImage cnliveGetImageWithName:@"dd_quanbumeiyou" bundle:@"CNLiveMyOrder.bundle/CNLiveMyOrder" targetClass:[self class]] title:@"目前没有订单" customTopH:0];
            
        break;
        
        case 1:
//        [self.noDataView setImageName:[UIImage imageNamed:@"dd_wufukuan"] title:@"目前没有订单需要付款" customTopH:0];
            [self.noDataView setImageName:[CNLiveGetImage cnliveGetImageWithName:@"dd_wufukuan" bundle:@"CNLiveMyOrder.bundle/CNLiveMyOrder" targetClass:[self class]] title:@"目前没有订单需要付款" customTopH:0];
        break;
        
        case 2:
//        [self.noDataView setImageName:[UIImage imageNamed:@"dd_wushouhuo"] title:@"目前没有订单需要收货" customTopH:0];
            [self.noDataView setImageName:[CNLiveGetImage cnliveGetImageWithName:@"dd_wushouhuo" bundle:@"CNLiveMyOrder.bundle/CNLiveMyOrder" targetClass:[self class]] title:@"目前没有订单需要收货" customTopH:0];
        break;
        
        case 3:
//        [self.noDataView setImageName:[UIImage imageNamed:@"dd_wupingjia"] title:@"目前没有订单需要评价" customTopH:0];
            [self.noDataView setImageName:[CNLiveGetImage cnliveGetImageWithName:@"dd_wupingjia" bundle:@"CNLiveMyOrder.bundle/CNLiveMyOrder" targetClass:[self class]] title:@"目前没有订单需要评价" customTopH:0];
        break;
        default:
        break;
    }
    
}
    
#pragma mark -
#pragma mark - CNMineOrderTableViewCellDelegate
- (void)cellWithOrderModel:(CNLiveOrderList *)model type:(CNLiveMineOrderButtonItemType)type {
    switch (type) {
        case CNLiveMineOrderButtonItemTypeCancel: {     //取消订单
            [CNLiveOrderEventHandle cancelOrder:model superView:self complete:^(BOOL ret) {
                if (ret) {
                    [self refreshData];
                }
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeEvaluate: {   //评价订单
            
//            [CNLiveOrderEventHandle evaluateOrder:model];
            [CNLiveOrderEventHandle evaluateOrder:model jumpBlock:^(CNLiveOrderList * _Nonnull orderList) {
                if (self.evaluateOrderBlock) {
                    self.evaluateOrderBlock(orderList);
                }
            }];
            
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeDelete: {     //删除订单
            
            [CNLiveOrderEventHandle deleteOrder:model itemId:nil superView:self complete:^(BOOL ret) {
                if (ret == YES) {
                    [self refreshData];
                }
            }];

        }
        break;
        
        case CNLiveMineOrderButtonItemTypeContactDaRen: {   //联系达人
//            [CNOrderEventHandle contactUser:model pop:NO];
            [CNLiveOrderEventHandle contactUser:model pop:NO jumpBlock:^(BOOL isPop) {
                if (self.contactUserBlock) {
                    self.contactUserBlock(NO);
                }
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypePay: {    //去付款
//            weakself
//            [CNOrderEventHandle pay:model payBlock:^(int code) {
//                if (code == 0) {
//                    //支付成功
//                    [weakSelf refreshData];
//                }
//            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeReminder: { //催单
            [CNLiveOrderEventHandle reminderOrder:model superView:self complete:^(NSString *msg) {
                [[HUDHelper sharedInstance] tipMessage:msg];
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeRefund: {     //申请退款
//            [CNOrderEventHandle applyForRefund:model];
            [CNLiveOrderEventHandle applyForRefund:model jumpBlock:^(CNLiveOrderList * _Nonnull orderList) {
                if (self.applyForRefundBlock) {
                    self.applyForRefundBlock(orderList);
                }
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeRefundDetail: {   //退款详情
//            [CNOrderEventHandle refundDetail:model];
            [CNLiveOrderEventHandle refundDetail:model jumpBlock:^(NSString * _Nonnull orderId) {
                if (self.refundDetailBlock) {
                    self.refundDetailBlock(orderId);
                }
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeConfirmReceipt: { //确认收货
            
            [CNLiveOrderEventHandle confirmRecv:model itemId:@"" superView:self complete:^(BOOL ret) {
                if (ret) {
                    [self refreshData];
                }
            }];
        }
        break;
        
        case CNLiveMineOrderButtonItemTypeConfirmLogistics: { //查看物流
            
        }
        break;
        
        default:
        break;
    }
    
}
    
#pragma mark -
#pragma mark - UITableViewDelegate,UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.listArr.count;
}
    
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *cellId = @"CNMineOrderTableViewCell";
    CNLiveMineOrderTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (!cell) {
        cell = [[CNLiveMineOrderTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
    }
    CNLiveOrderList *model = _listArr[indexPath.row];
    cell.delegate = self;
    [cell configOrderList:model delegate:self];
    return cell;
}
    
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CNLiveOrderList *model = _listArr[indexPath.row];
    return [model.orderItem cellHeight];
}
    
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.tableView qmui_clearsSelection];
    
    CNLiveMineOrderTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [CNLiveOrderEventHandle orderDetail:cell.list orderBlock:^(NSString * _Nonnull orderId) {
        if (self.orderDetaielCellDidSelectedBlock) {
            self.orderDetaielCellDidSelectedBlock(indexPath, orderId);
        }
    }];
//
    
}
#pragma mark -
#pragma mark - Getter
- (NSMutableArray *)listArr
    {
        if (!_listArr) {
            _listArr = [[NSMutableArray alloc] init];
        }
        return _listArr;
    }
    
- (UITableView *)tableView
    {
        if (!_tableView) {
            _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, self.height) style:UITableViewStylePlain];
            _tableView.backgroundColor = kWeChatBgColor;
            _tableView.delegate = self;
            _tableView.dataSource = self;
            _tableView.tableFooterView = [UIView new];
            _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            _tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refreshList)];
            _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
        }
        return _tableView;
    }
    
- (CNLiveNoOrderView *)noDataView
    {
        if (!_noDataView) {
            _noDataView = [[CNLiveNoOrderView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, self.height)];
        }
        return _noDataView;
    }



@end