CNLivePlayletHomePageController.swift 7.55 KB
//
//  CNLivePlayletHomePageController.swift
//  metaCode
//
//  Created by zx on 2024/1/4.
//  短剧主页

import Foundation
import MJRefresh
class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataSource, UITableViewDelegate{
    
    var pageNum: NSInteger = 1
    var jianjieLblHeight:CGFloat = 36
    
    let kCNLivePlayletCellIdentifier = "kCNLivePlayletCellIdentifier"
    let kCNLivePlayletHeaderCellIdentifier = "kCNLivePlayletHeaderCellIdentifier"
    ///数据源
    lazy var albumModelArr: NSMutableArray = {
        var dataArray = NSMutableArray()
        return dataArray
    }()
    var albumMsgModel:CNLiveAlbumMsgModel?
    var albumId = ""//aid
    // MARK: - 懒加载
    
    lazy var tableView : UITableView = {
        let tableView = UITableView(frame: .zero, style: .plain)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.separatorStyle = .none
        tableView.tableFooterView = UIView.init()
        tableView.register(CNLivePlayletHomePageCell.self, forCellReuseIdentifier: kCNLivePlayletCellIdentifier)
        tableView.register(CNLivePlayletHomePageHeaderCell.self, forCellReuseIdentifier: kCNLivePlayletHeaderCellIdentifier)
        return tableView
    }()
    
    init(aid:String){
        super.init(nibName: nil, bundle: nil)
        self.albumId = aid
        self.getAlbumMsg(aid: aid)// self.albumModel!.contentId 或 self.albumMsgModel!.albumId
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        self.setUI()
    }
    func setUI(){
        navigationBarHidden = false
        self.view.addSubview(self.tableView)
        self.tableView.frame = CGRect(x: 0, y: KNavigationHeight, width: KSreenWidth, height: KSreenHeight-KNavigationHeight)
    }
    
    // MARK: - 获取短剧主页数据
    //获取专辑详情(简介等)
    func getAlbumMsg(aid:String){
        CNLiveHomePageViewModel.getAlbumMsg(aid: aid) { [weak self] result, status in
            hiddenLoading()
            if status == .success{
                let model = result as! CNLiveAlbumMsgModel
                self!.albumMsgModel = model
                self!.getAlbumList(aid: aid, page: self!.pageNum)
            }else{
                
            }
        }
    }
    //获取专辑视频列表详情(播放地址 ,点赞数等信息)
    func getAlbumList(aid:String, page:NSInteger){
        showLoading(message: "")
        CNLiveHomePageViewModel.getAlbumList(aid: aid, page: page){[weak self] result, status in
            hiddenLoading()
            if status == .success{
                let dataMdl = result as! CNLiveAlbumListBaseModel
                let arr = dataMdl.list
                for listModel in arr {
                    listModel.albumMsgModel = self?.albumMsgModel
                }
                
                if self!.pageNum > 1 && self!.albumModelArr.count > 0 {
                    self!.albumModelArr.addObjects(from: arr)
                }
                if self!.pageNum == 1 {
                    self!.albumModelArr.removeAllObjects()
                    self!.albumModelArr.addObjects(from: arr)
                    if self!.albumModelArr.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil {
                        self!.addRefreshView()
                    }
                }
                
                self!.tableView.mj_header?.endRefreshing()
                
                self!.tableView.reloadData()
                if dataMdl.hasNextPage{
                    self!.tableView.mj_footer?.endRefreshing()
                }else{
                    self!.tableView.mj_footer?.endRefreshingWithNoMoreData()
                }
            }else{
                
            }
        }
    }
    
    func addRefreshView() {
        tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in
            self!.pageNum = 1
            self!.getAlbumList(aid: self!.albumId , page: 1)
        })
        
        tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {[weak self] in
            self!.pageNum = self!.pageNum + 1
            self!.getAlbumList(aid: self!.albumId, page: self!.pageNum)
        })
    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        2
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if section == 0{
            return 1
        }
        return self.albumModelArr.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        if indexPath.section == 0{
            guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLivePlayletHeaderCellIdentifier) as? CNLivePlayletHomePageHeaderCell
            else {
                let cell = CNLivePlayletHomePageHeaderCell()
                return cell
            }
            cell.homePageHeaderCellChangedBlock = { headerCell,jianjieHeight in
                self.jianjieLblHeight = jianjieHeight
                self.tableView.reloadData()
            }
            cell.homePageNeedReloadActionBlock = {
                DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { [self] in
                    self.getAlbumMsg(aid: self.albumId)
                }
            }
            if self.albumModelArr.count > 0{
                let albumListModel = self.albumModelArr[0] as! CNLiveAlbumListModel
                cell.albumListModel = albumListModel
            }
            return cell
        }else{
            guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLivePlayletCellIdentifier) as? CNLivePlayletHomePageCell
            else {
                let cell = CNLivePlayletHomePageCell()
                return cell
            }
            let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel
            cell.albumListModel = albumListModel
            return cell
        }
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.section == 0{
            return 15+147+20+self.jianjieLblHeight+25+39+23.5+15.5+18.5
        }else{
            return 75+12*2
        }
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.section == 0{
        }else{
            let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel
            let aid = albumListModel.albumMsgModel?.albumId ?? ""
            //发播放器销毁通知
            NotificationCenter.default.post(name: Notification.Name.PlayerManage.kPlayerDestroyNotification, object: nil)
            //在当前堆栈里遍历删除 播放控制器CNLiveShortVideoViewController
            let tempArray = NSMutableArray.init()
            self.navigationController?.viewControllers.forEach({ item in
                if (item.isKind(of: CNLiveShortVideoViewController.self)) {
                    tempArray.remove(item)
                }else{
                    tempArray.add(item)
                }
            })
            self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController]
            //跳转播放页
            let dataArray = Array(self.albumModelArr) as! [CNLiveAlbumListModel]
            CNLiveDownSlideTool.pushShortVideoController(aid: aid, page: self.pageNum, currentIndex: indexPath.row, dataArray: dataArray, navigationVC: navigationViewController().visibleViewController?.navigationController)
        }
    }
}