杨锴
2024-11-11 9e77b0f9014653255eb51e81b8a8ba719443839d
XQMuse/Root/Home/HomeVC.swift
@@ -14,6 +14,8 @@
import CoreTelephony
let SetBGMSuccess_Noti = Notification.Name.init("SetBGMSuccess_Noti")
let ToShowTree_Noti = Notification.Name.init("ToShowTree_Noti")
let ReloadData_Noti = Notification.Name.init("ReloadData_Noti")
struct TitleItem{
            var id = 0
@@ -26,7 +28,7 @@
class HomeViewModel{
            var homeTopMenuItems = [HomeTopMenuItem]()
            var homeBottomMenuItems = [HomeTopMenuItem]()
            var todyModel:MeditationModel?
            var todyModel:ToDayMeditationModel?
            var privateTodyModels = [MeditationModel]()
            var meditationList = [MeditationListModel]()
}
@@ -37,6 +39,7 @@
            private var titleItems = [TitleItem]()
            private var viewModel = HomeViewModel()
    private var timer:Timer?
    private var needPopToTree:Bool = false //是否需要跳转到树苗
    private var cellularData:CTCellularData!
@@ -45,11 +48,28 @@
        //获取用户信息
        if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){
            Services.getUserDetail().subscribe(onNext: {data in
            Services.isFirst().subscribe(onNext: {[weak self]data in
                if data.data == true{
                    self?.navigationController?.tabBarController?.selectedIndex = 2
                    var viewModel = UserDefaultSettingViewModel.getSetting()
                    viewModel?.userFirstOpenTreeTask = true
                    UserDefaultSettingViewModel.saveSetting(viewModel!)
                }
            }).disposed(by: disposeBag)
            Services.getUserDetail(showProgress: false).subscribe(onNext: {data in
                if let m = data.data{UserViewModel.saveAvatarInfo(m)}
            }).disposed(by: disposeBag)
        }
        self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
        if needPopToTree{
            navigationController?.tabBarController?.selectedIndex = 2
        }
        if AudioPlayer.getSharedInstance().scenePlayer?.timeControlStatus == .paused && UserDefaultSettingViewModel.getSetting()?.bgm != nil{
            AudioPlayer.getSharedInstance().playSceneAt(UserDefaultSettingViewModel.getSetting()!.bgm!.audioFile)
        }
    }
    override func viewDidLoad() {
@@ -94,12 +114,10 @@
                                if !state{
                                    exit(0)
                                }else{
                                    if var m = UserDefaultSettingViewModel.getSetting(){
                                        m.userFirstLaunch = false
                                        UserDefaultSettingViewModel.saveSetting(m)
                                    }
                                    //跳转计划引导
                                    let nav  = BaseNav(rootViewController: PlanGuideVC(isFromFist: true))
                                    nav.modalPresentationStyle = .fullScreen
@@ -199,16 +217,9 @@
                        NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in
            guard let weakSelf = self else { return }
            weakSelf.getData()
            Services.isFirst().subscribe(onNext: {data in
                if data.data == true{
                    weakSelf.navigationController?.tabBarController?.selectedIndex = 2
                    let viewModel = UserDefaultSettingViewModel.getSetting()
//                    viewModel?.userFirstOpenTreeTask = false
                    UserDefaultSettingViewModel.saveSetting(viewModel!)
                }
            }).disposed(by: weakSelf.disposeBag)
            weakSelf.needPopToTree = data.object as? Bool ?? false
            weakSelf.getData()
                        }).disposed(by: disposeBag)
@@ -218,6 +229,11 @@
        NotificationCenter.default.rx.notification(LoginQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
            self.getData()
        }).disposed(by: disposeBag)
        NotificationCenter.default.rx.notification(ReloadData_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
            self.tableView.reloadData()
        }).disposed(by: disposeBag)
            }
@@ -250,24 +266,25 @@
                        }).disposed(by: disposeBag)
                        Services.getTopdayMedita().subscribe(onNext: { data in
                                    self.viewModel.todyModel = data.data?.clientMeditationVO
                                    self.viewModel.todyModel = data.data
                                    self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none)
                        }).disposed(by: disposeBag)
        let m = MeditationModel()
        m.id = 0
        self.viewModel.privateTodyModels = [m]
        if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){
            Services.getPersonalityPlan().subscribe(onNext: { data in
                if let m = data.data{
                    if m.count > 0{
                        self.viewModel.privateTodyModels = m
                    }else{
                        let m = MeditationModel()
                        m.id = 0
                        self.viewModel.privateTodyModels = [m]
                    }
                    self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none)
                }
            }).disposed(by: disposeBag)
        }else{
            self.tableView.reloadData()
        }
                        Services.getMeditationAndCateList().subscribe(onNext: { data in
@@ -318,7 +335,7 @@
    @objc func autoUpdate(){
        print("--->")
        Services.getTopdayMedita().subscribe(onNext: { data in
            self.viewModel.todyModel = data.data?.clientMeditationVO
            self.viewModel.todyModel = data.data
            self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none)
        }).disposed(by: disposeBag)
    }
@@ -357,20 +374,39 @@
            func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.section == 0{
            if let m = viewModel.todyModel{
                Services.getMeditationDetail(id: m.id).subscribe(onNext: {[weak self]data in
                    guard let weakSelf = self else { return }
                    if let m = data.data{
                        if AudioPlayer.getSharedInstance().meditationModel?.id == m.id && AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing{
                            return
                        }
                        AudioPlayer.getSharedInstance().playBGMAt(firstPlayIndex: 0, model: m, delegate: self)
                        PayMusicVC.show(model: m,isHidden: false)
                        self?.tableView.reloadData()
            if let m = viewModel.todyModel,let detailId = m.clientMeditationVO?.id{
                if AudioPlayer.getSharedInstance().meditationModel?.id == m.meditationId{
                    if AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .paused{
                        AudioPlayer.getSharedInstance().bgmPlayer?.play()
                        AudioPlayer.getSharedInstance().masterPlayer?.play()
                        PayMusicVC.updateStatus(.playing)
                        self.viewModel.todyModel?.playAtMe = true
                    }else{
                        AudioPlayer.getSharedInstance().bgmPlayer?.pause()
                        AudioPlayer.getSharedInstance().masterPlayer?.pause()
                        PayMusicVC.updateStatus(.pause)
                        self.viewModel.todyModel?.playAtMe = false
                    }
                }).disposed(by: disposeBag)
                    DispatchQueue.main.asyncAfter(delay: 0.4) {
                        self.tableView.reloadData()
                    }
                }else{
                    //游客模式都能播放
                    Services.getMeditationDetail(id: detailId).subscribe(onNext: {[weak self]data in
                        if let m = data.data{
                            if AudioPlayer.getSharedInstance().meditationModel?.id == m.id && AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing{
                                return
                            }
                            AudioPlayer.getSharedInstance().playBGMAt(firstPlayIndex: 0, model: m, delegate: self)
                            PayMusicVC.show(model: m,isHidden: false)
                            self?.viewModel.todyModel?.playAtMe = true
                            DispatchQueue.main.asyncAfter(delay: 1.0) {
                                self?.tableView.reloadData()
                            }
                        }
                    }).disposed(by: disposeBag)
                }
            }else{
                alert(msg: "平台暂未设置今日疗愈")
            }
@@ -384,26 +420,28 @@
            }
            func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                        if indexPath.section == 0{
        if indexPath.section == 0 && indexPath.row == 0{
            //每日疗愈
                                    let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell
            if viewModel.todyModel?.id != 0{
                cell.model = viewModel.todyModel
                cell.view_data.isHidden = false
                cell.img_play.isHidden = AudioPlayer.getSharedInstance().meditationModel?.id == viewModel.todyModel?.id
            }else{
                cell.img_cover.image = UIImage(named: "bg_today")
                cell.view_data.isHidden = true
            }
            print("--->\(cell)")
            cell.setplaying()
                                    return cell
                        }else if indexPath.section == 1{
                        }else if indexPath.section == 1 && indexPath.row == 0{
            //私人定制
                                    let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell
                                    cell.style = .style1
            cell.setModels(viewModel.privateTodyModels,showType: .horizontal)
                                    return cell
                        }else if indexPath.section == 2{
                        }else if indexPath.section == 2 && indexPath.row == 0{
            // 新手冥想指南
                                    let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_2_TCell") as! Home_Style_2_TCell
            cell.imgView.image = UIImage(named: "bg_guide_home")