CNListCollectionView.m 14.6 KB
//
//  CNListCollectionView.m
//  CNLiveCMineModule
//
//  Created by CNLive on 2022/1/17.
//

#import "CNListCollectionView.h"
#import "CNTitleAndImgCell.h"
#import "CNListHeaderView.h"
#import "CNWalletCell.h"
#import "CNMineCodeVC.h"
#import "CNMineSettingVC.h"
#import <DSBaseModule/DSBaseModule.h>
#import "CNMineTotleCollectViewController.h"
#import "CNMineWalletController.h"
#import "CNLiveAddDeviceController.h"
#import "CNCooperationController.h"

@interface CNListCollectionView()<UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>


@end

static NSString *CNTitleAndImgCellID = @"CNTitleAndImgCellID";
static NSString *CNListHeaderViewID = @"CNListHeaderViewID";
static NSString *CNWalletCellID = @"CNWalletCellID";

@implementation CNListCollectionView
- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        [self addSubview:self.collectionView];
        [self uploadViewLayout];
    }
    return self;
}
- (void)uploadViewLayout{
    [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.top.bottom.equalTo(self);
    }];
}
-(void)uploadViews{
    [self.collectionView reloadData];
}
#pragma mark - UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

    if (_model.type == 0) {
        switch (indexPath.row) {
            case 0:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_setting"];
                CNMineCodeVC *code = [[CNMineCodeVC alloc] init];
                [[BaseAppDelegate sharedAppDelegate] pushViewController:code];
            }
                break;
            case 1:
            {
                if ([CNLiveEnvironmentManager manager].isNewHomePage) {
                    [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_setting"];
                    CNMineSettingVC *setting = [[CNMineSettingVC alloc] init];
                    [[BaseAppDelegate sharedAppDelegate] pushViewController:setting];
                }else{
                    [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainPlatFromCurrentVC:[self displayViewController]];
                }
            }
                break;
            case 2:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_setting"];
                CNMineSettingVC *setting = [[CNMineSettingVC alloc] init];
                [[BaseAppDelegate sharedAppDelegate] pushViewController:setting];
            }
                break;
                
            default:
                break;
        }
    }else if (_model.type == 1){
        switch (indexPath.row) {
            case 0:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:2 param:@{} contentVC:[self displayViewController]];
            }
                break;
            case 1:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_favorite"];
                CNMineTotleCollectViewController *collectVC = [[CNMineTotleCollectViewController alloc] init];
                [[BaseAppDelegate sharedAppDelegate] pushViewController:collectVC withBackTitle:@" "];
            }
                break;
            case 2:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_friend"];
                [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:3 param:@{} contentVC:[self displayViewController] ];
            }
                break;
            case 3:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:4 param:@{} contentVC:[self displayViewController] ];
            }
                break;
                
            default:
                break;
        }
    }else if (_model.type == 2){
        switch (indexPath.row) {
            case 0:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_order"];
            }
                break;
            case 1:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_pendPay"];
            }
                break;
            case 2:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_pendReceipt"];
            }
                break;
            case 3:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_pendEvaluate"];
            }
                break;
            case 4:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_aftermarket"];
            }
                break;
            
                
            default:
                break;
        }
        [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:5 param:@{@"index":@(indexPath.row)} contentVC:[self displayViewController]  ];
    }else if (_model.type == 3){
        switch (indexPath.row) {
            case 0:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_taskList"];
                [CNLiveCMineModule pushVCWithInteViewToFrom:@"" Feedback:NO];
            }
                break;
                
            case 1:
            {
                NSString *eventId = [CNLiveBusinessTools cnStatWithType:CNStatTypeContentCount type:@"coupons" userId:CNUserShareModel.uid programId:@"" title:@""];
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:eventId];
                [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:@"" statue:CNLiveCMineIntePushWebViewStatueCoupons];
            }
                break;
            case 2:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_balance"];
                CNMineWalletController *walletVC = [[CNMineWalletController alloc] initWithStyle:MineWalletStyle targetId:CNUserShareModel.uid];//个人中心
                walletVC.titleLab.text = @"中国网家家补贴余额";
                [[BaseAppDelegate sharedAppDelegate] pushViewController:walletVC withBackTitle:@" "];
            }
                break;
            default:
                break;
        }
    }else if (_model.type == 4){
        switch (indexPath.row) {
            case 0:
            {
                [[CNLiveCMineService shareMineProtocol] skipType:@"5" to:cn_API_Managemall(@"/html/select_good/1/#/pointsMall") shopType:@"" currentVC:[self displayViewController]];
            }
                break;
            case 1:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:[NSString stringWithFormat:@"https://%@/cnStepApp.html?isShowTitle=true&channelName=tg_wrjb2",WjjH5] statue:CNLiveCMineIntePushWebViewStatueTask];
            }
                break;
            case 2:
            {
                [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_share"];
                NSString *uuid = [CNLiveBusinessTools uuid];
                NSString *h5Url = [NSString stringWithFormat:@"%@&sid=%@&uuid=%@",cn_WjjH5_Host(@"/cnInvitation.html?isShowTitle=true&channelName=yqhy"),CNUserShareModel.uid,uuid];
                [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:h5Url statue:CNLiveCMineIntePushWebViewStatueTask];
            }
                break;
                
            default:
                break;
        }
    }else if (_model.type == 5){
        CNMineListModel *listModel =  [CNMineListModel mj_objectWithKeyValues:self.model.lists[indexPath.row]];
        if ([listModel.title isEqualToString:@"小家音箱"]) {
            [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_xiaojia"];
            CNLiveAddDeviceController *addDeviceVC = [[CNLiveAddDeviceController alloc]init];
            [[BaseAppDelegate sharedAppDelegate] pushViewController:addDeviceVC];
        }else if ([listModel.title isEqualToString:@"收货地址"]){
            [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_address"];
            [[CNLiveCMineService shareMineProtocol] addressSendVCType:CNLiveAddressTypeSelect block:nil];
        }else if ([listModel.title isEqualToString:@"购物车"]){
            [[CNLiveCMineService shareMineProtocol] skipType:@"41" to:@"" shopType:@"" currentVC:[self displayViewController]];
        }else if ([listModel.title isEqualToString:@"我的礼盒"]){
            [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"mine_click_mineGiftbox"];
            [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:21 param:@{} contentVC:[self displayViewController]];
        }else if ([listModel.title isEqualToString:@"我的话题"]){
            NSString *eventId = [CNLiveBusinessTools cnStatWithType:CNStatTypeContentCount type:@"topic" userId:CNUserShareModel.uid programId:@"" title:@""];
            [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:eventId];
            [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:22 param:@{} contentVC:[self displayViewController]];
        }else if ([listModel.title isEqualToString:@"赛事活动"]){
            [[CNLiveCMineService shareMineProtocol] pushCMinePagesEvent:@"config_click_sport"];
            [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:23 param:@{} contentVC:[self displayViewController]];
        }else if ([listModel.title isEqualToString:@"徒步记录"]){
            [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:24 param:@{} contentVC:[self displayViewController]];
        }else if ([listModel.title isEqualToString:@"路径工具"]){
            [[CNLiveCMineService shareMineProtocol] pushCMineContentForCMainPlatWithType:25 param:@{} contentVC:[self displayViewController]];
        }
        else if ([listModel.title isEqualToString:@"商务合作"]){
            CNCooperationController *vc = [[CNCooperationController alloc] init];
            [[BaseAppDelegate sharedAppDelegate] pushViewController:vc];
        }
    }
    
}
#pragma mark - UICollectionViewDelegateFlowLayout
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    CNMineListModel *listModel = [CNMineListModel mj_objectWithKeyValues:self.model.lists[indexPath.row]];
    if (!CNLiveStringIsEmpty(_model.title) ) {
        return CGSizeMake(listModel.width, self.height - DS_adapt_length(42*RATIO));
    }
    if (listModel.cellHeight) {
        return CGSizeMake(listModel.width, listModel.cellHeight);
    }
    return CGSizeMake(listModel.width, collectionView.height);
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
    return 0;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
    return 0;
}
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
    if ([_model.title isEqualToString:@"福利活动"]) {
        return UIEdgeInsetsMake(0, DS_adapt_length(10), 0, DS_adapt_length(10));
    }
    return UIEdgeInsetsMake(0, 0, 0, 0);
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
    if (CNLiveStringIsEmpty(self.model.title) ) {
        return CGSizeMake(0, 0);
    }
    return CGSizeMake(kScreenWidth, DS_adapt_length(32 *RATIO));
}
#pragma mark -UICollectionViewDataSource
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return _model.lists.count;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    if ([_model.title isEqualToString:@"我的钱包"]) {
        CNWalletCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CNWalletCellID forIndexPath:indexPath];
        cell.model = [CNMineListModel mj_objectWithKeyValues:self.model.lists[indexPath.row]];
        return cell;
    }else{
        CNTitleAndImgCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CNTitleAndImgCellID forIndexPath:indexPath];
        cell.model = [CNMineListModel mj_objectWithKeyValues:self.model.lists[indexPath.row]];
        if (self.showdivideImage && indexPath.row == 0) {
            cell.showdivideImage = self.showdivideImage;
        }else{
            cell.showdivideImage = NO;
        }
        if ([self.model.title isEqualToString:@"福利活动"]) {
            cell.imgWidth = cell.width;
        }
        return cell;
    }
}
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
    CNListHeaderView *view = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:CNListHeaderViewID forIndexPath:indexPath];
    view.titleName = _model.title;
   
    weakself
    view.secretBlock = ^(BOOL isSecret) {
        weakSelf.model = [CNMinePresent dataSourceWalletModel:weakSelf.integral couponNum:weakSelf.model.lists[1][@"number"] balance:weakSelf.money];
    };
    return view;
}
#pragma mark - Setting&&Getting
- (void)setModel:(CNMineModel *)model
{
    _model = model;
    [self.collectionView reloadData];
}
- (UICollectionView *)collectionView
{
    if (!_collectionView) {
        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
        _collectionView.delegate = self;
        _collectionView.dataSource = self;
        _collectionView.backgroundColor = kClearColor;
        [_collectionView registerClass:[CNTitleAndImgCell class] forCellWithReuseIdentifier:CNTitleAndImgCellID];
        [_collectionView registerClass:[CNListHeaderView class] forSupplementaryViewOfKind:@"UICollectionElementKindSectionHeader" withReuseIdentifier:CNListHeaderViewID];
        [_collectionView registerClass:[CNWalletCell class] forCellWithReuseIdentifier:CNWalletCellID];
    }
    return _collectionView;
}
@end