fix
杨锴
2024-10-30 731a5d58da1d182ded7b389ce0f391623978995c
fix
23个文件已修改
587 ■■■■ 已修改文件
XQMuse/Info.plist 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVC.swift 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/View/CourseDetailHeaderView.swift 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.xib 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.xib 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_5_TCell.swift 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_5_TCell.xib 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemListVC.swift 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderVC.swift 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/SearchContentVC.swift 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Models.swift 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Info.plist
@@ -14,6 +14,14 @@
                <string>wx4b9c1d814c2902a3</string>
            </array>
        </dict>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>XQMuse</string>
            </array>
        </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift
@@ -44,8 +44,13 @@
                                                let vc = CourseDetialVideoVC(items: model!.list, selectIndex: indexPath)
                                                JQ_currentNavigationController().pushViewController(vc)
                                }else{
                                                let vc = PaymentOrderVC(courseId: m.id)
                                                JQ_currentNavigationController().pushViewController(vc)
            if m.chargeType == .vipFree{
                let vc = VIPCenterVC()
                JQ_currentViewController().jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true)
                JQ_currentViewController().jq_push(vc:vc)
            }
                                }
                }
XQMuse/Root/Course/VC/CourseDetialVC.swift
@@ -129,40 +129,46 @@
                }
                private func getData(){
                                Services.getCourseDetail(courseId: courseId).subscribe(onNext: {data in
                                Services.getCourseDetail(courseId: courseId).subscribe(onNext: {[weak self] data in
            guard let weakSelf = self else { return }
                                                if let m = data.data{
                                                                self.courseDetailModel = m
                self.collect_bitem.image = m.isCollect == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect")
                self.collect_bitem.tintColor = m.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
                                                                self.headerView.setCourseModel(m)
                                                                self.section1TCell.setItems(m)
                                                                self.section2TCell.setItems(m.list2)
                weakSelf.courseDetailModel = m
                weakSelf.collect_bitem.image = m.isCollect == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect")
                weakSelf.collect_bitem.tintColor = m.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
                weakSelf.headerView.setCourseModel(m)
                weakSelf.section1TCell.setItems(m)
                weakSelf.section2TCell.setItems(m.list2)
                //是否需要购买
                var  needPayment:Bool = true
                switch m.chargeType{
                    case .free:needPayment = false
                    case .payment:needPayment = !(m.isBuy == .yes)
                    case .vipFree:needPayment = !(UserViewModel.getAvatarInfo().isVip == .yes)
                }
                if m.courseType == .online{
                    weakSelf.style = .style1
                    weakSelf.pageMenu.setItems(["简介","章节","相关推荐"], selectedItemIndex: 0)
                if needPayment{
                                                                                let attribute    = AttributedStringbuilder.build().add(string: "    疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.generalPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "  立即购买     ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                                                                                self.studyBtn.setAttributedTitle(attribute, for: .normal)
                }else{
                    let attribute = AttributedStringbuilder.build().add(string: "    立即学习    ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                    self.studyBtn.setAttributedTitle(attribute, for: .normal)
                }
                    //是否需要购买
                    var  needPayment:Bool = true
                    switch m.chargeType{
                        case .free:needPayment = false
                        case .payment:needPayment = !(m.isBuy == .yes)
                        case .vipFree:needPayment = !(UserViewModel.getAvatarInfo().isVip == .yes)
                    }
                                                                if m.detailUrl.jq_isVideo{
                                                                                self.style = .style1
                                                                                self.pageMenu.setItems(["简介","章节","相关推荐"], selectedItemIndex: 0)
                    if needPayment{
                        let attribute    = AttributedStringbuilder.build().add(string: "    疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.generalPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "  立即购买     ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                        weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal)
                    }else{
                        let attribute = AttributedStringbuilder.build().add(string: "    立即学习    ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                        weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal)
                    }
                    weakSelf.setFootView()
                                                                }else{
                                                                                self.style = .style2
                                                                                self.pageMenu.setItems(["简介"], selectedItemIndex: 0)
                    weakSelf.style = .style2
                    DispatchQueue.main.asyncAfter(delay: 0.5) {
                        weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl, delegate: self!)
                    }
                    weakSelf.pageMenu.setItems(["简介"], selectedItemIndex: 0)
                                                                }
                                                                self.tableView?.reloadData()
                self.setFootView()
                weakSelf.tableView?.reloadData()
                                                }
                                }).disposed(by: disposeBag)
                }
@@ -212,31 +218,31 @@
                                                                return size.height
                                                }
                                                return nil
                                }.subscribe(onNext: { [unowned self](height) in
                                }.subscribe(onNext: { [weak self](height) in
                                                if let height = height{
                                                                if height > section0Height{
                                                                                self.section0Height = height
                                                                                self.tableView?.reloadData()
                if height > self?.section0Height ?? 0{
                                                                                self?.section0Height = height
                                                                                self?.tableView?.reloadData()
                                                                }
                                                }
                                }).disposed(by: disposeBag)
                                NotificationCenter.default.rx.notification(CourseRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
                                                self.getData()
                                NotificationCenter.default.rx.notification(CourseRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in
                                                self?.getData()
                                }).disposed(by: disposeBag)
                }
    @objc func collectionAction(){
        Services.clouseFavorite(id: courseId).subscribe(onNext: {data in
            self.courseDetailModel?.isCollect.troggle()
            if self.courseDetailModel?.isCollect == .yes{
        Services.clouseFavorite(id: courseId).subscribe(onNext: {[weak self]data in
            self?.courseDetailModel?.isCollect.troggle()
            if self?.courseDetailModel?.isCollect == .yes{
                alertSuccess(msg: "收藏成功")
                self.collect_bitem.image = UIImage(named: "btn_collect_1_s")
                self.collect_bitem.tintColor = UIColor(hexString: "fe5b60")
                self?.collect_bitem.image = UIImage(named: "btn_collect_1_s")
                self?.collect_bitem.tintColor = UIColor(hexString: "fe5b60")
            }else{
                alertSuccess(msg: "已取消收藏")
                self.collect_bitem.image = UIImage(named: "btn_collect")
                self.collect_bitem.tintColor = .white
                self?.collect_bitem.image = UIImage(named: "btn_collect")
                self?.collect_bitem.tintColor = .white
            }
        }).disposed(by: disposeBag)
    }
@@ -257,7 +263,8 @@
                                                                let vc = CourseDetialVideoVC(items: m.list, selectIndex: IndexPath(row: 0, section: 0))
                                                                push(vc: vc);return
                                                }
                                                let vc = PaymentOrderVC(courseId: m.id)
                                                let vc = PaymentOrderVC(id: m.id, type: .course)
                                                push(vc: vc)
                                }
                }
@@ -265,7 +272,7 @@
                @objc func sendGift(_ btn:QMUIButton){
                                if let price = courseDetailModel?.generalPrice{
                                                CourseSendGiftView.show(price:price) {
                                                                let vc = PaymentOrderVC(courseId: self.courseDetailModel!.id,giftToOther: true)
                let vc = PaymentOrderVC(id: self.courseDetailModel!.id,type: .course,giftToOther: true)
                                                                self.push(vc: vc)
                                                }
                                }
@@ -359,7 +366,7 @@
                                                (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
            (navigationItem.rightBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
            collect_bitem.tintColor = UIColor(hexString: "#fe5b60")
            collect_bitem.tintColor = .black
            share_bitem.tintColor = .black
                                                self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont]
@@ -416,3 +423,7 @@
                                }
                }
}
extension CourseDetialVC:CLPlayerDelegate{
}
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift
@@ -14,7 +14,7 @@
                var cateId = BehaviorRelay<Int?>(value: nil)
    var search = BehaviorRelay<String?>(value: nil)
                override func api() -> (Observable<BaseResponse<BaseResponseList<CourseModel>>>)? {
        return Services.getCoursePageList(page: page,courseTitle: search.value)
        return Services.getCoursePageList(page: page,cateId: cateId.value, courseTitle: search.value)
                }
}
XQMuse/Root/Course/View/CourseDetailHeaderView.swift
@@ -15,6 +15,10 @@
                @IBOutlet weak var label_studyNum: UILabel!
                @IBOutlet weak var image_cover: UIImageView!
                @IBOutlet weak var icon: UIImageView!
    private var videoView:VideoView?
                override func awakeFromNib() {
                                super.awakeFromNib()
                }
@@ -25,4 +29,13 @@
                                label_studyNum.text = "\(model.count)人已加入学习"
                                image_cover.sd_setImage(with: URL(string: model.coverUrl))
                }
    func setVideo(url:String,coverImageUrl:String,delegate:CLPlayerDelegate){
        videoView = VideoView(url: url, autoPlay: false, placeHoderImageUrl: coverImageUrl, delegate: delegate)
        addSubview(videoView!)
        videoView!.snp.makeConstraints { make in
            make.edges.equalTo(self.image_cover)
        }
    }
}
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift
@@ -15,7 +15,12 @@
                @IBOutlet weak var label_title: UILabel!
                @IBOutlet weak var label_subTitle: UILabel!
                @IBOutlet weak var label_num: UILabel!
    @IBOutlet weak var image_free: UIImageView!
    @IBOutlet weak var view_price: UIView!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var img_offine: UIImageView!
                override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
@@ -23,11 +28,25 @@
    }
                func setMeditationModel(_ model:MeditationModel){
        img_offine.isHidden = true
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
                                img_vip.isHidden = model.chargeType != .vipFree
        image_free.isHidden = model.chargeType != .free
        img_vip.isHidden = model.chargeType != .vipFree
        view_price.isHidden = model.chargeType != .payment
        switch model.chargeType {
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
                }
                func setCourseModel(_ model:CourseModel){
@@ -35,7 +54,26 @@
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
                                img_vip.isHidden = model.chargeType != .vipFree
        image_free.isHidden = model.chargeType != .free
        img_vip.isHidden = model.chargeType != .vipFree
        view_price.isHidden = model.chargeType != .payment
        if model.courseType == .offline{
            img_offine.isHidden = false
            image_free.isHidden = true
            view_price.isHidden = true
            img_vip.isHidden = true
            return
        }
        switch model.chargeType {
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
                }
}
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
@@ -18,6 +18,32 @@
                <subviews>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="u6A-Y4-rQ5">
                        <rect key="frame" x="0.0" y="0.0" width="165" height="218"/>
                    </imageView>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="uEc-dY-dVJ">
                        <rect key="frame" x="10" y="10" width="34" height="18"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xQS-TU-DTd">
                        <rect key="frame" x="10" y="10" width="38.666666666666664" height="25"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="APF-eW-1da">
                                <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/>
                                <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="83q-tN-O9w"/>
                            <constraint firstItem="APF-eW-1da" firstAttribute="leading" secondItem="xQS-TU-DTd" secondAttribute="leading" constant="5" id="JMa-Vt-vm6"/>
                            <constraint firstItem="APF-eW-1da" firstAttribute="top" secondItem="xQS-TU-DTd" secondAttribute="top" id="O9I-d9-Xnk"/>
                            <constraint firstAttribute="trailing" secondItem="APF-eW-1da" secondAttribute="trailing" constant="5" id="aXq-X5-Ux2"/>
                            <constraint firstAttribute="height" constant="25.100000000000001" id="d2N-VC-V1F"/>
                            <constraint firstAttribute="bottom" secondItem="APF-eW-1da" secondAttribute="bottom" id="uOl-Gh-Y2N"/>
                        </constraints>
                    </view>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="eTx-n7-epB">
                        <rect key="frame" x="10" y="15" width="50" height="18"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Emq-gn-QOX">
                        <rect key="frame" x="0.0" y="162.66666666666666" width="165" height="55.333333333333343"/>
@@ -58,7 +84,7 @@
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" red="0.67450980392156867" green="0.67450980392156867" blue="0.67450980392156867" alpha="0.75" colorSpace="custom" customColorSpace="sRGB"/>
                        <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.55000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="55.25" id="10l-1C-Vxq"/>
                            <constraint firstItem="KBd-aZ-LFh" firstAttribute="leading" secondItem="fsN-0y-q8f" secondAttribute="trailing" constant="5" id="2Ea-AQ-Tu0"/>
@@ -85,28 +111,40 @@
                </subviews>
            </view>
            <constraints>
                <constraint firstItem="xQS-TU-DTd" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="000-sg-EYm"/>
                <constraint firstAttribute="trailing" secondItem="Emq-gn-QOX" secondAttribute="trailing" id="04n-4q-t3c"/>
                <constraint firstItem="eTx-n7-epB" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="0iF-Cq-0lH"/>
                <constraint firstAttribute="bottom" secondItem="Emq-gn-QOX" secondAttribute="bottom" id="1pR-zR-iEn"/>
                <constraint firstItem="u6A-Y4-rQ5" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="FM9-d1-o7D"/>
                <constraint firstItem="eTx-n7-epB" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="15" id="Lk4-Gc-sgU"/>
                <constraint firstItem="qF4-sn-dec" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="15" id="Pp8-Ev-814"/>
                <constraint firstAttribute="trailing" secondItem="u6A-Y4-rQ5" secondAttribute="trailing" id="Wmf-QD-q2l"/>
                <constraint firstItem="uEc-dY-dVJ" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="XL6-q7-Yqm"/>
                <constraint firstItem="qF4-sn-dec" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="14" id="a9F-c7-D0F"/>
                <constraint firstItem="u6A-Y4-rQ5" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="hwT-Ww-t9Q"/>
                <constraint firstItem="xQS-TU-DTd" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="pUw-nM-PXY"/>
                <constraint firstItem="Emq-gn-QOX" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="peA-Sh-3Fg"/>
                <constraint firstAttribute="bottom" secondItem="u6A-Y4-rQ5" secondAttribute="bottom" id="urP-g7-eE1"/>
                <constraint firstItem="uEc-dY-dVJ" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="zpu-w0-ppT"/>
            </constraints>
            <size key="customSize" width="165" height="218"/>
            <connections>
                <outlet property="image_free" destination="eTx-n7-epB" id="f4e-MW-Ck1"/>
                <outlet property="img_cover" destination="u6A-Y4-rQ5" id="jgL-1i-bbr"/>
                <outlet property="img_offine" destination="uEc-dY-dVJ" id="ZBx-id-buz"/>
                <outlet property="img_vip" destination="qF4-sn-dec" id="Srv-K5-XZ8"/>
                <outlet property="label_num" destination="ZK6-Lk-6Cs" id="YnU-l2-kpJ"/>
                <outlet property="label_price" destination="APF-eW-1da" id="O14-P0-c6M"/>
                <outlet property="label_subTitle" destination="AYK-rI-cj9" id="fbU-5M-2Gw"/>
                <outlet property="label_title" destination="fsN-0y-q8f" id="MyU-K8-8hi"/>
                <outlet property="view_price" destination="xQS-TU-DTd" id="ycm-vC-jQn"/>
            </connections>
            <point key="canvasLocation" x="168.70229007633588" y="79.577464788732399"/>
        </collectionViewCell>
    </objects>
    <resources>
        <image name="icon_freee" width="50" height="18"/>
        <image name="icon_offline" width="34" height="18"/>
        <image name="icon_play" width="46" height="46"/>
        <image name="icon_use_small" width="10" height="10.666666984558105"/>
        <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/>
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift
@@ -15,7 +15,11 @@
                @IBOutlet weak var label_title: UILabel!
                @IBOutlet weak var label_subTitle: UILabel!
                @IBOutlet weak var label_num: UILabel!
    @IBOutlet weak var img_isFree: UIImageView!
    @IBOutlet weak var image_free: UIImageView!
    @IBOutlet weak var view_price: UIView!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var img_vip: UIImageView!
    @IBOutlet weak var img_offline: UIImageView!
    
                override func awakeFromNib() {
                                super.awakeFromNib()
@@ -23,7 +27,7 @@
                                jq_cornerRadius = 10
        view_price.jq_cornerRadius = 12.55
                                let blurEffect = UIBlurEffect(style: .light)
                                let visualEffectView = UIVisualEffectView(effect: blurEffect)
                                view_text_bg.addSubview(visualEffectView)
@@ -40,8 +44,30 @@
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
//                                img_vip.isHidden = model.chargeType != .vipFree
        if model.courseType == .online{
            img_offline.isHidden = true
            setChargePrice(model.chargeType, price: model.generalPrice)
        }else{
            img_offline.isHidden = false
            img_vip.isHidden = true
            view_price.isHidden = true
            image_free.isHidden = true
        }
                }
    private func setChargePrice(_ type:ChargeType,price:Double){
        image_free.isHidden = type != .free
        img_vip.isHidden = type != .vipFree
        view_price.isHidden = type != .payment
        switch type {
            case .payment:
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(price.jq_formatFloat) ", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
    }
}
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib
@@ -20,6 +20,29 @@
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VwD-36-ent">
                        <rect key="frame" x="0.0" y="0.0" width="160" height="196"/>
                    </imageView>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip" translatesAutoresizingMaskIntoConstraints="NO" id="MDc-Db-v12">
                        <rect key="frame" x="11.000000000000002" y="8.6666666666666661" width="21.666666666666671" height="21.666666666666671"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tNS-EM-X8Z">
                        <rect key="frame" x="7" y="5" width="38.666666666666664" height="25"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KaS-j6-dko">
                                <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/>
                                <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="25.100000000000001" id="L4H-E8-mqA"/>
                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="PQi-Ka-PUO"/>
                            <constraint firstItem="KaS-j6-dko" firstAttribute="top" secondItem="tNS-EM-X8Z" secondAttribute="top" id="XkQ-YO-BTQ"/>
                            <constraint firstAttribute="trailing" secondItem="KaS-j6-dko" secondAttribute="trailing" constant="5" id="qWj-kT-K4d"/>
                            <constraint firstItem="KaS-j6-dko" firstAttribute="leading" secondItem="tNS-EM-X8Z" secondAttribute="leading" constant="5" id="xKe-fC-CpF"/>
                            <constraint firstAttribute="bottom" secondItem="KaS-j6-dko" secondAttribute="bottom" id="zW6-UI-Hos"/>
                        </constraints>
                    </view>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nyj-tV-0t4">
                        <rect key="frame" x="0.0" y="146" width="160" height="50"/>
                        <subviews>
@@ -73,27 +96,40 @@
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="C5o-Fs-4Xu">
                        <rect key="frame" x="11" y="9" width="50" height="18"/>
                    </imageView>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="988-87-RLf">
                        <rect key="frame" x="8" y="7" width="34" height="18"/>
                    </imageView>
                </subviews>
            </view>
            <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/>
            <constraints>
                <constraint firstAttribute="bottom" secondItem="nyj-tV-0t4" secondAttribute="bottom" id="6kR-m6-W7L"/>
                <constraint firstItem="VwD-36-ent" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="6q4-UC-TbP"/>
                <constraint firstItem="988-87-RLf" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="AZp-Bf-kii"/>
                <constraint firstItem="nyj-tV-0t4" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="HsY-aP-b2m"/>
                <constraint firstItem="tNS-EM-X8Z" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5" id="IDx-Rk-dVG"/>
                <constraint firstItem="C5o-Fs-4Xu" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="11" id="LW9-j0-pdo"/>
                <constraint firstItem="C5o-Fs-4Xu" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="9" id="M5Z-Od-Ixc"/>
                <constraint firstItem="MDc-Db-v12" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="8.5" id="TAz-42-XQP"/>
                <constraint firstAttribute="trailing" secondItem="VwD-36-ent" secondAttribute="trailing" id="eMF-Er-Mtm"/>
                <constraint firstItem="VwD-36-ent" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="gba-Nk-kGk"/>
                <constraint firstItem="tNS-EM-X8Z" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="7" id="j3U-db-f7D"/>
                <constraint firstItem="MDc-Db-v12" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="11" id="jP0-pB-RmD"/>
                <constraint firstItem="988-87-RLf" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="8" id="lIk-og-l06"/>
                <constraint firstAttribute="trailing" secondItem="nyj-tV-0t4" secondAttribute="trailing" id="oZN-uZ-l0V"/>
                <constraint firstAttribute="bottom" secondItem="VwD-36-ent" secondAttribute="bottom" id="p7n-UX-5N7"/>
            </constraints>
            <size key="customSize" width="160" height="196"/>
            <connections>
                <outlet property="image_free" destination="C5o-Fs-4Xu" id="yA1-gH-NE1"/>
                <outlet property="img_cover" destination="VwD-36-ent" id="93Z-v8-bjM"/>
                <outlet property="img_isFree" destination="C5o-Fs-4Xu" id="eut-gN-uQO"/>
                <outlet property="img_offline" destination="988-87-RLf" id="d81-nh-tqD"/>
                <outlet property="img_vip" destination="MDc-Db-v12" id="FNN-By-3UD"/>
                <outlet property="label_num" destination="Wxc-EY-qwU" id="zxI-Y4-tTv"/>
                <outlet property="label_price" destination="KaS-j6-dko" id="T7A-UW-g49"/>
                <outlet property="label_subTitle" destination="EeQ-hi-VEz" id="U39-7s-GGD"/>
                <outlet property="label_title" destination="6md-5M-Pce" id="j50-e3-otB"/>
                <outlet property="view_price" destination="tNS-EM-X8Z" id="POp-Nu-BIU"/>
                <outlet property="view_text_bg" destination="nyj-tV-0t4" id="Lef-w5-fi6"/>
            </connections>
            <point key="canvasLocation" x="164.8854961832061" y="71.83098591549296"/>
@@ -101,6 +137,8 @@
    </objects>
    <resources>
        <image name="icon_freee" width="50" height="18"/>
        <image name="icon_offline" width="34" height="18"/>
        <image name="icon_use_small_s" width="9" height="9"/>
        <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/>
    </resources>
</document>
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift
@@ -21,7 +21,8 @@
    @IBOutlet weak var view_price: UIView!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var image_free: UIImageView!
    @IBOutlet weak var img_offline: UIImageView!
                private var meditationModel:MeditationModel?
                override func awakeFromNib() {
        super.awakeFromNib()
@@ -47,6 +48,7 @@
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
        img_offline.isHidden = true
        setChargePrice(model.chargeType, price: model.generalPrice)
                }
@@ -58,23 +60,27 @@
                                label_num.text = "\(model.count)"
        img_vip.isHidden = model.isVip != .yes
        setChargePrice(model.chargeType, price: model.generalPrice)
        if model.courseType == .online{
            img_offline.isHidden = true
            setChargePrice(model.chargeType, price: model.generalPrice)
        }else{
            img_offline.isHidden = false
            img_vip.isHidden = true
            view_price.isHidden = true
            image_free.isHidden = true
        }
                }
    private func setChargePrice(_ type:ChargeType,price:Double){
        image_free.isHidden = type != .free
        img_vip.isHidden = type != .vipFree
        view_price.isHidden = type != .payment
        switch type {
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: price.jq_formatFloat, withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            case .free:
                image_free.isHidden = false
                view_price.isHidden = true
                img_vip.isHidden = true
            case .vipFree:
                image_free.isHidden = true
                view_price.isHidden = true
                img_vip.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(price.jq_formatFloat) ", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
    }
}
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib
@@ -19,6 +19,9 @@
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cCC-0f-GSV">
                        <rect key="frame" x="0.0" y="0.0" width="178" height="301"/>
                    </imageView>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="IJ3-94-7an">
                        <rect key="frame" x="8" y="7" width="34" height="18"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Fb9-IV-vVk">
                        <rect key="frame" x="0.0" y="236" width="178" height="65"/>
                        <subviews>
@@ -65,10 +68,10 @@
                        <rect key="frame" x="14.666666666666666" y="7.6666666666666661" width="21.333333333333336" height="21.333333333333336"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rmi-DQ-cp9">
                        <rect key="frame" x="14.666666666666664" y="7.6666666666666679" width="25" height="25.000000000000004"/>
                        <rect key="frame" x="14.666666666666668" y="7.6666666666666679" width="38.666666666666657" height="25.000000000000004"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kTL-dA-lNA">
                                <rect key="frame" x="0.0" y="0.0" width="25" height="25"/>
                                <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/>
                                <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
@@ -76,10 +79,10 @@
                        </subviews>
                        <color key="backgroundColor" red="0.89803921568627454" green="0.71372549019607845" blue="0.39215686274509803" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="trailing" secondItem="kTL-dA-lNA" secondAttribute="trailing" id="4rs-Ms-47V"/>
                            <constraint firstAttribute="trailing" secondItem="kTL-dA-lNA" secondAttribute="trailing" constant="5" id="4rs-Ms-47V"/>
                            <constraint firstAttribute="bottom" secondItem="kTL-dA-lNA" secondAttribute="bottom" id="Gk6-tP-QxW"/>
                            <constraint firstItem="kTL-dA-lNA" firstAttribute="leading" secondItem="rmi-DQ-cp9" secondAttribute="leading" id="Utr-e1-5lW"/>
                            <constraint firstAttribute="width" constant="25.100000000000001" id="j5h-a9-Qj3"/>
                            <constraint firstItem="kTL-dA-lNA" firstAttribute="leading" secondItem="rmi-DQ-cp9" secondAttribute="leading" constant="5" id="Utr-e1-5lW"/>
                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="j5h-a9-Qj3"/>
                            <constraint firstItem="kTL-dA-lNA" firstAttribute="top" secondItem="rmi-DQ-cp9" secondAttribute="top" id="qKa-MB-Ohi"/>
                            <constraint firstAttribute="height" constant="25.100000000000001" id="xtT-s6-JWf"/>
                        </constraints>
@@ -100,6 +103,8 @@
                <constraint firstAttribute="trailing" secondItem="cCC-0f-GSV" secondAttribute="trailing" id="brF-kM-RJ7"/>
                <constraint firstItem="cCC-0f-GSV" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="c6s-ah-BAB"/>
                <constraint firstAttribute="bottom" secondItem="Fb9-IV-vVk" secondAttribute="bottom" id="jcg-ng-xeW"/>
                <constraint firstItem="IJ3-94-7an" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="lJE-19-Y4g"/>
                <constraint firstItem="IJ3-94-7an" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="8" id="sRa-g7-6M4"/>
                <constraint firstItem="deT-IZ-PtZ" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="tPU-LR-azA"/>
                <constraint firstItem="cCC-0f-GSV" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="tmD-tf-gYR"/>
                <constraint firstItem="rmi-DQ-cp9" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7.5" id="wLQ-lC-KXg"/>
@@ -109,6 +114,7 @@
                <outlet property="cons_maxSubTitle" destination="Fam-ne-FM1" id="L5X-GP-uev"/>
                <outlet property="image_free" destination="deT-IZ-PtZ" id="kI7-7g-aIM"/>
                <outlet property="img_cover" destination="cCC-0f-GSV" id="85x-ue-edy"/>
                <outlet property="img_offline" destination="IJ3-94-7an" id="EYY-vi-GGP"/>
                <outlet property="img_tipPeople" destination="hE1-AV-t8f" id="ObN-5h-jnl"/>
                <outlet property="img_vip" destination="yBF-fO-fwz" id="icq-m9-dx3"/>
                <outlet property="label_num" destination="JaY-19-IAL" id="2RU-X7-0wb"/>
@@ -123,6 +129,7 @@
    </objects>
    <resources>
        <image name="icon_freee" width="50" height="18"/>
        <image name="icon_offline" width="34" height="18"/>
        <image name="icon_use_small" width="10" height="10.666666984558105"/>
        <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/>
    </resources>
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift
@@ -6,14 +6,27 @@
//
import UIKit
import JQTools
class Home_Style_4_Inner_CCell: UICollectionViewCell {
                @IBOutlet weak var view_text_bg: UIView!
                override func awakeFromNib() {
    @IBOutlet weak var label_title: UILabel!
    @IBOutlet weak var label_subTitle: UILabel!
    @IBOutlet weak var view_text_bg: UIView!
    @IBOutlet weak var label_peopleNum: UILabel!
    @IBOutlet weak var cover_bgImage: UIImageView!
    @IBOutlet weak var view_price: UIView!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var img_vip: UIImageView!
    @IBOutlet weak var image_free: UIImageView!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        cover_bgImage.jq_cornerRadius = 10
        view_price.jq_cornerRadius = 12.55
                                let blurEffect = UIBlurEffect(style: .light)
                                let visualEffectView = UIVisualEffectView(effect: blurEffect)
@@ -26,4 +39,24 @@
                                visualEffectView.layer.masksToBounds = true
    }
    func setMeditationModel(_ model:MeditationModel){
        label_title.text = model.meditationTitle
        label_subTitle.text = model.coverDescription
        cover_bgImage.sd_setImage(with: URL(string: model.coverUrl))
        label_peopleNum.text = model.realLearnedNum.string
        image_free.isHidden = model.chargeType != .free
        img_vip.isHidden = model.chargeType != .vipFree
        view_price.isHidden = model.chargeType != .payment
        switch model.chargeType {
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
    }
}
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.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="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -24,6 +24,29 @@
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="demo_pg_1" translatesAutoresizingMaskIntoConstraints="NO" id="0wr-Ds-8U1">
                                <rect key="frame" x="0.0" y="0.0" width="417" height="306"/>
                            </imageView>
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="qtk-jE-zYr">
                                <rect key="frame" x="10" y="25" width="50" height="18"/>
                            </imageView>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uuN-2T-9v0">
                                <rect key="frame" x="20.999999999999996" y="21" width="38.666666666666657" height="25"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GYP-BU-qEb">
                                        <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                </subviews>
                                <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="25.100000000000001" id="3O3-Wj-ZQk"/>
                                    <constraint firstItem="GYP-BU-qEb" firstAttribute="top" secondItem="uuN-2T-9v0" secondAttribute="top" id="Tzl-UN-BMh"/>
                                    <constraint firstItem="GYP-BU-qEb" firstAttribute="leading" secondItem="uuN-2T-9v0" secondAttribute="leading" constant="5" id="XsV-Ix-1OA"/>
                                    <constraint firstAttribute="bottom" secondItem="GYP-BU-qEb" secondAttribute="bottom" id="Ylc-8p-Xdu"/>
                                    <constraint firstAttribute="trailing" secondItem="GYP-BU-qEb" secondAttribute="trailing" constant="5" id="jS2-fF-2N8"/>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="kwa-m0-MN9"/>
                                </constraints>
                            </view>
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip" translatesAutoresizingMaskIntoConstraints="NO" id="3SE-bW-QUN">
                                <rect key="frame" x="22.666666666666664" y="22" width="21.666666666666664" height="21.666666666666671"/>
                            </imageView>
@@ -86,12 +109,16 @@
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="3SE-bW-QUN" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="22" id="7pu-mh-ZHA"/>
                            <constraint firstItem="uuN-2T-9v0" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="21" id="8Bg-sg-Vj2"/>
                            <constraint firstItem="uuN-2T-9v0" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="21" id="DmF-KG-7vU"/>
                            <constraint firstAttribute="bottom" secondItem="0wr-Ds-8U1" secondAttribute="bottom" id="IG4-8T-fQI"/>
                            <constraint firstItem="1q9-TW-tvm" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="11" id="NDB-uF-c6J"/>
                            <constraint firstAttribute="trailing" secondItem="0wr-Ds-8U1" secondAttribute="trailing" id="Rp9-rB-RjA"/>
                            <constraint firstItem="qtk-jE-zYr" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="25" id="SJD-A0-8xJ"/>
                            <constraint firstItem="0wr-Ds-8U1" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" id="VB8-6e-alw"/>
                            <constraint firstAttribute="width" secondItem="uBp-4Z-R7I" secondAttribute="height" multiplier="1:0.734" id="a3p-O7-YVH"/>
                            <constraint firstItem="3SE-bW-QUN" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="22.5" id="acq-2b-o03"/>
                            <constraint firstItem="qtk-jE-zYr" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="10" id="dLN-nd-UyR"/>
                            <constraint firstAttribute="bottom" secondItem="1q9-TW-tvm" secondAttribute="bottom" constant="9.5" id="n7D-lz-0VO"/>
                            <constraint firstAttribute="trailing" secondItem="1q9-TW-tvm" secondAttribute="trailing" constant="11" id="tQX-QX-bnF"/>
                            <constraint firstItem="0wr-Ds-8U1" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" id="yhp-sW-lXD"/>
@@ -107,6 +134,14 @@
            </constraints>
            <size key="customSize" width="455" height="385"/>
            <connections>
                <outlet property="cover_bgImage" destination="0wr-Ds-8U1" id="IXg-DC-fLZ"/>
                <outlet property="image_free" destination="qtk-jE-zYr" id="jEv-yO-uAa"/>
                <outlet property="img_vip" destination="3SE-bW-QUN" id="MVq-Rr-ZaX"/>
                <outlet property="label_peopleNum" destination="ANZ-Kn-isU" id="Qwy-mQ-ZXZ"/>
                <outlet property="label_price" destination="GYP-BU-qEb" id="bVC-be-fMq"/>
                <outlet property="label_subTitle" destination="Enr-D6-xzP" id="nHP-Rn-uin"/>
                <outlet property="label_title" destination="1bZ-4v-DSk" id="X3J-ac-ebe"/>
                <outlet property="view_price" destination="uuN-2T-9v0" id="NBM-4w-kOO"/>
                <outlet property="view_text_bg" destination="1q9-TW-tvm" id="vW7-g9-YjL"/>
            </connections>
            <point key="canvasLocation" x="448.09160305343511" y="138.38028169014086"/>
@@ -114,6 +149,7 @@
    </objects>
    <resources>
        <image name="demo_pg_1" width="353.66665649414062" height="259.66665649414062"/>
        <image name="icon_freee" width="50" height="18"/>
        <image name="icon_play" width="46" height="46"/>
        <image name="icon_use_small" width="10" height="10.666666984558105"/>
        <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/>
XQMuse/Root/Home/HomeVC.swift
@@ -278,7 +278,7 @@
                                                                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 = .style1
                                                                                cell.style = .style2
                                                                                cell.setModels(m.clientMeditationVOList)
                                                                                return cell
                                                                }else if m.clientMeditationCategoryVO!.showType == .vertical{
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift
@@ -42,7 +42,6 @@
                
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBannerCCell", for: indexPath) as! HomeRelaxBannerCCell
                                cell.contentView.backgroundColor = .jq_randomColor
                                cell.setMeditationModel(meditationModels[indexPath.row])
                                return cell
                }
@@ -57,7 +56,7 @@
                                }
                                if m.chargeType == .payment && m.paidStatus == .no{
                                                let vc = PaymentOrderVC(courseId: m.id)
            let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true)
                                                JQ_currentViewController().jq_push(vc: vc)
                                                return
                                }
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift
@@ -40,8 +40,20 @@
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id)
                                JQ_currentViewController().jq_push(vc: detailVC)
        let m = meditationModels[indexPath.row]
        if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
            let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id)
            JQ_currentViewController().jq_push(vc: detailVC)
        }else{
            if m.chargeType == .vipFree{
                let vc = VIPCenterVC()
                JQ_currentViewController().jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true)
                JQ_currentViewController().jq_push(vc:vc)
            }
        }
                }
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
@@ -57,6 +69,7 @@
                                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])
                                                return cell
                                }
XQMuse/Root/Home/TCell/Home_Style_5_TCell.swift
@@ -12,9 +12,12 @@
                private var items = [HomeTopMenuItem]()
                @IBOutlet weak var btn_1: UIButton!
                @IBOutlet weak var btn_2: UIButton!
    @IBOutlet weak var cons_btn_1_w: NSLayoutConstraint!
    @IBOutlet weak var btn_2: UIButton!
    @IBOutlet weak var cons_btn_2_w: NSLayoutConstraint!
                @IBOutlet weak var btn_3: UIButton!
    @IBOutlet weak var cons_btn_3_w: NSLayoutConstraint!
    override func awakeFromNib() {
        super.awakeFromNib()
                                btn_1.isHidden = true
@@ -28,6 +31,15 @@
                                btn_1.tag = 1000
                                btn_2.tag = 1001
                                btn_3.tag = 1002
        btn_1.jq_cornerRadius = 10
        btn_2.jq_cornerRadius = 10
        btn_3.jq_cornerRadius = 10
        let w = (JQ_ScreenW - 19 * 2 - 9.5 * 2) / 3.0
        cons_btn_1_w.constant = w
        cons_btn_2_w.constant = w
        cons_btn_3_w.constant = w
    }
                func setHomeTopMenuItem(_ items:[HomeTopMenuItem]){
XQMuse/Root/Home/TCell/Home_Style_5_TCell.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="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -18,27 +18,30 @@
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <stackView opaque="NO" contentMode="scaleToFill" spacing="9.5" translatesAutoresizingMaskIntoConstraints="NO" id="iSv-Jr-Qcx">
                        <rect key="frame" x="53.666666666666657" y="27.333333333333336" width="354.66666666666674" height="126.66666666666666"/>
                        <rect key="frame" x="53.666666666666657" y="27.333333333333336" width="354.66666666666674" height="126.33333333333331"/>
                        <subviews>
                            <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="30T-1D-WNl">
                                <rect key="frame" x="0.0" y="0.0" width="111.66666666666667" height="126.66666666666667"/>
                                <rect key="frame" x="0.0" y="0.0" width="111.66666666666667" height="126.33333333333333"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="111.67" id="fzt-qD-W54"/>
                                    <constraint firstAttribute="width" secondItem="30T-1D-WNl" secondAttribute="height" multiplier="1:1.134" id="rI9-Qc-ZN4"/>
                                </constraints>
                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                <state key="normal" image="bg_home_3"/>
                            </button>
                            <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vXA-OX-SB1">
                                <rect key="frame" x="121.33333333333334" y="0.0" width="112" height="126.66666666666667"/>
                                <rect key="frame" x="121.33333333333334" y="-0.3333333333333357" width="112" height="126.66666666666669"/>
                                <constraints>
                                    <constraint firstAttribute="width" secondItem="vXA-OX-SB1" secondAttribute="height" multiplier="1:1.134" id="AHL-qK-kMk"/>
                                    <constraint firstAttribute="width" constant="112" id="Gkt-sc-pFk"/>
                                </constraints>
                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                <state key="normal" image="bg_home_1"/>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xmc-SJ-H1U">
                                <rect key="frame" x="243.00000000000003" y="0.0" width="111.66666666666666" height="126.66666666666667"/>
                                <rect key="frame" x="243.00000000000003" y="0.0" width="111.66666666666666" height="126.33333333333333"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="111.67" id="iGJ-mz-GOJ"/>
                                    <constraint firstAttribute="width" secondItem="xmc-SJ-H1U" secondAttribute="height" multiplier="1:1.134" id="nka-Yt-rjX"/>
                                </constraints>
                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
@@ -57,6 +60,9 @@
                <outlet property="btn_1" destination="30T-1D-WNl" id="lfD-IP-ddb"/>
                <outlet property="btn_2" destination="vXA-OX-SB1" id="a4n-5r-1jP"/>
                <outlet property="btn_3" destination="xmc-SJ-H1U" id="uf7-FI-OON"/>
                <outlet property="cons_btn_1_w" destination="fzt-qD-W54" id="yZ2-D5-0WD"/>
                <outlet property="cons_btn_2_w" destination="Gkt-sc-pFk" id="CU8-ai-4oE"/>
                <outlet property="cons_btn_3_w" destination="iGJ-mz-GOJ" id="0QG-q0-JHM"/>
            </connections>
            <point key="canvasLocation" x="174.04580152671755" y="68.661971830985919"/>
        </tableViewCell>
XQMuse/Root/Home/VC/HomeItemListVC.swift
@@ -78,8 +78,19 @@
                }
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                let id = viewModel.dataSource.value!.list[indexPath.row].id
                                let vc = HomeItemDetailVC(id: id)
                                push(vc: vc)
                                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 detailVC = HomeItemDetailVC(id: m.id)
            jq_push(vc: detailVC)
        }else{
            if m.chargeType == .vipFree{
                let vc = VIPCenterVC()
                jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true)
                jq_push(vc: vc)
            }
        }
                }
}
XQMuse/Root/Home/VC/PaymentOrderVC.swift
@@ -12,6 +12,11 @@
class PaymentOrderVC: BaseVC {
    enum PaymentOrderType {
        case course
        case muse
    }
                @IBOutlet weak var image_cover: UIImageView!
                @IBOutlet weak var label_price: UILabel!
                @IBOutlet weak var label_teacher: UILabel!
@@ -33,16 +38,19 @@
                @IBOutlet weak var tf_phone: QMUITextField!
                @IBOutlet weak var label_walletBalance: UILabel!
                @IBOutlet weak var btn_isreadAgreement: UIButton!
                private var courseId:Int!
                private var id:Int!
                private var giftUserId:Int?
                private var giftToOther:Bool!
                private var courseModel:CourseModel?
    private var museModel:MeditationModel?
                private var balance:Double = 0
    private var type:PaymentOrderType!
                init(courseId:Int,giftToOther:Bool = false) {
    init(id:Int,type:PaymentOrderType,giftToOther:Bool = false) {
                                super.init(nibName: nil, bundle: nil)
                                self.courseId = courseId
                                self.id = id
                                self.giftToOther = giftToOther
        self.type = type
                }
                
                required init?(coder: NSCoder) {
@@ -57,18 +65,37 @@
                                getBalance()
                                Services.getCourseDetail(courseId: courseId).subscribe(onNext: {data in
                                                if let m = data.data{
                                                                self.courseModel = m
                                                                self.image_cover.sd_setImage(with: URL(string: m.coverUrl))
                                                                self.label_courseName.text = m.courseTitle
                                                                self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                                                                self.label_teacher.text = "导师\(m.tutor)"
                                                                self.label_paymentCount.text = "x\(m.count)"
                                                                self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                                                                self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                                                }
                                }).disposed(by: disposeBag)
        if type == .course{
            Services.getCourseDetail(courseId: id).subscribe(onNext: {data in
                if let m = data.data{
                    self.courseModel = m
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl))
                    self.label_courseName.text = m.courseTitle
                    self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_teacher.text = "导师\(m.tutor)"
                    self.label_paymentCount.text = "x\(m.count)"
                    self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                }
            }).disposed(by: disposeBag)
        }
        if type == .muse{
            Services.getMeditationDetail(id: id).subscribe(onNext: {data in
                if let m = data.data{
                    self.museModel = m
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl))
                    self.label_courseName.text = m.meditationTitle
                    self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_teacher.text = ""
                    self.label_paymentCount.text = "x1"
                    self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                }
            }).disposed(by: disposeBag)
        }
    }
                override func setUI() {
@@ -158,7 +185,7 @@
                                                return
                                }
                                let vc = PaymentOrderResultVC(courseId: courseId, price: m.generalPrice)
                                let vc = PaymentOrderResultVC(courseId: id, price: m.generalPrice)
                                push(vc: vc)
                }
}
XQMuse/Root/Home/VC/SearchContentVC.swift
@@ -131,13 +131,33 @@
        switch serchType{
            case .course:
                let m = courseViewModel!.dataSource.value!.list[indexPath.row]
                let vc = CourseDetialVC(courseId: m.id)
                JQ_currentViewController().jq_push(vc: vc)
                if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
                    let vc = CourseDetialVC(courseId: m.id)
                    JQ_currentViewController().jq_push(vc: vc)
                }else{
                    if m.chargeType == .vipFree{
                        let vc = VIPCenterVC()
                        JQ_currentViewController().jq_push(vc: vc)
                    }else{
                        let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true)
                        JQ_currentViewController().jq_push(vc:vc)
                    }
                }
            case .muse:
                let m = museViewModel!.dataSource.value!.list[indexPath.row]
                let vc = HomeItemDetailVC(id: m.id)
                JQ_currentViewController().jq_push(vc: vc)
                if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
                    let detailVC = HomeItemDetailVC(id: m.id)
                    JQ_currentViewController().jq_push(vc: detailVC)
                }else{
                    if m.chargeType == .vipFree{
                        let vc = VIPCenterVC()
                        JQ_currentViewController().jq_push(vc: vc)
                    }else{
                        let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true)
                        JQ_currentViewController().jq_push(vc:vc)
                    }
                }
            default:break
        }
@@ -148,8 +168,9 @@
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell
        switch serchType{
            case .course:break
            case .course:
                let m = courseViewModel!.dataSource.value!.list[indexPath.row]
                cell.setCourseModel(m)
            case .muse:
                let m = museViewModel!.dataSource.value!.list[indexPath.row]
                cell.setMeditationModel(m)
XQMuse/Root/Network/Models.swift
@@ -99,7 +99,7 @@
                var backgroundUrl: String = ""
                var cateId: Int = 0
                var chargeType:ChargeType = .free
                var paidStatus:ConditionType = .no
                var paidStatus:ConditionType = .no //是否购买
                var coverDescription: String = ""
                var coverUrl: String = ""
                var detailDescription: String = ""
@@ -117,6 +117,7 @@
                var tutorAudioUrl: String = ""
                var virtualLearnedNum: Int = 0
                var favorite:ConditionType = .no // 是否收藏:1:是 2:否
    var tutor:String = ""
    var meditationMusicList = [String]()
}
XQMuse/Root/Network/Services.swift
@@ -301,7 +301,7 @@
                }
                /// 获取课程列表
                class func getCoursePageList(page:Int,pageSize:Int = 20,cateId:String? = nil,courseTitle:String? = nil)->Observable<BaseResponse<BaseResponseList<CourseModel>>>{
    class func getCoursePageList(page:Int,pageSize:Int = 20,cateId:Int? = nil,courseTitle:String? = nil)->Observable<BaseResponse<BaseResponseList<CourseModel>>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/course/client/course/course/getCoursePageList")
                                                .append(key: "pageCurr", value: page)