杨锴
2024-11-04 f4c46a585290d8136819673dfff2df9ea5c5a330
fix bug
20个文件已修改
250 ■■■■ 已修改文件
XQMuse.xcodeproj/project.pbxproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.xib 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemListVC.swift 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/SearchContentVC.swift 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/LoginVC.swift 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Models.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuideVC.swift 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_1_VC.xib 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_2_VC.swift 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_2_VC.xib 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_3_VC.swift 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse.xcodeproj/project.pbxproj
@@ -1926,7 +1926,7 @@
                GCC_OPTIMIZATION_LEVEL = s;
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = XQMuse/Info.plist;
                INFOPLIST_KEY_CFBundleDisplayName = "心泉冥想";
                INFOPLIST_KEY_CFBundleDisplayName = "心泉·疗愈";
                INFOPLIST_KEY_LSApplicationCategoryType = "";
                INFOPLIST_KEY_NSCameraUsageDescription = "相机";
                INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "定位";
@@ -2081,7 +2081,7 @@
                GCC_OPTIMIZATION_LEVEL = s;
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = XQMuse/Info.plist;
                INFOPLIST_KEY_CFBundleDisplayName = "心泉冥想";
                INFOPLIST_KEY_CFBundleDisplayName = "心泉·疗愈";
                INFOPLIST_KEY_LSApplicationCategoryType = "";
                INFOPLIST_KEY_NSCameraUsageDescription = "相机";
                INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "定位";
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift
@@ -40,7 +40,9 @@
                func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
                                guard let m = model else {return}
                                if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
        let isVip = UserViewModel.getAvatarInfo().isVip
                                if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
                                                let vc = CourseDetialVideoVC(items: model!.list, selectIndex: indexPath)
                                                JQ_currentNavigationController().pushViewController(vc)
                                }else{
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift
@@ -19,8 +19,8 @@
    @IBOutlet weak var view_price: UIView!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var img_offine: UIImageView!
    private var showType:DisplayType!
                override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
@@ -28,9 +28,19 @@
        view_price.jq_cornerRadius = 12.55
    }
                func setMeditationModel(_ model:MeditationModel){
                func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
        img_offine.isHidden = true
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
        let imageUrls = model.coverUrl.components(separatedBy: ",")
        if showType == .horizontal{
            img_cover.sd_setImage(with: URL(string: imageUrls.first))
        }else{
            img_cover.sd_setImage(with: URL(string: imageUrls.last))
        }
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift
@@ -44,7 +44,7 @@
    }
                func setMeditationModel(_ model:MeditationModel){
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
        img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last))
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
@@ -54,7 +54,7 @@
                }
                func setCourseModel(_ model:CourseModel){
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
                                img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last))
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift
@@ -16,6 +16,7 @@
                @IBOutlet weak var label_subTitle: UILabel!
                
                var meditationModel:MeditationModel?
    private var showType:DisplayType!
                override func awakeFromNib() {
                                super.awakeFromNib()
@@ -23,10 +24,17 @@
                }
                func setMeditationModel(_ model:MeditationModel){
                func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                cover_bgImage.sd_setImage(with: URL(string: model.coverUrl))
        let imgUrls = model.coverUrl.components(separatedBy: ",")
        if showType == .horizontal{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.first))
        }else{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.last))
        }
                }
}
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift
@@ -19,7 +19,9 @@
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var img_vip: UIImageView!
    @IBOutlet weak var image_free: UIImageView!
    private var showType:DisplayType!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
@@ -40,10 +42,18 @@
    }
    func setMeditationModel(_ model:MeditationModel){
    func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
        label_title.text = model.meditationTitle
        label_subTitle.text = model.coverDescription
        cover_bgImage.sd_setImage(with: URL(string: model.coverUrl))
        let imgUrls = model.coverUrl.components(separatedBy: ",")
        if showType == .horizontal{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.first))
        }else{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.last))
        }
        label_peopleNum.text = model.realLearnedNum.string
        image_free.isHidden = model.chargeType != .free
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.xib
@@ -54,7 +54,7 @@
                                <rect key="frame" x="11" y="229.99999999999997" width="395" height="66.666666666666657"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1bZ-4v-DSk">
                                        <rect key="frame" x="11.666666666666664" y="17" width="18" height="18.666666666666671"/>
                                        <rect key="frame" x="11.666666666666657" y="17" width="314" height="18.666666666666671"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="18.5" id="ovU-Xb-Yac"/>
                                        </constraints>
@@ -62,27 +62,33 @@
                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Enr-D6-xzP">
                                        <rect key="frame" x="11.666666666666664" y="40.666666666666686" width="10.666666666666664" height="13.333333333333336"/>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="251" text="---------------------------------------------------------------" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Enr-D6-xzP">
                                        <rect key="frame" x="11.666666666666657" y="40.666666666666686" width="286.33333333333337" height="13.333333333333336"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_use_small" translatesAutoresizingMaskIntoConstraints="NO" id="oQL-yV-XUJ">
                                        <rect key="frame" x="35.666666666666671" y="42" width="10" height="10.333333333333336"/>
                                        <rect key="frame" x="311.66666666666669" y="42" width="10" height="10.333333333333336"/>
                                        <constraints>
                                            <constraint firstAttribute="width" constant="10" id="Slz-7f-7Ue"/>
                                            <constraint firstAttribute="height" constant="10.5" id="XYC-hN-Jp1"/>
                                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="10" id="Z1y-Lh-6y7"/>
                                            <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="10.33" id="wvV-dq-I6B"/>
                                        </constraints>
                                    </imageView>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ANZ-Kn-isU">
                                        <rect key="frame" x="48.666666666666671" y="40.666666666666686" width="7" height="13.333333333333336"/>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ANZ-Kn-isU">
                                        <rect key="frame" x="324.66666666666669" y="40.666666666666686" width="7" height="13.333333333333336"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_play" translatesAutoresizingMaskIntoConstraints="NO" id="jHj-Io-MFM">
                                        <rect key="frame" x="336.66666666666669" y="10.333333333333343" width="46" height="46"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="46" id="6b5-gN-4vl"/>
                                            <constraint firstAttribute="width" constant="46" id="bHl-i8-OE4"/>
                                        </constraints>
                                    </imageView>
                                </subviews>
                                <constraints>
@@ -94,9 +100,11 @@
                                    <constraint firstItem="1bZ-4v-DSk" firstAttribute="leading" secondItem="1q9-TW-tvm" secondAttribute="leading" constant="11.5" id="WlQ-KT-pRy"/>
                                    <constraint firstItem="1bZ-4v-DSk" firstAttribute="top" secondItem="1q9-TW-tvm" secondAttribute="top" constant="17" id="e9a-W4-1PL"/>
                                    <constraint firstItem="Enr-D6-xzP" firstAttribute="top" secondItem="1bZ-4v-DSk" secondAttribute="bottom" constant="5" id="jib-WM-oJ0"/>
                                    <constraint firstItem="jHj-Io-MFM" firstAttribute="leading" secondItem="1bZ-4v-DSk" secondAttribute="trailing" constant="11" id="rOf-uz-Hi5"/>
                                    <constraint firstItem="jHj-Io-MFM" firstAttribute="centerY" secondItem="1q9-TW-tvm" secondAttribute="centerY" id="sZY-bA-ajf"/>
                                    <constraint firstAttribute="height" constant="66.5" id="tHj-Nz-2qU"/>
                                    <constraint firstItem="ANZ-Kn-isU" firstAttribute="centerY" secondItem="Enr-D6-xzP" secondAttribute="centerY" id="ys8-jf-joH"/>
                                    <constraint firstItem="jHj-Io-MFM" firstAttribute="leading" secondItem="ANZ-Kn-isU" secondAttribute="trailing" constant="5" id="z9j-1B-0F0"/>
                                </constraints>
                                <userDefinedRuntimeAttributes>
                                    <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
XQMuse/Root/Home/HomeVC.swift
@@ -141,6 +141,9 @@
                                NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
                                                self.getData()
            if UserDefaultSettingViewModel.getSetting()?.userFirstOpenTreeTask ?? true{
                self.navigationController?.tabBarController?.selectedIndex = 2
            }
                                }).disposed(by: disposeBag)
        NotificationCenter.default.rx.notification(LoginSuccess_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
@@ -169,11 +172,11 @@
                                Services.getCategoryListByType(type: 2).subscribe(onNext: { data in
                                                var items = [HomeTopMenuItem]()
                                                for v in data.data ?? []{
                                                                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl, imageFrom: .url)
                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl, imageFrom: .url)
                                                                items.append(model)
                                                }
                                                self.viewModel.homeBottomMenuItems = items
                                                self.tableView.reloadRows(at: [IndexPath(row: 3, section: 0)], with: .none)
            self.viewModel.homeBottomMenuItems = items
                                                self.tableView.reloadRows(at: [IndexPath(row: 4, section: 0)], with: .none)
                                }).disposed(by: disposeBag)
                                Services.getTopdayMedita().subscribe(onNext: { data in
@@ -198,7 +201,7 @@
                                                                self.viewModel.meditationList = m
                                                                for v in self.viewModel.meditationList{
                for v in self.viewModel.meditationList{
                    if v.clientMeditationCategoryVO?.categoryName.isEmpty ?? true{continue}
                                                                                self.titleItems.append(TitleItem(title: v.clientMeditationCategoryVO?.categoryName ?? "", subTitle: v.clientMeditationCategoryVO?.description ?? "",hasMore:true))
                                                                }
@@ -265,7 +268,7 @@
            //私人定制
                                                let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell
                                                cell.style = .style1
                                                cell.setModels(viewModel.privateTodyModels)
            cell.setModels(viewModel.privateTodyModels,showType: .horizontal)
                                                return cell
                                }else if indexPath.section == 2{
            // 新手冥想指南
@@ -278,18 +281,18 @@
                                                let index = indexPath.section - 3
                                                if index == 0 && indexPath.row != 0{
                                                                let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_5_TCell") as! Home_Style_5_TCell
                                                                cell.setHomeTopMenuItem(viewModel.homeBottomMenuItems)
                cell.setHomeTopMenuItem(viewModel.homeBottomMenuItems)
                                                                return cell
                                                }else{
                                                                let m = viewModel.meditationList[index]
                                                                if m.clientMeditationCategoryVO!.showType == .horizontal{
                                                                                let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell
                                                                                cell.style = .style2
                                                                                cell.setModels(m.clientMeditationVOList)
                    cell.setModels(m.clientMeditationVOList,showType: .horizontal)
                                                                                return cell
                                                                }else if m.clientMeditationCategoryVO!.showType == .vertical{
                                                                                let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_3_TCell") as! Home_Style_3_TCell
                                                                                cell.setModels(m.clientMeditationVOList)
                    cell.setModels(m.clientMeditationVOList,showType: .vertical)
                                                                                return cell
                                                                }
                                                }
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift
@@ -12,6 +12,7 @@
                @IBOutlet weak var collectionView: UICollectionView!
                var meditationModels = [MeditationModel]()
    private var showType:DisplayType!
                override func awakeFromNib() {
        super.awakeFromNib()
@@ -29,7 +30,8 @@
    }
                func setModels(_ items:[MeditationModel]){
                func setModels(_ items:[MeditationModel],showType: DisplayType){
        self.showType = showType
                                self.meditationModels = items
                                collectionView.reloadData()
                }
@@ -42,14 +44,16 @@
                
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBannerCCell", for: indexPath) as! HomeRelaxBannerCCell
                                cell.setMeditationModel(meditationModels[indexPath.row])
        cell.setMeditationModel(meditationModels[indexPath.row],showType: showType)
                                return cell
                }
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                let m = meditationModels[indexPath.row]
                                if m.chargeType == .free{
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (isVip == .yes && m.chargeType == .vipFree){
                                                let vc = HomeItemDetailVC(id: m.id)
                                                JQ_currentViewController().jq_push(vc: vc)
                                                return
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift
@@ -16,6 +16,7 @@
class Home_Style_4_TCell: UITableViewCell {
                var style:Home_Style_4_Style!
    private var showType: DisplayType!
                var meditationModels = [MeditationModel]()
                @IBOutlet weak var collectionView: UICollectionView!
@@ -30,7 +31,8 @@
                                collectionView.showsHorizontalScrollIndicator = false
    }
                func setModels(_ items:[MeditationModel]){
                func setModels(_ items:[MeditationModel],showType: DisplayType){
        self.showType = showType
                                self.meditationModels = items
                                collectionView.reloadData()
                }
@@ -42,7 +44,9 @@
        let m = meditationModels[indexPath.row]
        if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
            let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id)
            JQ_currentViewController().jq_push(vc: detailVC)
        }else{
@@ -63,13 +67,13 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                if style == .style1{
                                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_1_CCell", for: indexPath) as! Home_Style_4_Inner_1_CCell
                                                cell.setMeditationModel(meditationModels[indexPath.row])
            cell.setMeditationModel(meditationModels[indexPath.row],showType: showType)
                                                return cell
                                }
                                if style == .style2{
                                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_CCell", for: indexPath) as! Home_Style_4_Inner_CCell
            cell.setMeditationModel(meditationModels[indexPath.row])
            cell.setMeditationModel(meditationModels[indexPath.row],showType: showType)
                                                return cell
                                }
XQMuse/Root/Home/VC/HomeItemListVC.swift
@@ -80,7 +80,9 @@
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                let m = viewModel.dataSource.value!.list[indexPath.row]
        if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
            let detailVC = HomeItemDetailVC(id: m.id)
            jq_push(vc: detailVC)
        }else{
XQMuse/Root/Home/VC/SearchContentVC.swift
@@ -128,10 +128,12 @@
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let isVip = UserViewModel.getAvatarInfo().isVip
        switch serchType{
            case .course:
                let m = courseViewModel!.dataSource.value!.list[indexPath.row]
                if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
                if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
                    let vc = CourseDetialVC(courseId: m.id)
                    JQ_currentViewController().jq_push(vc: vc)
                }else{
@@ -146,7 +148,7 @@
            case .muse:
                let m = museViewModel!.dataSource.value!.list[indexPath.row]
                if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
                if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
                    let detailVC = HomeItemDetailVC(id: m.id)
                    JQ_currentViewController().jq_push(vc: detailVC)
                }else{
XQMuse/Root/Login/LoginVC.swift
@@ -10,6 +10,7 @@
import RxRelay
import QMUIKit
import AuthenticationServices
import CoreTelephony
let LoginSuccess_Noti = Notification.Name.init("LoginSuccess_Noti")
@@ -61,13 +62,44 @@
                @IBOutlet weak var btn_sendCode: UIButton!
                @IBOutlet weak var btn_isRead: UIButton!
    @IBOutlet weak var btn_wechat: UIButton!
    private var cellularData:CTCellularData!
                private var viewModel = LoginViewModel()
                private let unlineImageView = UIImageView(image: UIImage(named: "icon_unline"))
                override func viewDidLoad() {
    override func viewDidLoad() {
        super.viewDidLoad()
        cellularData = CTCellularData()
        cellularData.cellularDataRestrictionDidUpdateNotifier = {[weak self] state in
            guard let weakSelf = self else { return }
            switch state{
                case .notRestricted:
                    if UserDefaultSettingViewModel.getSetting()?.userFirstLaunch ?? true{
                        DispatchQueue.main.async {
                            let vc = LoginTreatyVC()
                            vc.topIndex = 0
                            vc.clickHandle { state in
                                if !state{
                                    exit(0)
                                }else{
                                    if var m = UserDefaultSettingViewModel.getSetting(){
                                        m.userFirstLaunch = false
                                        UserDefaultSettingViewModel.saveSetting(m)
                                    }
                                }
                            }
                            vc.modalPresentationStyle = .custom
                            weakSelf.present(vc, animated: true)
                        }
                    }
                default:break
            }
        }
    }
                override func setRx() {
XQMuse/Root/Network/Models.swift
@@ -17,6 +17,7 @@
                var playModel:PlayMode = .line
                var userFirstOpenTreeTask = true //第一次打开树苗
    var userFirstLaunch = true //第一次启动
}
XQMuse/Root/Network/Services.swift
@@ -665,6 +665,13 @@
}
extension Services{
    class func getPlan()->Observable<BaseResponse<String>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/system/system/page/getPlan")
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
                /// 获取协议
                class func agreementBy(_ type:AgreementType)->Observable<BaseResponse<HtmlModel>>{
                                let params = ParamsAppender.build(url: All_Url)
XQMuse/Root/Plans/PlanGuideVC.swift
@@ -22,8 +22,6 @@
                @IBOutlet weak var label_info: UILabel!
                @IBOutlet weak var btn_custom: UIButton!
    private let masterPlayer = AudioPlayer.getSharedInstance()
                private lazy var player:AVPlayer = {
                                let bgPath = Bundle.main.url(forResource: "bg_movie", withExtension: "mov")
                                let p = AVPlayer(url: bgPath!)
@@ -31,17 +29,40 @@
                                return p
                }()
    private lazy var bgplayer:AVPlayer = {
        let p = AVPlayer()
        return p
    }()
                private lazy var playerLayer:AVPlayerLayer = {
                                let pLayer = AVPlayerLayer()
                                pLayer.videoGravity = .resize
        pLayer.videoGravity = .resizeAspectFill
                                return pLayer
                }()
                override func viewDidLoad() {
                                super.viewDidLoad()
         let tempModel = MeditationModel()
        masterPlayer.playSceneAt(backgroundVoiceUrl)
        Services.getPlan().subscribe(onNext: {[weak self]data in
            if let url = data.data{
                self?.bgplayer.replaceCurrentItem(with: AVPlayerItem(url: URL(string: url)!))
                self?.bgplayer.play()
            }
        }).disposed(by: disposeBag)
        self.bgplayer.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 1), queue: DispatchQueue.main) {[weak self] time in
            guard let weakSelf = self else { return }
            //当前正在播放的时间
            let loadTime = CMTimeGetSeconds(time)
            //视频总时间
            let totalTime = CMTimeGetSeconds((weakSelf.bgplayer.currentItem?.duration)!)
            if loadTime >= totalTime{
                weakSelf.bgplayer.seek(to: CMTime.zero)
                weakSelf.bgplayer.play()
            }
        }
                }
                override func viewWillAppear(_ animated: Bool) {
@@ -123,7 +144,7 @@
                }
    deinit{
        masterPlayer.clean()
    }
}
XQMuse/Root/Plans/PlanGuide_1_VC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -22,11 +22,11 @@
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_guide" translatesAutoresizingMaskIntoConstraints="NO" id="lsJ-Pj-oQ7">
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_guide" translatesAutoresizingMaskIntoConstraints="NO" id="lsJ-Pj-oQ7">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
                </imageView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="35k-EJ-Ttd">
                    <rect key="frame" x="178" y="769" width="37" height="34"/>
                    <rect key="frame" x="178.66666666666666" y="769" width="36" height="34"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="跳过">
                        <color key="titleColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -36,13 +36,13 @@
                    </connections>
                </button>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="亲爱的家人" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OqX-ab-xko">
                    <rect key="frame" x="153.33333333333334" y="120" width="86.666666666666657" height="21"/>
                    <rect key="frame" x="154.33333333333334" y="120" width="84.333333333333343" height="21"/>
                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2B0-5U-4lk">
                    <rect key="frame" x="110.00000000000001" y="171" width="173.33333333333337" height="101.66666666666669"/>
                    <rect key="frame" x="112.33333333333333" y="171" width="168.66666666666669" height="101.66666666666669"/>
                    <string key="text">请您遵从本心
回答以下问题
挑选您喜欢的空间环境
@@ -53,7 +53,7 @@
                    <nil key="highlightedColor"/>
                </label>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="懂您才可以更好的帮助您" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Al3-JQ-1uR">
                    <rect key="frame" x="101.33333333333333" y="317.66666666666669" width="190.66666666666669" height="20.333333333333314"/>
                    <rect key="frame" x="103.66666666666667" y="317.66666666666669" width="185.66666666666663" height="20.333333333333314"/>
                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
XQMuse/Root/Plans/PlanGuide_2_VC.swift
@@ -31,7 +31,6 @@
                                questions.append("您是否情绪失控暴躁易怒?")
                                questions.append("您是否沉迷情感倍受伤害?")
                                questions.append("您是否人生迷茫踌躇彷徨?")
                                questions.append("您是否内心纠结敏感多疑?")
                                nextQuestion()
    }
@@ -71,8 +70,8 @@
                                btn_OnceInAWel.titleLabel?.font = Def_SourceHanSerif_Medium(fontSize: 15)
                }
                private func nextQuestion(){
                                questionIndex += 1
    private func nextQuestion(page:Int = 0){
        questionIndex += page
                                label_question.text = questions[questionIndex]
                                btn_sure.isSelected = false
                                btn_deny.isSelected = false
@@ -147,7 +146,7 @@
                                                                                self.push(vc: vc)
                                                                }
                                                }else{
                                                                self.nextQuestion()
                self.nextQuestion(page: 1)
                                                }
                                }
                }
XQMuse/Root/Plans/PlanGuide_2_VC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -25,11 +25,11 @@
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_guide_answer" translatesAutoresizingMaskIntoConstraints="NO" id="BSN-Vb-lfW">
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_guide_answer" translatesAutoresizingMaskIntoConstraints="NO" id="BSN-Vb-lfW">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
                </imageView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tOt-d8-gyj">
                    <rect key="frame" x="180" y="756" width="33" height="32"/>
                    <rect key="frame" x="180.66666666666666" y="756" width="32" height="32"/>
                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="跳过">
@@ -43,13 +43,13 @@
                    <rect key="frame" x="40" y="443.33333333333326" width="313" height="287.66666666666674"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="星/星/知/我/心" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G4q-vh-Uts">
                            <rect key="frame" x="112.66666666666666" y="29.999999999999996" width="88" height="14.333333333333332"/>
                            <rect key="frame" x="113.33333333333334" y="29.999999999999996" width="86.333333333333343" height="14.333333333333332"/>
                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                            <color key="textColor" red="0.75294117647058822" green="0.75294117647058822" blue="0.75294117647058822" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您是否内心纠结敏感多疑" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qg0-hc-iCv">
                            <rect key="frame" x="61.333333333333329" y="47.333333333333371" width="190.66666666666669" height="20.333333333333329"/>
                            <rect key="frame" x="63.666666666666671" y="47.333333333333371" width="185.66666666666663" height="20.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
                            <color key="textColor" red="0.18823529411764706" green="0.30196078431372547" blue="0.12156862745098039" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
XQMuse/Root/Plans/PlanGuide_3_VC.swift
@@ -33,6 +33,19 @@
                                var topIndex = 0
                                Services.getTag().subscribe(onNext: { data in
                                                self.items = Array<TagModel>.splitArray((data.data ?? []), subArraySize: 3)
            //分成3:4:3
            if let item = self.items[2]?.first{
                self.items[1]?.append(item)
                self.items[2]?.removeFirst()
                if let m = self.items[3]?.first{
                    self.items[2]?.append(m)
                    self.items[3]?.removeAll()
                }
            }
                                                self.collectionVIew.reloadData()
                                }).disposed(by: disposeBag)
                }