杨锴
2024-11-14 1cc03dff6006c235686f87fe0f80af2fde97abf4
fix bug
2个文件已删除
24个文件已修改
331 ■■■■■ 已修改文件
XQMuse/Assets.xcassets/Icons/icon_empty.imageset/Contents.json 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_empty.imageset/icon_empty.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/StoreKit/InPurchaseManager.swift 136 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialOfflineVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialOfflineVC.xib 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVideoVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseMenuVC.swift 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/View/CourseDetailHeaderView.xib 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/CCell/EmptyCCell.swift 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/CCell/EmptyCCell.xib 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/MessageTCell.xib 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/AddBankInfoVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/AddBankInfoVC.xib 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BankWithdrawVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BankWithdrawVC.xib 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/StudyListVC.swift 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/VIPCenterVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WalletRechargeVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/VideoView.swift 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/TreeTeskVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/mov/bg_movie.mov 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/SceneDelegate.swift 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_empty.imageset/Contents.json
File was deleted
XQMuse/Assets.xcassets/Icons/icon_empty.imageset/icon_empty.png
Binary files differ
XQMuse/Config/StoreKit/InPurchaseManager.swift
@@ -110,26 +110,26 @@
        }
    }
    func getIPAPrice(_ price:Int,clouse:@escaping (SKProduct)->Void){
        var ipaId = ""
        switch price {
            case 98: ipaId = "com.jkfitness.a.price.1"
            case 298:ipaId = "com.jkfitness.a.price.2"
            case 488:ipaId = "com.jkfitness.a.price.3"
            case 698:ipaId = "com.jkfitness.a.price.4"
            case 998:ipaId = "com.jkfitness.a.price.5"
            default:break
        }
        var productIds = Set<String>()
        productIds.insert(ipaId)
        InPurchaseManager.instance().setProductList(productIds) {products in
            if let product = products.first{
                clouse(product)
            }
        }
    }
//    func getIPAPrice(_ price:Int,clouse:@escaping (SKProduct)->Void){
//        var ipaId = ""
//        switch price {
//            case 98: ipaId = "com.jkfitness.a.price.1"
//            case 298:ipaId = "com.jkfitness.a.price.2"
//            case 488:ipaId = "com.jkfitness.a.price.3"
//            case 698:ipaId = "com.jkfitness.a.price.4"
//            case 998:ipaId = "com.jkfitness.a.price.5"
//            default:break
//        }
//
//        var productIds = Set<String>()
//        productIds.insert(ipaId)
//
//        InPurchaseManager.instance().setProductList(productIds) {products in
//            if let product = products.first{
//                clouse(product)
//            }
//        }
//    }
    func dismiss(){
@@ -254,52 +254,52 @@
    }
    //获取APP 首次安装时间
    func test1(){
        let queue = DispatchQueue(label: "inapppurchasequeue")
        queue.async {
            let receiptURL = Bundle.main.appStoreReceiptURL
            guard receiptURL?.path != nil else { return }
            do {
                let receiptData = try Data(contentsOf: receiptURL!, options: .alwaysMapped)
                let base64EncodedReceipt = receiptData.base64EncodedString(options: [])
                var verifyReceipt:String = AppleReceiptValidator.VerifyReceiptURLType.sandbox.rawValue
#if !DEBUG
                verifyReceipt = AppleReceiptValidator.VerifyReceiptURLType.production.rawValue
#endif
                let purchaseURL = URL(string: verifyReceipt)!
                var request = URLRequest(url: purchaseURL)
                request.httpMethod = "POST"
                request.setValue("application/json", forHTTPHeaderField: "Content-Type")
                let jsonBody: [String: Any] = [
                    "receipt-data": base64EncodedReceipt,
                    "password": ShareAppleKey // 你的共享密钥
                ]
                let jsonData = try JSONSerialization.data(withJSONObject: jsonBody, options: [])
                request.httpBody = jsonData
                let session = URLSession.shared
                let task = session.dataTask(with: request) { (data, response, error) in
                    if let error = error {return}
                    guard let data = data else { return }
                    do {
                        if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
                            print(json)
                            if let purchageModel = PurchaseModel.deserialize(from: json),purchageModel.status == 0{
                            }
                        }
                    } catch {
                        print("JSON processing failed: \(error)")
                    }
                }
                task.resume()
            } catch {
                print("Error reading receipt data: \(error)")
            }
        }
    }
//    func test1(){
//
//        let queue = DispatchQueue(label: "inapppurchasequeue")
//        queue.async {
//            let receiptURL = Bundle.main.appStoreReceiptURL
//            guard receiptURL?.path != nil else { return }
//            do {
//                let receiptData = try Data(contentsOf: receiptURL!, options: .alwaysMapped)
//                let base64EncodedReceipt = receiptData.base64EncodedString(options: [])
//                var verifyReceipt:String = AppleReceiptValidator.VerifyReceiptURLType.sandbox.rawValue
//#if !DEBUG
//                verifyReceipt = AppleReceiptValidator.VerifyReceiptURLType.production.rawValue
//#endif
//                let purchaseURL = URL(string: verifyReceipt)!
//
//                var request = URLRequest(url: purchaseURL)
//                request.httpMethod = "POST"
//                request.setValue("application/json", forHTTPHeaderField: "Content-Type")
//
//                let jsonBody: [String: Any] = [
//                    "receipt-data": base64EncodedReceipt,
//                    "password": ShareAppleKey // 你的共享密钥
//                ]
//
//                let jsonData = try JSONSerialization.data(withJSONObject: jsonBody, options: [])
//                request.httpBody = jsonData
//
//                let session = URLSession.shared
//                let task = session.dataTask(with: request) { (data, response, error) in
//                    if let error = error {return}
//                    guard let data = data else { return }
//                    do {
//                        if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
//                            print(json)
//                            if let purchageModel = PurchaseModel.deserialize(from: json),purchageModel.status == 0{
//
//                            }
//                        }
//                    } catch {
//                        print("JSON processing failed: \(error)")
//                    }
//                }
//                task.resume()
//            } catch {
//                print("Error reading receipt data: \(error)")
//            }
//        }
//    }
}
XQMuse/Root/.DS_Store
Binary files differ
XQMuse/Root/Course/VC/CourseDetialOfflineVC.swift
@@ -111,7 +111,7 @@
                weakSelf.img_cusomter.sd_setImage(with: URL(string: m.wxQrCode.jq_urlEncoded()))
                if m.detailUrl.jq_isVideo{
                    weakSelf.videoView = VideoView(url: m.detailUrl.jq_urlEncoded(),autoPlay: true,needFirstImage: true, delegate: self!)
                    weakSelf.videoView = VideoView(url: m.detailUrl,autoPlay: false,needFirstImage: true, delegate: self!)
                    weakSelf.view_video.isHidden = false
                    weakSelf.view_video.addSubview(weakSelf.videoView!)
                    weakSelf.videoView!.snp.makeConstraints { make in
XQMuse/Root/Course/VC/CourseDetialOfflineVC.xib
@@ -56,14 +56,14 @@
                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="itL-Yu-biN">
                                            <rect key="frame" x="0.0" y="314.33333333333331" width="393" height="99.666666666666686"/>
                                            <subviews>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="251" text="导师 --" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rfd-fp-6pw">
                                                    <rect key="frame" x="334" y="26.999999999999996" width="38.666666666666686" height="14.333333333333332"/>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="200" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="导师 --" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rfd-fp-6pw">
                                                    <rect key="frame" x="109" y="26.999999999999996" width="263.66666666666669" height="14.333333333333332"/>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                                    <color key="textColor" red="0.27058823529411763" green="0.27058823529411763" blue="0.27058823529411763" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QJB-dH-vTR">
                                                    <rect key="frame" x="20.666666666666657" y="25" width="303.33333333333337" height="23"/>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="---------" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QJB-dH-vTR">
                                                    <rect key="frame" x="20.666666666666664" y="25" width="78.333333333333343" height="23"/>
                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="19"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
XQMuse/Root/Course/VC/CourseDetialVideoVC.swift
@@ -51,6 +51,7 @@
        super.viewDidLoad()
                                title = "课程详情"
//        VideoView(url: items[selectIndex.row].videoUrl.jq_urlEncoded(), autoPlay: false, placeHoderImageUrl: items[selectIndex.row].c, needFirstImage: false, delegate: self)
        videoView = VideoView(url: items[selectIndex.row].videoUrl.jq_urlEncoded(),autoPlay: true,delegate: self)
        view_bg_video.addSubview(videoView!)
        videoView!.snp.makeConstraints { make in
XQMuse/Root/Course/VC/CourseMenuVC.swift
@@ -66,11 +66,27 @@
            }else{
                let v1 = EmptyCCell.jq_loadNibView()
                let v1 = UIView()
                v1.tag = 10010
                v1.bounds = CGRect(x: 0, y: 0, width: 265, height: 300)
                v1.center = CGPoint(x: v.center.x, y: v.center.y - 100)
                v1.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
                v1.center = CGPoint(x: v.center.x - 20, y: v.center.y - 150)
                v.addSubview(v1)
                let image = UIImageView(image: UIImage(named: "bg_empty"))
                image.contentMode = .scaleAspectFill
                v1.addSubview(image)
                image.snp.makeConstraints { make in
                    make.top.left.right.equalToSuperview()
                }
                let label = UILabel(text: "暂未找到相关内容哦~")
                label.font = .systemFont(ofSize: 14, weight: .medium)
                label.textColor = .gray
                v1.addSubview(label)
                label.snp.makeConstraints { make in
                    make.centerX.equalTo(image)
                    make.top.equalTo(image.snp.bottom).offset(8)
                }
            }
        }
                }
XQMuse/Root/Course/View/CourseDetailHeaderView.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>
@@ -23,14 +23,14 @@
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AMf-zP-hoy">
                    <rect key="frame" x="0.0" y="291.33333333333331" width="364" height="99.333333333333314"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CgZ-Jh-uGm">
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="251" horizontalCompressionResistancePriority="250" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CgZ-Jh-uGm">
                            <rect key="frame" x="20.666666666666664" y="20" width="17.666666666666664" height="23"/>
                            <fontDescription key="fontDescription" type="boldSystem" pointSize="19"/>
                            <color key="textColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" 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="DbG-SW-sik">
                            <rect key="frame" x="304.33333333333331" y="24.333333333333371" width="39.333333333333314" height="14.333333333333336"/>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="导师 --" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DbG-SW-sik">
                            <rect key="frame" x="48.333333333333343" y="24.333333333333371" width="295.33333333333326" height="14.333333333333336"/>
                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                            <color key="textColor" red="0.27058823529411763" green="0.27058823529411763" blue="0.27058823529411763" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
@@ -43,7 +43,7 @@
                            </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="0I9-CV-ojJ">
                            <rect key="frame" x="35.666666666666657" y="62.666666666666686" width="69" height="12"/>
                            <rect key="frame" x="35.666666666666664" y="62.666666666666686" width="67.333333333333343" height="12"/>
                            <fontDescription key="fontDescription" type="system" pointSize="10"/>
                            <color key="textColor" red="0.80392156862745101" green="0.80392156862745101" blue="0.80392156862745101" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
@@ -53,6 +53,7 @@
                    <constraints>
                        <constraint firstItem="QZb-OD-zkm" firstAttribute="leading" secondItem="CgZ-Jh-uGm" secondAttribute="leading" id="9m2-IA-FFN"/>
                        <constraint firstAttribute="height" constant="99.5" id="LcG-qp-bba"/>
                        <constraint firstItem="DbG-SW-sik" firstAttribute="leading" secondItem="CgZ-Jh-uGm" secondAttribute="trailing" constant="10" id="UAT-ii-Q8y"/>
                        <constraint firstAttribute="trailing" secondItem="DbG-SW-sik" secondAttribute="trailing" constant="20.5" id="dRM-2S-Gf9"/>
                        <constraint firstItem="0I9-CV-ojJ" firstAttribute="leading" secondItem="QZb-OD-zkm" secondAttribute="trailing" constant="5" id="e2U-HD-qip"/>
                        <constraint firstItem="CgZ-Jh-uGm" firstAttribute="top" secondItem="AMf-zP-hoy" secondAttribute="top" constant="20" id="f9p-jH-KwJ"/>
XQMuse/Root/Home/HomeVC.swift
@@ -68,6 +68,14 @@
            needPopToTree = false
        }
        if AudioPlayer.getSharedInstance().bgmPlayer != nil &&  AudioPlayer.getSharedInstance().masterPlayer != nil{
            AudioPlayer.getSharedInstance().bgmPlayer?.play()
            AudioPlayer.getSharedInstance().masterPlayer?.play()
            return
        }
        if AudioPlayer.getSharedInstance().scenePlayer?.timeControlStatus == .paused && UserDefaultSettingViewModel.getSetting()?.bgm != nil{
            AudioPlayer.getSharedInstance().playSceneAt(UserDefaultSettingViewModel.getSetting()!.bgm!.audioFile)
        }
XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift
@@ -43,7 +43,12 @@
    }
    func setplaying(){
        img_play.image = AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing ? UIImage(named: "btn_pause"):UIImage(named: "icon_play")
        if model?.meditationId == AudioPlayer.getSharedInstance().meditationModel?.id{
            img_play.image = AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing ? UIImage(named: "btn_pause"):UIImage(named: "icon_play")
        }else{
            img_play.image = UIImage(named: "icon_play")
        }
    }
}
XQMuse/Root/Me/CCell/EmptyCCell.swift
@@ -10,6 +10,9 @@
class EmptyCCell: UICollectionViewCell,JQNibView{
    @IBOutlet weak var label_hint: UILabel!
    @IBOutlet weak var btn_call: UIButton!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
XQMuse/Root/Me/CCell/EmptyCCell.xib
@@ -61,6 +61,10 @@
                <constraint firstAttribute="trailing" secondItem="Xpd-vb-LhG" secondAttribute="trailing" constant="52" id="xok-W2-twP"/>
            </constraints>
            <size key="customSize" width="264" height="301"/>
            <connections>
                <outlet property="btn_call" destination="Xpd-vb-LhG" id="LE2-tO-7Jx"/>
                <outlet property="label_hint" destination="eBW-Bc-yAN" id="xxm-YO-GPF"/>
            </connections>
            <point key="canvasLocation" x="196.94656488549617" y="21.47887323943662"/>
        </collectionViewCell>
    </objects>
XQMuse/Root/Me/TCell/MessageTCell.xib
@@ -27,14 +27,14 @@
                                    <constraint firstAttribute="width" constant="47" id="aWb-4v-Kei"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="---" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cob-eJ-7In">
                                <rect key="frame" x="74.666666666666686" y="27.333333333333329" width="237" height="18"/>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="--------------------------------------------------------------------------------------------------" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cob-eJ-7In">
                                <rect key="frame" x="74.666666666666671" y="27.333333333333329" width="232.66666666666663" height="18"/>
                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TdQ-J6-aEO">
                                <rect key="frame" x="318.66666666666669" y="32.666666666666671" width="7.3333333333333144" height="7.3333333333333357"/>
                                <rect key="frame" x="314.33333333333331" y="32.666666666666671" width="7.3333333333333144" height="7.3333333333333357"/>
                                <color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="7.5" id="WzQ-9I-rrI"/>
@@ -53,10 +53,10 @@
                                <color key="textColor" red="0.41960784313725491" green="0.41960784313725491" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" text="00:00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tsl-3O-mZM">
                                <rect key="frame" x="336" y="29.333333333333332" width="70" height="14.333333333333332"/>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" text="9999-99-99" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tsl-3O-mZM">
                                <rect key="frame" x="331.66666666666669" y="29.333333333333332" width="74.333333333333314" height="14.333333333333332"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="70" id="BSL-fx-Idb"/>
                                    <constraint firstAttribute="width" relation="lessThanOrEqual" constant="150" id="fLv-IF-4da"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
XQMuse/Root/Me/VC/AddBankInfoVC.swift
@@ -95,7 +95,6 @@
                }
                override func setUI() {
                                view.backgroundColor = UIColor(hexString: "f6f6f6")
        btn_add.localGradientColor(cornerRadius: 20,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW - 45 * 2, height: 40))
                }
XQMuse/Root/Me/VC/AddBankInfoVC.xib
@@ -26,6 +26,10 @@
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B3b-7E-5Ok">
                    <rect key="frame" x="0.0" y="59" width="393" height="793"/>
                    <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                </view>
                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="fwC-BB-rdM">
                    <rect key="frame" x="14" y="69" width="365" height="100"/>
                    <subviews>
@@ -292,14 +296,18 @@
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="Flq-AM-akx" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="45" id="0pF-4v-xLY"/>
                <constraint firstAttribute="bottom" secondItem="B3b-7E-5Ok" secondAttribute="bottom" id="3ot-Wl-QZz"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="fwC-BB-rdM" secondAttribute="trailing" constant="14" id="6qT-VQ-gTL"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="B3b-7E-5Ok" secondAttribute="trailing" id="ByL-iH-Y91"/>
                <constraint firstItem="07i-g0-s3b" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="IvV-YG-68g"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="07i-g0-s3b" secondAttribute="trailing" constant="14" id="JIg-m3-xhd"/>
                <constraint firstItem="07i-g0-s3b" firstAttribute="top" secondItem="fwC-BB-rdM" secondAttribute="bottom" constant="10" id="Yj2-X6-sib"/>
                <constraint firstItem="fwC-BB-rdM" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="ajJ-yi-V9w"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Flq-AM-akx" secondAttribute="trailing" constant="45" id="bTt-f6-iGj"/>
                <constraint firstItem="Flq-AM-akx" firstAttribute="top" secondItem="07i-g0-s3b" secondAttribute="bottom" constant="59" id="dZF-EA-as7"/>
                <constraint firstItem="B3b-7E-5Ok" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="topMargin" id="p9l-du-LDJ"/>
                <constraint firstItem="fwC-BB-rdM" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="10" id="y0n-oJ-ZZd"/>
                <constraint firstItem="B3b-7E-5Ok" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="yEU-if-oxK"/>
            </constraints>
            <point key="canvasLocation" x="58.778625954198468" y="20.422535211267608"/>
        </view>
XQMuse/Root/Me/VC/BankWithdrawVC.swift
@@ -44,7 +44,7 @@
    }
                override func setUI() {
                                view.backgroundColor = UIColor(hexString: "f6f6f6")
//                                view.backgroundColor = UIColor(hexString: "f6f6f6")
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.separatorStyle = .none
XQMuse/Root/Me/VC/BankWithdrawVC.xib
@@ -24,6 +24,10 @@
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="60M-uE-dIv">
                    <rect key="frame" x="0.0" y="59" width="393" height="793"/>
                    <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                </view>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5CF-zo-zBJ">
                    <rect key="frame" x="14" y="69" width="365" height="40"/>
                    <subviews>
@@ -230,10 +234,14 @@
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstAttribute="trailing" secondItem="60M-uE-dIv" secondAttribute="trailing" id="1HS-0x-yA3"/>
                <constraint firstAttribute="bottom" secondItem="60M-uE-dIv" secondAttribute="bottom" id="2GK-uo-JMD"/>
                <constraint firstItem="9BP-hx-1CV" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="5ZU-jQ-JWI"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="9BP-hx-1CV" secondAttribute="trailing" id="9vx-XO-21l"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="9BP-hx-1CV" secondAttribute="bottom" id="E2O-eV-Ebm"/>
                <constraint firstItem="60M-uE-dIv" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="LlX-lj-bzR"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="5CF-zo-zBJ" secondAttribute="trailing" constant="14" id="MLb-VY-urZ"/>
                <constraint firstItem="60M-uE-dIv" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="topMargin" id="PIj-E6-69C"/>
                <constraint firstItem="9BP-hx-1CV" firstAttribute="top" secondItem="5CF-zo-zBJ" secondAttribute="bottom" constant="10" id="XBP-qs-NOm"/>
                <constraint firstItem="5CF-zo-zBJ" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="kFM-oK-FLh"/>
                <constraint firstItem="5CF-zo-zBJ" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="10" id="vkh-k2-3K9"/>
XQMuse/Root/Me/VC/StudyListVC.swift
@@ -92,6 +92,8 @@
                                                let count = datas?.courseList.count ?? 0
                                                if count == 0{
                                                                let cell    = collectionView.dequeueReusableCell(withReuseIdentifier: "_EmptyCCell", for: indexPath) as! EmptyCCell
                cell.btn_call.isHidden = false
                cell.label_hint.text = "你还没有购买课程"
                                                                return cell
                                                }else{
                                                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_1_CCell", for: indexPath) as! HomeRelaxBanner_2_1_CCell
@@ -103,6 +105,14 @@
                                                                return cell
                                                }
                                }else{
             let count = datas?.freeCourseList.count ?? 0
            if count == 0{
                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_EmptyCCell", for: indexPath) as! EmptyCCell
                cell.btn_call.isHidden = true
                cell.label_hint.text = "暂无推荐"
                return cell
            }
                                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_1_CCell", for: indexPath) as! HomeRelaxBanner_2_1_CCell
                                                cell.setCourseModel(datas!.freeCourseList[indexPath.row])
            cell.view_price.isHidden = true
@@ -114,12 +124,15 @@
                }
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                if section == 0{
                                                let count = datas?.courseList.count ?? 0
                                                if count > 0{return count}
                                                return 1
                                }else {
                                                return datas?.freeCourseList.count ?? 0
            let count = datas?.freeCourseList.count ?? 0
            if count > 0{return count}
                                                return 1
                                }
                }
}
@@ -153,14 +166,21 @@
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
                                let count = datas?.courseList.count ?? 0
                                if indexPath.section == 0 && count == 0{
                                                return CGSize(width: JQ_ScreenW, height: 279)
                                }
        var count = 0
        if indexPath.section == 0{
            count = datas?.courseList.count ?? 0
        }else{
            count = datas?.freeCourseList.count ?? 0
        }
                                let w = (JQ_ScreenW - 18 * 3) / 2
                                return CGSize(width: w, height: w * 1.319)
        if count == 0{
            return CGSize(width: JQ_ScreenW, height: 279)
        }else{
            let w = (JQ_ScreenW - 18 * 3) / 2
            return CGSize(width: w, height: w * 1.319)
        }
                }
}
XQMuse/Root/Me/VC/VIPCenterVC.swift
@@ -123,7 +123,7 @@
                }).disposed(by: weakSelf.disposeBag)
            }
        } errorClouse: { error in
            alertError(msg: error.localizedDescription)
            alertError(msg: "支付失败")
        }
    }
    
XQMuse/Root/Me/VC/WalletRechargeVC.swift
@@ -104,7 +104,7 @@
                }).disposed(by: weakSelf.disposeBag)
            }
        } errorClouse: { error in
            alertError(msg: error.localizedDescription)
            alertError(msg: "支付失败")
        }
    }
}
XQMuse/Root/Network/Services.swift
@@ -703,6 +703,14 @@
                                                .append(key: "pageSize", value: pageSize)
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
    class func bindVx(openId:String,wxName:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/user/client/app-user/bindVx")
            .append(key: "openId", value: openId)
            .append(key: "wxName", value: wxName)
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
}
extension Services{
XQMuse/Root/Other/View/VideoView.swift
@@ -52,13 +52,6 @@
                if let imageV = Url.jq_getVideoThumbnail(){
                    self.addPlaceHoderView(firstFPSImage:imageV)
                }
//                URL.jq_splitVideoFileUrlFps(splitFileUrl: Url, fps: 1) {[weak self] state, images in
//                    if let first = images.first{
//                        DispatchQueue.main.async {
//                            self?.addPlaceHoderView(firstFPSImage: first)
//                        }
//                    }
//                }
            }
                                                if autoPlay{
@@ -100,7 +93,7 @@
        imageView.contentMode = .scaleAspectFit
                                placeV.addSubview(imageView)
                                imageView.frame = player.frame
                                let btn_placeholder = UIButton(type: .custom)
                                btn_placeholder.setImage(UIImage(named: "icon_play"), for: .normal)
@@ -110,6 +103,10 @@
                                                make.center.equalToSuperview()
                                }
        imageView.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }
                                player.placeholder = placeV
                }
XQMuse/Root/TreeGroup/TreeTeskVC.swift
@@ -99,7 +99,7 @@
                                btn_seedingAgain.isHidden = true
                                if settingModel!.userFirstOpenTreeTask{
                                                DispatchQueue.main.asyncAfter(delay: 2.0) {
            DispatchQueue.main.asyncAfter(delay: 0.5) {
                                                                let h = (JQ_ScreenW - 90) * 0.8766
                                                                TreeTeskFirstRuleView.show(title: "心泉之树", content:"亲爱的家人,感谢您用心的交流。\n现在,您心灵之树的种子已经植入这片沃土,请以农夫的心态用心浇灌,不久的将来,将会长成苍天大树,结出丰硕的果实。加油哦!",textAlignment: .left,height: h,textTopOffset: 22)
                self.voicePlayer.replaceCurrentItem(with: AVPlayerItem(url: URL(string: TreeLevel.level_1.sound)!))
XQMuse/Root/TreeGroup/mov/bg_movie.mov
Binary files differ
XQMuse/SceneDelegate.swift
@@ -102,7 +102,7 @@
                        if let m = model{
                            WeChatTools.getUserInfo(access_token: m.access_token, openId: m.openid) { userInfoModel in
                                if let u = userInfoModel{
                                    if UserViewModel.getToken()?.isEmpty ?? true{
                                    if UserViewModel.getAvatarInfo().wxOpenId.isEmpty{
                                        Services.loginByWechat(headImgUrl: u.headimgurl, nickname: u.nickname, sex: u.sex, wxOpenId: u.openid).subscribe(onNext: {data in
                                            if let model = data.data{
                                                sceneDelegate?.loginSuccess()
@@ -117,12 +117,12 @@
                                            }
                                        }).disposed(by: JQ_disposeBag)
                                    }else{
//                                        NotificationCenter.default.post(name: BindWechat_Noti, object: nil)
//                                        let v = UserViewModel.getAvatarInfo()
//                                        v.wxOpenId = u.openid
//                                        UserViewModel.saveAvatarInfo(v)
                                        Services.bindVx(openId: u.openid, wxName: u.nickname).subscribe(onNext: {_ in
                                            NotificationCenter.default.post(name: BindWechat_Noti, object: nil)
                                            var v = UserViewModel.getAvatarInfo()
                                            v.wxOpenId = u.openid
                                            UserViewModel.saveAvatarInfo(v)
                                        }).disposed(by: JQ_disposeBag)
                                    }
                                }else{
                                    alertError(msg: "获取信息失败")