123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- //
- // MVMineProductController.swift
- // MusicVideoPlus
- //
- // Created by SanW on 2021/6/22.
- //
- import BFFramework
- import UIKit
- class MVMineProductController: PQBaseViewController {
- var itemsList: [PQVideoListModel] = Array<PQVideoListModel>.init()
- var pageNum: Int = 1
- let margin: CGFloat = 14
- let headH: CGFloat = cDefaultMargin * 9
- lazy var headInfoView: MVMineHeadInfoView = {
- let headInfoView = MVMineHeadInfoView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: headH), margin: 0)
- return headInfoView
- }()
- lazy var flowLayout: PQCollectionViewFlowlayout = {
- let flowLayout = PQCollectionViewFlowlayout()
- flowLayout.columnCount = 2
- flowLayout.sectionInset = .zero
- flowLayout.minimumLineSpacing = cDefaultMargin / 2
- flowLayout.minimumInteritemSpacing = cDefaultMargin / 2
- flowLayout.headerH = headH
- return flowLayout
- }()
- lazy var collectionView: UICollectionView = {
- let width = (cScreenWidth - 30) / 2
- let proCollectView = UICollectionView(frame: CGRect(x: margin, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth - margin * 2, height: view.frame.height - cDevice_iPhoneNavBarAndStatusBarHei - cSafeAreaHeight), collectionViewLayout: flowLayout)
- proCollectView.register(MVMineProductCell.self, forCellWithReuseIdentifier: String(describing: MVMineProductCell.self))
- proCollectView.showsVerticalScrollIndicator = false
- proCollectView.delegate = self
- proCollectView.dataSource = self
- proCollectView.backgroundColor = UIColor.white
- proCollectView.addRefreshView { [weak self] isRefresh in
- self?.loadRequestData(isRefresh: isRefresh)
- }
- return proCollectView
- }()
- lazy var emptyView: MVProductEmptyView = {
- let emptyView = MVProductEmptyView(frame: CGRect(x: 0, y: headH, width: collectionView.frame.width, height: collectionView.frame.height - headH))
- emptyView.btnClickHandle = { [weak self] _ in
- let vc = PQStuckPointMaterialController()
- self?.navigationController?.pushViewController(vc, animated: true)
- }
- emptyView.isHidden = true
- return emptyView
- }()
- override func viewDidLoad() {
- super.viewDidLoad()
- view.addSubview(collectionView)
- collectionView.addSubview(emptyView)
- collectionView.addSubview(headInfoView)
- leftBackButton()
- loadRequestData()
- setTitle(title: BFLoginUserInfo.shared.nickName, color: UIColor(white: 0, alpha: 0))
- MVMineViewModel.userInfoData { [weak self] count, avatarUrl, nickName, msg in
- if count != nil {
- BFLoginUserInfo.shared.videos = "\(count ?? 0)"
- }
- if avatarUrl != nil, (avatarUrl?.count ?? 0) > 0 {
- BFLoginUserInfo.shared.avatarUrl = avatarUrl ?? ""
- }
- if nickName != nil, (nickName?.count ?? 0) > 0 {
- BFLoginUserInfo.shared.nickName = nickName ?? ""
- }
- if msg == nil {
- saveUserDefaults(key: cUserInfoStorageKey, value: BFLoginUserInfo.shared.toString())
- self?.headInfoView.addData()
- }
- }
- PQEventTrackViewModel.baseReportUpload(businessType: .bt_pageView, objectType: .ot_shanyinApp_viewPage_mineTab, pageSource: .sp_shanyinApp_mine, extParams: nil, remindmsg: "")
- }
- /// 请求网络数据
- /// - Parameter isRefresh: <#isRefresh description#>
- /// - Returns: <#description#>
- func loadRequestData(isRefresh: Bool = true) {
- PQLoadingHUB.shared.showHUB(superView:view)
- if isRefresh {
- pageNum = 1
- } else {
- pageNum = pageNum + 1
- }
- MVMineViewModel.userVideoListData(pageNum: pageNum) { [weak self] videoList, _ in
- if videoList != nil {
- if (videoList?.count ?? 0) > 0 {
- if isRefresh {
- self?.itemsList = videoList!
- } else {
- self?.itemsList = self!.itemsList + videoList!
- }
- if self?.itemsList != nil {
- self?.flowLayout.findList = self?.itemsList as! [Any]
- }
- self?.collectionView.reloadData()
- self?.emptyView.isHidden = true
- } else {
- self?.emptyView.isHidden = false
- }
- } else {
- cShowHUB(superView: nil, msg: "没有网络连接")
- self?.pageNum = (self?.pageNum ?? 1) - 1
- }
- if isRefresh {
- self?.collectionView.mj_header?.endRefreshing()
- self?.collectionView.mj_footer?.resetNoMoreData()
- } else {
- self?.collectionView.mj_footer?.endRefreshing()
- }
- if (videoList?.count ?? 0) < 20, videoList != nil {
- self?.collectionView.mj_footer?.endRefreshingWithNoMoreData()
- }
- PQLoadingHUB.shared.dismissHUB(superView:(self?.view ?? UIView()))
-
- }
- }
- }
- extension MVMineProductController: UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate {
- func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {
- return itemsList.count
- }
- func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
- let itemData = itemsList[indexPath.item]
- let cell = MVMineProductCell.productCell(collectionView: collectionView, indexPath: indexPath)
- cell.videoData = itemData
- cell.btnClickHandle = { [weak self] sender, videoData in
- self?.btnClickHandle(sender: sender, videoData: videoData, indexPath: indexPath)
- }
- return cell
- }
- func collectionView(_: UICollectionView, didSelectItemAt indexPath: IndexPath) {
- if itemsList[indexPath.item].auditStatus != 5 || itemsList[indexPath.item].transcodeStatus != 3 {
- return
- }
- let playVC = MVPlayViewController()
- playVC.itemsList = itemsList
- playVC.currentIndex = indexPath
- playVC.pageNum = pageNum
- navigationController?.pushViewController(playVC, animated: true)
- }
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
- BFLog(message: "scrollView.contentOffset.y = \(scrollView.contentOffset.y)")
- if scrollView.contentOffset.y <= 0 {
- navTitleLabel?.textColor = UIColor(white: 0, alpha: 0)
- } else if scrollView.contentOffset.y >= headH {
- navTitleLabel?.textColor = UIColor(white: 0, alpha: 1)
- } else {
- var alpha: CGFloat = (scrollView.contentOffset.y / headH)
- if alpha < 0 {
- alpha = 0
- }
- if alpha > 1 {
- alpha = 1
- }
- navTitleLabel?.textColor = UIColor(white: 0, alpha: alpha)
- }
- }
- /// 处理按钮点击事件
- /// - Parameters:
- /// - sender: <#sender description#>
- /// - videoData: <#videoData description#>
- func btnClickHandle(sender: UIButton, videoData: PQVideoListModel?, indexPath: IndexPath) {
- switch sender.tag {
- case 1:
- let seleView = PQSelectedOprationView.showSelectedOprationView(itemList: ["删除视频"]) { sender in
- if sender.tag == 1 {
- if !isNetConnected() {
- cShowHUB(superView: nil, msg: "没有网络连接")
- return
- }
- PQBaseViewModel.deleteVideo(videoId: Int(videoData?.uniqueId ?? "0") ?? 0) { [weak self] isSuccess, videoId, _ in
- if isSuccess {
- self?.itemsList.removeAll(where: { tempVideo in
- tempVideo.uniqueId == "\(videoId)"
- })
- self?.flowLayout.findList = self?.itemsList as! [PQVideoListModel]
- self?.collectionView.reloadData()
- cShowHUB(superView: nil, msg: "删除成功")
- if (self?.itemsList.count ?? 0) <= 0 {
- self?.loadRequestData()
- }
- var videos: Int = (Int(BFLoginUserInfo.shared.videos) ?? 0) - 1
- if videos < 0 {
- videos = 0
- }
- BFLoginUserInfo.shared.videos = "\(videos)"
- self?.headInfoView.updateProducts()
- } else {
- cShowHUB(superView: nil, msg: "删除失败")
- }
- }
- }
- }
- seleView.contentView.backgroundColor = UIColor.hexColor(hexadecimal: "#F2F2F2")
- seleView.cancelBtn.backgroundColor = UIColor.white
- seleView.cancelBtn.setTitleColor(UIColor.black, for: .normal)
- seleView.cancelBtn.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
- let firstBtn: UIButton? = seleView.contentView.subviews[1] as? UIButton
- firstBtn?.backgroundColor = UIColor.white
- firstBtn?.setTitleColor(UIColor.hexColor(hexadecimal: "#FF0000"), for: .normal)
- firstBtn?.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
- seleView.contentView.subviews[2].backgroundColor = UIColor.hexColor(hexadecimal: "#F2F2F2")
- case 2:
- PQBaseViewModel.videoDetailInfo(videoId: videoData?.uniqueId ?? "") { [weak self] videoList, _, msg in
- if (videoList?.count ?? 0) > 0, msg == nil, !(videoList?.first?.first?.transcodeStatus == 2 || videoList?.first?.first?.auditStatus == 1 || videoList?.first?.first?.transcodeStatus == 1) {
- let tempVideoData = videoList?.first?.first
- if tempVideoData != nil {
- self?.itemsList[indexPath.item] = tempVideoData!
- }
- self?.collectionView.reloadData()
- self?.collectionView(self!.collectionView, didSelectItemAt: indexPath)
- } else {
- cShowHUB(superView: nil, msg: "请稍后再刷新")
- }
- }
- default:
- break
- }
- }
- @objc func btnClick(sender _: UIButton) {}
- }
|