Commit e3d3c28d66986117120c9be78e4270bbe511272a

Authored by “张旭”
1 parent 796ecda9

实时热榜进入切换为短剧播放器 , 其他情况为剧集播放器

metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
... ... @@ -168,6 +168,16 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
168 168 var currentDuanJuIndex: NSInteger! = 0//播放短剧index
169 169 var isDuanJuPlayer = false//是否 短剧播放器
170 170 var isTempDuanJuPlayer = false//临时是否 短剧播放器
  171 + var isPausePlayer = false//是否暂停播放
  172 + var isHomePagePush = false//是否 主页Push
  173 + lazy var tempDataArray: NSMutableArray = {//临时剧集
  174 + let dataArray = NSMutableArray.init()
  175 + return dataArray
  176 + }()
  177 + lazy var tempDataURLArray: NSMutableArray = {//临时剧集url
  178 + let dataArray = NSMutableArray.init()
  179 + return dataArray
  180 + }()
171 181  
172 182 /// 初始化播放器
173 183 /// - Parameters:
... ... @@ -180,12 +190,15 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
180 190 self.pageNum = page
181 191 self.isSelectable = true
182 192 self.currentIndex = currentIndex
  193 + self.isHomePagePush = true
183 194 super.init(nibName:nil, bundle:nil)
184 195 self.dataArray.addObjects(from: dataArray)
185 196 dataArray.forEach {[weak self] listModel in
186 197 guard let self = self else { return }
187 198 self.dataURLArray.add(listModel.videoUrl)
188 199 }
  200 + self.tempDataArray.addObjects(from: dataArray)
  201 + self.tempDataURLArray.addObjects(from: self.dataURLArray as! [Any])
189 202 }
190 203  
191 204 /// 初始化播放器
... ... @@ -283,6 +296,9 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
283 296  
284 297  
285 298 addRefreshView()
  299 + if self.tableView.mj_footer == nil {
  300 + self.tableView.mj_footer = footerRefreshView
  301 + }
286 302  
287 303 player = ZFPlayerController(scrollView: tableView, playerManager: playerManager, containerViewTag: 100)
288 304 player.disableGestureTypes = [.pan, .pinch]
... ... @@ -296,14 +312,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
296 312 guard let self = self else { return }
297 313 self.controlView.videoPlayer((self.player)!, currentTime: self.player.currentTime, totalTime: self.player.totalTime)
298 314 let index = self.dataURLArray.index(of: assetURL.absoluteString)
299   - let homeModel = self.dataArray[index] as! CNLiveAlbumListModel
300   - self.currentIndex = index
301   - if homeModel.product?.check == false {
302   - if homeModel.product?.productType == "4" {
303   - //这里表示可以进行试听
304   - } else {
305   - (self.player)!.stopCurrentPlayingCell()
  315 + if let homeModel = self.dataArray[index] as? CNLiveAlbumListModel{
  316 + self.currentIndex = index
  317 + if homeModel.product?.check == false {
  318 + if homeModel.product?.productType == "4" {
  319 + //这里表示可以进行试听
  320 + } else {
  321 + (self.player)!.stopCurrentPlayingCell()
  322 + }
306 323 }
  324 + }else{
  325 +
307 326 }
308 327 }
309 328 // 更新另一个控制层的时间
... ... @@ -328,7 +347,15 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
328 347 guard let self = self else { return }
329 348 self.controlView.videoPlayer((self.player)!)
330 349 self.player.currentPlayerManager.stop()
  350 + //短剧播放器->剧集播放器 播放下一集
  351 + self.currentIndex = self.currentIndex + 1
  352 + if self.currentIndex >= self.dataArray.count{
  353 + //最后一集,重置为最后一集
  354 + self.currentIndex = self.dataArray.count - 1
  355 + }
  356 +
331 357 let indexPath = IndexPath(row: self.currentIndex, section: 0)
  358 + self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(self.currentIndex)*KSreenHeight), animated: true)//校正偏移量
332 359 self.playVideo(at: indexPath as IndexPath)
333 360 }
334 361  
... ... @@ -398,10 +425,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
398 425 self.tableView.refreshControl = headerRefreshView
399 426 footerRefreshView = CNLiveFooterRefresh(refreshingBlock: { [weak self] in
400 427 guard let self = self else { return }
401   - self.player.stopCurrentPlayingCell()
402   - self.currentIndex = 0
403   - self.pageNum += 1
404   - self.requestData {noMore in }
  428 + if self.isDuanJuPlayer
  429 + {//短剧
  430 + if self.tableView.mj_footer != nil {
  431 + self.tableView.mj_footer?.endRefreshing()
  432 + self.tableView.mj_footer?.endRefreshingWithNoMoreData()
  433 + }
  434 + }else{//剧集
  435 + self.player.stopCurrentPlayingCell()
  436 + self.pageNum += 1
  437 + self.requestData {noMore in }
  438 + }
405 439 })
406 440 //预加载下
407 441 CNLiveQQEmotionManager.emotionsForQQ()
... ... @@ -412,7 +446,22 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
412 446 if self.isDuanJuPlayer{
413 447 self.requestAllHotListData { noMore in }
414 448 }else{
415   - self.requestData {noMore in }
  449 + self.realHotArr.removeAllObjects()
  450 + self.realHotAllFirstArr.removeAllObjects()
  451 + self.realHotAllTotalArr.removeAllObjects()
  452 + self.realHotAllTotalVideoUrlArr.removeAllObjects()
  453 + self.currentDuanJuIndex = 0
  454 + self.isHomePagePush = false
  455 + self.currentIndex = 0
  456 + self.currentDuanJuIndex = 0
  457 + if self.pickerView != nil {
  458 + self.pickerView.setupWithArray(dataArray: self.dataArray)
  459 + }
  460 + self.tableView.refreshControl?.endRefreshing()
  461 + self.tableView.reloadData()
  462 + DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
  463 + self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(self.currentIndex!)*KSreenHeight), animated: true)//校正偏移量
  464 + }
416 465 }
417 466 }
418 467  
... ... @@ -439,6 +488,8 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
439 488 self.realHotAllTotalArr.removeAllObjects()
440 489 self.dataArray.removeAllObjects()
441 490 self.dataURLArray.removeAllObjects()
  491 + self.tempDataArray.removeAllObjects()
  492 + self.tempDataURLArray.removeAllObjects()
442 493  
443 494 showLoading(message: "")
444 495 let tempRealHotArr = Array(self.realHotArr)
... ... @@ -522,8 +573,10 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
522 573  
523 574 //等全部数据弄好了再设置
524 575 self.dataArray.addObjects(from: self.realHotAllFirstArr as! [CNLiveAlbumListModel])
525   -
526 576 self.dataURLArray.addObjects(from: self.realHotAllFirstVideoUrlArr as! [String])
  577 + //
  578 + self.tempDataArray.addObjects(from: self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel])
  579 + self.tempDataURLArray.addObjects(from: self.realHotAllTotalVideoUrlArr[self.currentDuanJuIndex] as! [String])
527 580 if self.tableView.mj_footer != nil {
528 581 self.tableView.mj_footer?.endRefreshing()
529 582 }
... ... @@ -534,6 +587,9 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
534 587 self.tableView.refreshControl?.endRefreshing()
535 588 self.tableView.reloadData()
536 589  
  590 + if self.tableView.mj_footer == nil {
  591 + self.tableView.mj_footer = self.footerRefreshView
  592 + }
537 593  
538 594 self.playTheIndex(index: self.currentDuanJuIndex)
539 595 }
... ... @@ -552,10 +608,35 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
552 608 // self.tableView.setContentOffset(CGPoint.zero, animated: false)
553 609 // }
554 610 }
555   - let listArray = (result as! [Any]).first as! [CNLiveAlbumListModel]
556   - self.dataArray.addObjects(from: listArray)
557   - let urlArray = (result as! [Any]).last as! [String]
558   - self.dataURLArray.addObjects(from: urlArray)
  611 + var listArray = [CNLiveAlbumListModel]()
  612 + var urlArray = [String]()
  613 + if self.isTempDuanJuPlayer{
  614 + //是短剧,点击了集数列表
  615 + if self.isDuanJuPlayer{
  616 + //没点集数,还是短剧
  617 + print("1")
  618 + }else{
  619 + //点击了集数,切换剧集
  620 + listArray = (result as! [Any]).first as! [CNLiveAlbumListModel]
  621 + self.tempDataArray.addObjects(from: listArray)
  622 + urlArray = (result as! [Any]).last as! [String]
  623 + self.tempDataURLArray.addObjects(from: urlArray)
  624 + self.dataArray.removeAllObjects()
  625 + self.dataArray.addObjects(from: self.tempDataArray as! [Any])
  626 + self.dataURLArray.removeAllObjects()
  627 + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [Any])
  628 + }
  629 + }else{
  630 + //剧集
  631 + listArray = (result as! [Any]).first as! [CNLiveAlbumListModel]
  632 + self.tempDataArray.addObjects(from: listArray)
  633 + urlArray = (result as! [Any]).last as! [String]
  634 + self.tempDataURLArray.addObjects(from: urlArray)
  635 + self.dataArray.removeAllObjects()
  636 + self.dataArray.addObjects(from: self.tempDataArray as! [Any])
  637 + self.dataURLArray.removeAllObjects()
  638 + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [Any])
  639 + }
559 640 if self.tableView.mj_footer != nil {
560 641 self.tableView.mj_footer?.endRefreshing()
561 642 }
... ... @@ -581,14 +662,23 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
581 662 }
582 663 }
583 664  
584   - let model = listArray.first?.albumMsgModel
585   - let toIndex = (model?.episodeLast ?? 1)-1 <= 0 ? 0 : (model?.episodeLast ?? 1)-1
586   - var page = (self.roundUpToNearestTen(toIndex))/10
587   - if page == 0 {
588   - page = 1
  665 + if self.isTempDuanJuPlayer == true && self.isDuanJuPlayer == false{
  666 + //从短剧变为剧集
  667 +// self.playTheIndex(index: self.currentIndex)
  668 + }else{//剧集
  669 + if self.slideModel == nil && self.currentIndex == 0{//非实时热榜进入,找上一次播放集数
  670 + let model = listArray.first?.albumMsgModel
  671 + let toIndex = (model?.episodeLast ?? 1)-1 <= 0 ? 0 : (model?.episodeLast ?? 1)-1
  672 + var page = (self.roundUpToNearestTen(toIndex))/10
  673 + if page == 0 {
  674 + page = 1
  675 + }
  676 + self.pageNum = page
  677 + self.playTheIndex(index: toIndex)
  678 + }else{
  679 + print("加载更多列表")
  680 + }
589 681 }
590   - self.pageNum = page
591   - self.playTheIndex(index: toIndex)
592 682 } else {
593 683 if self.tableView.mj_footer != nil {
594 684 self.tableView.mj_footer?.endRefreshing()
... ... @@ -608,6 +698,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
608 698 tableView.scrollToRow(at: indexPath, at: .none, animated: false)
609 699 DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
610 700 self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(index)*KSreenHeight), animated: true)//校正偏移量
  701 + self.playVideo(at: IndexPath(row: index, section: 0))
611 702 }
612 703  
613 704 // 使用zf_filterShouldPlayCellWhileScrolled过滤播放
... ... @@ -667,24 +758,44 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
667 758  
668 759 if self.isDuanJuPlayer{
669 760 self.currentDuanJuIndex = indexPath.row
670   - let arr1 = self.realHotAllTotalArr[self.currentDuanJuIndex] as! Array<Any>
671   - let arr = NSMutableArray()
672   - arr1.forEach { obj in
673   - let duanjuMdl = obj as! CNLiveAlbumListModel
674   - arr.add(duanjuMdl)
675   - }
676   - if self.pickerView != nil {
677   - self.pickerView.setupWithArray(dataArray: arr)
  761 + if self.currentDuanJuIndex < self.realHotAllTotalArr.count{
  762 + let arr1 = self.realHotAllTotalArr[self.currentDuanJuIndex] as! Array<Any>
  763 + let arr = NSMutableArray()
  764 + arr1.forEach { obj in
  765 + let duanjuMdl = obj as! CNLiveAlbumListModel
  766 + arr.add(duanjuMdl)
  767 + }
  768 + if self.pickerView != nil {
  769 + self.pickerView.setupWithArray(dataArray: arr)
  770 + }
678 771 }
679 772 }else{
680 773 if self.pickerView != nil {
681 774 self.pickerView.setupWithArray(dataArray: self.dataArray)
682 775 }
683 776 }
684   - let data: CNLiveAlbumListModel = dataArray[indexPath.row] as! CNLiveAlbumListModel
685   - self.player.playTheIndexPath(indexPath, assetURL: URL(string: data.videoUrl)!)
686   - controlView.resetControlView()
687   - controlView.showCoverView(withUrl: data.poster)
  777 + if self.isPausePlayer == true{
  778 +// self.playerManager.pause()
  779 + print("111")
  780 + }else{
  781 + var index = 0
  782 + if self.isHomePagePush == true{
  783 + //是主页push
  784 + self.isHomePagePush = false
  785 + index = self.currentIndex
  786 + }else{
  787 + //不是主页push
  788 + self.currentIndex = indexPath.row
  789 + index = self.currentIndex
  790 +
  791 + }
  792 + let idxPath = IndexPath(row: index, section: indexPath.section)
  793 + if let data: CNLiveAlbumListModel = dataArray[index] as? CNLiveAlbumListModel{
  794 + self.player.playTheIndexPath(idxPath, assetURL: URL(string: data.videoUrl)!)
  795 + controlView.resetControlView()
  796 + controlView.showCoverView(withUrl: data.poster)
  797 + }
  798 + }
688 799 }
689 800 //10倍数向上取整
690 801 func roundUpToNearestTen(_ number: Int) -> Int {
... ... @@ -761,12 +872,17 @@ extension CNLiveShortVideoViewController {
761 872 }
762 873 }
763 874 func listActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) {
764   - var arr = NSMutableArray()
  875 + let arr = NSMutableArray()
765 876 var pageNum:NSInteger = 1
766 877 if self.isDuanJuPlayer{
767 878 let listArr = self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel]
768 879 arr.addObjects(from: listArr)
769 880 pageNum = 1
  881 + self.aid = listArr.first?.albumMsgModel?.albumId
  882 + self.tempDataArray.removeAllObjects()
  883 + self.tempDataArray.addObjects(from: self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel])
  884 + self.tempDataURLArray.removeAllObjects()
  885 + self.tempDataURLArray.addObjects(from: self.realHotAllTotalVideoUrlArr[self.currentDuanJuIndex] as! [String])
770 886 }else{
771 887 arr.addObjects(from: self.dataArray as! [Any])
772 888 pageNum = self.pageNum
... ... @@ -774,36 +890,42 @@ extension CNLiveShortVideoViewController {
774 890  
775 891 self.isTempDuanJuPlayer = self.isDuanJuPlayer
776 892 self.isDuanJuPlayer = false
  893 + self.isPausePlayer = true
  894 +
777 895 pickerView = CNLiveShortVideoContentListView.showVideoContentListView(aid: viewcell.homeModel.albumMsgModel!.albumId,pageNum: pageNum,title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: arr, episodeNow: viewcell.homeModel.albumMsgModel!.episodeNow, result: {[weak self] listModel in
778 896 guard let self = self else { return }
779 897  
780 898 if listModel is String{
781 899 //点击了x
782 900 self.isDuanJuPlayer = self.isTempDuanJuPlayer
  901 + self.isPausePlayer = false
783 902 }else{
784   - //点击了cell
  903 + // MARK: - 点击了剧集列表cell
785 904 //切换为剧集播放器
  905 + self.isPausePlayer = false
786 906 self.isDuanJuPlayer = false
787 907 self.isTempDuanJuPlayer = false
788 908 //更改数据源
789 909 self.dataArray.removeAllObjects()
790 910 self.dataURLArray.removeAllObjects()
791   - let arr = self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel]
792   - self.dataArray.addObjects(from: arr)
793   - let urlArr = self.realHotAllTotalVideoUrlArr [self.currentDuanJuIndex] as! [String]
794   - self.dataURLArray.addObjects(from: urlArr)
  911 +
  912 + self.dataArray.addObjects(from: self.tempDataArray as! [CNLiveAlbumListModel])
  913 +
  914 + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [String])
  915 +
795 916 self.tableView.reloadData()
796 917 let index = self.dataArray.index(of: listModel) as NSInteger
  918 + self.currentIndex = index
797 919 self.playTheIndex(index: index)
798   -
799 920 }
800 921 }, reload: {[weak self] page in
801 922 guard let self = self else { return }
802 923 self.player.stopCurrentPlayingCell()
803   - self.currentIndex = 0
  924 + if page == 1{
  925 + self.currentIndex = 0
  926 + }
804 927 self.pageNum = page
805 928  
806   -
807 929 self.requestData { noMore in
808 930 self.pickerView.tableView.mj_footer?.endRefreshing()
809 931 if noMore {
... ...