杨锴
2024-10-28 eb0532b0ed613459085eb803605c2bb307db7e6d
fix bug
23个文件已修改
387 ■■■■■ 已修改文件
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVC.swift 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVideoVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/CommentListVC.swift 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderResultVC.swift 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/CommentCommentHeaderView.swift 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/LoginVC.swift 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.swift 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/BankInfoTCell.swift 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BankWithdrawVC.swift 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BindAccountVC.swift 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BindAccountVC.xib 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SettingVC.swift 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/StudyListVC.swift 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.swift 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.xib 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Models.swift 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/ShareView.swift 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/ShareView.xib 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/TreeTeskVC.swift 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/SceneDelegate.swift 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift
@@ -35,7 +35,9 @@
                                bannerModels = items
        view_bannerContentView.setItems(items: items) { m in
            if let id = m.courseId?.int{
                JQ_currentNavigationController().pushViewController(CourseDetialVC(courseId: id))
                let courseDetialVC = CourseDetialVC(courseId: id)
                courseDetialVC.hidesBottomBarWhenPushed = true
                JQ_currentNavigationController().pushViewController(courseDetialVC)
            }
        }
                }
XQMuse/Root/Course/VC/CourseDetialVC.swift
@@ -132,6 +132,8 @@
                                Services.getCourseDetail(courseId: courseId).subscribe(onNext: {data in
                                                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)
@@ -222,7 +224,7 @@
                }
    @objc func collectionAction(){
        Services.meditationFavorite(id: courseId).subscribe(onNext: {data in
        Services.clouseFavorite(id: courseId).subscribe(onNext: {data in
            self.courseDetailModel?.isCollect.troggle()
            if self.courseDetailModel?.isCollect == .yes{
                alertSuccess(msg: "收藏成功")
@@ -352,17 +354,14 @@
                                                (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 = .black
            collect_bitem.tintColor = UIColor(hexString: "#fe5b60")
            share_bitem.tintColor = .black
                                                self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont]
                                                barStyle = .darkContent
                                }else{
            collect_bitem.tintColor = .white
            collect_bitem.tintColor =  self.courseDetailModel?.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
            share_bitem.tintColor = .white
                                                (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
XQMuse/Root/Course/VC/CourseDetialVideoVC.swift
@@ -39,7 +39,7 @@
        guard secondLook > 0 else {return}
        Services.watchClouse(chapterId: item.id, isOver: isOver, minuteLook: 0, secondLook: secondLook).subscribe(onNext: { _ in
        Services.watchClouse(chapterId: item.id, isOver: isOver, secondLook: secondLook).subscribe(onNext: { _ in
        }).disposed(by: disposeBag)
    }
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift
@@ -47,7 +47,8 @@
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
                                img_vip.isHidden = model.chargeType != .vipFree
        setChargePrice(model.chargeType, price: model.generalPrice)
                }
                func setCourseModel(_ model:CourseModel){
@@ -57,11 +58,15 @@
                                label_num.text = "\(model.count)"
        img_vip.isHidden = model.isVip != .yes
        switch model.chargeType {
        setChargePrice(model.chargeType, price: model.generalPrice)
                }
    private func setChargePrice(_ type:ChargeType,price:Double){
        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: model.generalPrice.jq_formatFloat, withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
                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
@@ -71,5 +76,5 @@
                view_price.isHidden = true
                img_vip.isHidden = false
        }
                }
    }
}
XQMuse/Root/Home/VC/CommentListVC.swift
@@ -29,11 +29,10 @@
                @IBOutlet weak var cons_height: NSLayoutConstraint!
                private var viewModel = CommentListViewModel()
    private var id:Int!
    init(id:Int) {
        super.init(nibName: nil, bundle: nil)
        self.id = id
        self.viewModel.id.accept(id)
    }
    required init?(coder: NSCoder) {
@@ -78,10 +77,9 @@
        }
        tf_input.resignFirstResponder()
        Services.addQuestion(content: tf_input.text!, meditationId: id).subscribe(onNext: {_ in
        }, onError: {_ in
        Services.addQuestion(meditationId: viewModel.id.value, content: tf_input.text!).subscribe(onNext: {[weak self] _ in
            self?.viewModel.beginRefresh()
            self?.tf_input.text = ""
        }).disposed(by: disposeBag)
                }
@@ -139,7 +137,7 @@
                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                                let cell = tableView.dequeueReusableCell(withIdentifier: "_CommentReplyTCell", for: indexPath) as? CommentReplyTCell
                                let v = viewModel.dataSource.value?.list[indexPath.row]
        let v = viewModel.dataSource.value?.list[indexPath.section]
                                cell?.setText(text: v?.replyContent ?? "")
                                return cell!
                }
XQMuse/Root/Home/VC/PaymentOrderResultVC.swift
@@ -29,13 +29,13 @@
                                super.viewDidLoad()
                                title = "支付结果"
        //如果从支付过来的,移除支付
        navigationController!.viewControllers.removeAll { vc in
            if vc is PaymentOrderResultVC || vc is PaymentOrderVC{
                return true
            }
            return false
        }
//        //如果从支付过来的,移除支付
//        navigationController!.viewControllers.removeAll { vc in
//            if vc is PaymentOrderResultVC || vc is PaymentOrderVC{
//                return true
//            }
//            return false
//        }
                                NotificationCenter.default.post(name: CourseRefresh_Noti, object: nil)
XQMuse/Root/Home/View/CommentCommentHeaderView.swift
@@ -7,6 +7,7 @@
import UIKit
import JQTools
import RxSwift
class CommentCommentHeaderView: UITableViewHeaderFooterView {
@@ -15,6 +16,9 @@
                private var label_content:UILabel!
                private var btn_belike:UIButton!
                private var label_datetime:UILabel!
    private var model:CommentModel?
    private var disposeBag:DisposeBag?
                override init(reuseIdentifier: String?) {
                                super.init(reuseIdentifier: reuseIdentifier)
@@ -47,7 +51,9 @@
                                }
                                btn_belike = UIButton(type: .custom)
                                btn_belike.setImage(UIImage(named: "btn_good"), for: .normal)
        btn_belike.setImage(UIImage(named: "btn_good")?.withTintColor(UIColor(hexStr: "fe5b60")), for: .selected)
        btn_belike.setImage(UIImage(named: "btn_good"), for: .normal)
        btn_belike.addTarget(self, action: #selector(belike), for: .touchUpInside)
                                contentView.addSubview(btn_belike)
                                btn_belike.snp.makeConstraints { make in
                                                make.width.height.equalTo(30)
@@ -56,7 +62,6 @@
                                }
                                label_content = UILabel()
                                label_content.text = "众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好"
                                label_content.font = UIFont.systemFont(ofSize: 12.5, weight: .bold)
                                label_content.numberOfLines = 0
                                label_content.textColor = UIColor(hexString: "#383838")
@@ -69,7 +74,6 @@
                                }
                                label_datetime = UILabel()
                                label_datetime.text = "2024-10-25 21:23"
                                label_datetime.font = UIFont.systemFont(ofSize: 9.41, weight: .medium)
                                label_datetime.textColor = UIColor(hexString: "#B6B6B6")
                                contentView.addSubview(label_datetime)
@@ -79,16 +83,26 @@
                                                make.height.equalTo(7)
                                                make.bottom.equalToSuperview().offset(-10)
                                }
                }
                func setCommentModel(_ model:CommentModel){
        self.model = model
        img_userCover.sd_setImage(with: URL(string: model.nickname))
                                label_content.text = model.content
                                label_userName.text = model.nickname
                                btn_belike.isSelected = model.like == .yes
                                label_datetime.text = model.publishTime
                }
    @objc func belike(_ button:UIButton){
        guard let m = model else {return}
        disposeBag = DisposeBag()
        Services.likeQuesiton(id: m.id).subscribe(onNext: {[weak self ] _ in
            self?.model?.like.troggle()
            self?.btn_belike.isSelected = self?.model?.like == .yes
        }).disposed(by: disposeBag!)
    }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
XQMuse/Root/Login/LoginVC.swift
@@ -13,6 +13,7 @@
let LoginSuccess_Noti = Notification.Name.init("LoginSuccess_Noti")
let LoginQuit_Noti = Notification.Name.init("LoginQuit_Noti")
class LoginViewModel{
                var loginType = BehaviorRelay<LoginType>(value:.pwd)
@@ -64,7 +65,6 @@
                private var viewModel = LoginViewModel()
                private let unlineImageView = UIImageView(image: UIImage(named: "icon_unline"))
                override func viewDidLoad() {
        super.viewDidLoad()
@@ -256,8 +256,6 @@
                                push(vc: vc)
                }
                
                override func viewDidLayoutSubviews() {
                                super.viewDidLayoutSubviews()
                                view_content.jq_gradientColor(colorArr: [UIColor(hexStr: "#F3FFF8").cgColor,UIColor.white.cgColor], cornerRadius: 30, startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 1), bounds: nil, locations: [0.01,0.5])
XQMuse/Root/Me/MeVC.swift
@@ -82,22 +82,41 @@
            self.getData()
            self.queryNotice()
        }).disposed(by: disposeBag)
        NotificationCenter.default.rx.notification(LoginQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
            self.label_userName.text = "请先登录"
            self.image_userAvatar.image = nil
            self.label_phone.text = ""
            self.label_totalDay.attributedText = AttributedStringbuilder.build().add(string: "0", withFont: UIFont.init(name: "PingFang-SC-Regular", size: 60)!, withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 16), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
            self.image_medal.image = nil
            self.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "0", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
            self.image_vipBg.image = UIImage(named: "bg_vip_u")
            self.label_vipInfo.text = "升级为高级会员,解锁全部体验"
            self.label_expirtTime.text = "你还未开通会员服务"
        }).disposed(by: disposeBag)
                }
                private func getData(){
                                Services.getUserInfo().subscribe(onNext: {[weak self] data in
                                                if let model = data.data{
        Services.getUserDetail().subscribe(onNext: {[weak self]data in
            if let model = data.data{
                UserViewModel.saveAvatarInfo(model)
                self?.setUserUI(model: model)
                                                }
        },onError: {[weak self]error in
            }
        }) {[weak self] error in
            let model = UserViewModel.getAvatarInfo()
            if model.id > 0{
                self?.setUserUI(model: model)
            }
        }).disposed(by: disposeBag)
        }.disposed(by: disposeBag)
                }
    private func setUserUI(model:UserInfoModel){
XQMuse/Root/Me/TCell/BankInfoTCell.swift
@@ -29,6 +29,8 @@
                }
                func setBankInfoModel(_ model:BankInfoModel){
        guard !model.bankName.isEmpty else {return}
                                label_title.text = model.bankName
                                let s = model.cardNo.count - 4
                                let b = model.cardNo.count
XQMuse/Root/Me/VC/BankWithdrawVC.swift
@@ -70,6 +70,12 @@
                }
                @IBAction func withdrawAllAction(_ sender: UIButton) {
        tf_withdraw.resignFirstResponder()
        guard tf_withdraw.text?.toDouble ?? 0 > 0 else{
            alertError(msg: "提现余额不足");return
        }
                                tf_withdraw.resignFirstResponder()
                                tf_withdraw.text = income.jq_formatFloat
                }
XQMuse/Root/Me/VC/BindAccountVC.swift
@@ -10,12 +10,13 @@
class BindAccountVC: BaseVC {
                @IBOutlet weak var label_phone: UILabel!
                @IBOutlet weak var label_wchatBindState: UILabel!
    @IBOutlet weak var label_wechatBind: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "账号绑定"
                                label_phone.text = UserViewModel.getAvatarInfo().cellPhone.jq_blotOutPhone()
        label_wechatBind.text = UserViewModel.getAvatarInfo().wxOpenId.isEmpty ? "未绑定":"已绑定"
    }
                @IBAction func bindPhoneAction(_ sender: Any) {
XQMuse/Root/Me/VC/BindAccountVC.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"/>
@@ -13,6 +13,7 @@
            <connections>
                <outlet property="label_phone" destination="JiT-I4-fQb" id="pqq-l5-gv0"/>
                <outlet property="label_wchatBindState" destination="hyt-qR-dWk" id="BWl-xq-gRx"/>
                <outlet property="label_wechatBind" destination="hyt-qR-dWk" id="VIl-lD-Srd"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
@@ -35,7 +36,7 @@
                                    </constraints>
                                </view>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TLZ-tC-0M2">
                                    <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/>
                                    <rect key="frame" x="13.999999999999996" y="17" width="55.666666666666657" height="17"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -82,7 +83,7 @@
                                    </constraints>
                                </view>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="改绑微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rnP-eo-8fV">
                                    <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/>
                                    <rect key="frame" x="13.999999999999996" y="17" width="55.666666666666657" height="17"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -95,7 +96,7 @@
                                    </constraints>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="未绑定" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hyt-qR-dWk">
                                    <rect key="frame" x="323" y="17" width="43" height="17"/>
                                    <rect key="frame" x="324" y="17" width="42" height="17"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.34000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -126,7 +127,7 @@
                                    </constraints>
                                </view>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sff-Hx-7zu">
                                    <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/>
                                    <rect key="frame" x="13.999999999999996" y="17" width="55.666666666666657" height="17"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
XQMuse/Root/Me/VC/SettingVC.swift
@@ -57,10 +57,24 @@
                }
                @IBAction func exchangeAccountAction(_ sender: UIButton) {
                                sceneDelegate?.needLogin()
        CommonAlertView.show(title: "提示", content: "是否切换当前账号?") {[weak self] s in
            if s{
                sceneDelegate?.needLogin()
                self?.btn_exchange.isHidden = true
                self?.btn_logout.isHidden = true
                self?.btn_dispel.isHidden = true
            }
        }
                }
                @IBAction func quitAccountAction(_ sender: UIButton) {
                                sceneDelegate?.needLogin()
        CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in
            if s{
                sceneDelegate?.needLogin()
                self?.btn_exchange.isHidden = true
                self?.btn_logout.isHidden = true
                self?.btn_dispel.isHidden = true
            }
        }
                }
}
XQMuse/Root/Me/VC/StudyListVC.swift
@@ -54,12 +54,15 @@
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                var modelId:Int?
                                if indexPath.section == 0{
            guard datas?.courseList.count != 0 else{return}
                                                modelId = datas?.courseList[indexPath.row].id
                                }
                                if indexPath.section == 0{
            guard datas?.freeCourseList.count != 0 else{return}
                                                modelId = datas?.freeCourseList[indexPath.row].id
                                }
XQMuse/Root/Me/VC/UserProfileVC.swift
@@ -28,7 +28,8 @@
                @IBOutlet weak var tf_address: QMUITextField!
                @IBOutlet weak var tf_birthland: QMUITextField!
                @IBOutlet weak var tf_email: QMUITextField!
    @IBOutlet weak var image_placeholder: UIImageView!
                private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小
                private var clipFrame:CGRect{
                                get{
@@ -47,6 +48,8 @@
                                super.viewDidLoad()
                                title = "个人资料"
        image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty
        image_user.sd_setImage(with: URL(string: UserViewModel.getAvatarInfo().avatar)!)
                                tf_nickName.text = UserViewModel.getAvatarInfo().nickname
                                tf_realName.text = UserViewModel.getAvatarInfo().realname
                                tf_sign.text = UserViewModel.getAvatarInfo().signature
@@ -59,29 +62,42 @@
                                tf_address.text = UserViewModel.getAvatarInfo().location
                                tf_birthland.text = UserViewModel.getAvatarInfo().hometown
                                tf_email.text = UserViewModel.getAvatarInfo().email
                }
                override func viewDidDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
        yy_popBlock = {[weak self] in
            guard let weakSelf = self else { return }
            let nickname = weakSelf.tf_nickName.text
            let realname = weakSelf.tf_realName.text
            let signature = weakSelf.tf_sign.text
            let gender = GenderType.GenderBy(weakSelf.tf_gender.text!)
            let birthday = weakSelf.tf_birthday.text
            let education = weakSelf.tf_degree.text
            let industry = weakSelf.tf_industry.text
            let company = weakSelf.tf_company.text
            let occupation = weakSelf.tf_job.text
            let location = weakSelf.tf_address.text
            let hometown = weakSelf.tf_birthland.text
            let email = weakSelf.tf_email.text
                                let nickname = tf_nickName.text == UserViewModel.getAvatarInfo().nickname ? nil:tf_nickName.text
                                let realname = tf_realName.text == UserViewModel.getAvatarInfo().realname ? nil:tf_realName.text
                                let signature = tf_sign.text == UserViewModel.getAvatarInfo().signature ? nil:tf_sign.text
                                let gender = tf_gender.text == UserViewModel.getAvatarInfo().gender.rawTitle ? nil:GenderType.GenderBy(tf_gender.text!)
                                let birthday = tf_birthday.text == UserViewModel.getAvatarInfo().birthday ? nil:tf_birthday.text
                                let education = tf_degree.text == UserViewModel.getAvatarInfo().education ? nil:tf_degree.text
                                let industry = tf_industry.text == UserViewModel.getAvatarInfo().industry ? nil:tf_industry.text
                                let company = tf_company.text == UserViewModel.getAvatarInfo().company ? nil:tf_company.text
                                let occupation = tf_job.text == UserViewModel.getAvatarInfo().occupation ? nil:tf_job.text
                                let location = tf_address.text == UserViewModel.getAvatarInfo().location ? nil:tf_address.text
                                let hometown = tf_birthland.text == UserViewModel.getAvatarInfo().hometown ? nil:tf_birthland.text
                                let email = tf_email.text == UserViewModel.getAvatarInfo().email ? nil:tf_email.text
                                if nickname != nil || realname != nil || signature != nil || gender != nil || birthday != nil || education != nil || industry != nil || company != nil || occupation != nil || location != nil || hometown != nil || email != nil{
                                                Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in
                                                                NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                                                }).disposed(by: disposeBag)
                                }
            if nickname != UserViewModel.getAvatarInfo().nickname
                || realname != UserViewModel.getAvatarInfo().realname
                || signature != UserViewModel.getAvatarInfo().signature
                || gender != UserViewModel.getAvatarInfo().gender
                || birthday != UserViewModel.getAvatarInfo().birthday
                || education != UserViewModel.getAvatarInfo().education
                || industry != UserViewModel.getAvatarInfo().industry
                || company != UserViewModel.getAvatarInfo().company
                || occupation != UserViewModel.getAvatarInfo().occupation
                || location != UserViewModel.getAvatarInfo().location
                || hometown != UserViewModel.getAvatarInfo().hometown
                || email != UserViewModel.getAvatarInfo().email{
                Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in
                    NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                    weakSelf.navigationController?.popViewController(animated: true)
                }).disposed(by: weakSelf.disposeBag)
            }else{
                weakSelf.navigationController?.popViewController(animated: true)
            }
        }
                }
                override func setUI() {
@@ -140,8 +156,8 @@
                                if textField == tf_birthday{
                                                view.endEditing(true)
                                                BitrhdayPickerView.show(title: "", type: .YMD) { date in
                                                BitrhdayPickerView.show(title: "", type: .YMD) {[weak self] date in
                self?.tf_birthday.text = date.jq_format("yyyy-MM-dd")
                                                }
                                                return false
                                }
@@ -155,10 +171,13 @@
                                picker.selectedAssets = NSMutableArray(array: assets)
        if let photo = photos.first{
            photo.jq_scaled(to: CGSize(width: 250, height: 250)).uploadImg().subscribe(onNext: {imageUrl in
                Services.updateUserInfo(avatar:imageUrl).subscribe(onNext: {data in
            photo.jq_scaled(to: CGSize(width: 250, height: 250)).uploadImg().subscribe(onNext: {[weak self]imageUrl in
                guard let weakSelf = self else { return }
                Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
                    weakSelf.image_placeholder.isHidden = true
                    weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!)
                    NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                }).disposed(by: self.disposeBag)
                }).disposed(by: weakSelf.disposeBag)
            }).disposed(by: disposeBag)
        }
                }
@@ -183,7 +202,9 @@
                                unowned let weakSelf = self
                                corpperVC.imageCropperHandler { (vc, image) in
            image.uploadImg().subscribe(onNext: {imageUrl in
                Services.updateUserInfo(avatar:imageUrl).subscribe(onNext: {data in
                Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
                    weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!)
                    weakSelf.image_placeholder.isHidden = true
                    NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                }).disposed(by: weakSelf.disposeBag)
            }).disposed(by: weakSelf.disposeBag)
XQMuse/Root/Me/VC/UserProfileVC.xib
@@ -1,15 +1,16 @@
<?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>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="UserProfileVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="image_placeholder" destination="cF8-lO-m5L" id="IaC-7M-iF6"/>
                <outlet property="image_user" destination="Qz0-bC-W38" id="eCy-hk-a42"/>
                <outlet property="tf_address" destination="apd-WL-Sql" id="m57-Gx-rtg"/>
                <outlet property="tf_birthday" destination="mG1-O5-m2h" id="QhO-j1-4Id"/>
@@ -65,13 +66,13 @@
                                    <rect key="frame" x="0.0" y="0.0" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fv9-E0-tp4">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="xDs-61-9P0" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -105,13 +106,13 @@
                                    <rect key="frame" x="0.0" y="50" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zxo-Oa-ujz">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="7Wv-tW-0JD" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -145,13 +146,13 @@
                                    <rect key="frame" x="0.0" y="100" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="imv-PF-klz">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HRg-rk-jcD" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -289,13 +290,13 @@
                                    <rect key="frame" x="0.0" y="250" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学历" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lr9-FF-35j">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NG9-8J-4PE" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -329,13 +330,13 @@
                                    <rect key="frame" x="0.0" y="300" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="行业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vsd-1g-qdV">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="OLk-lo-tWN" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -369,13 +370,13 @@
                                    <rect key="frame" x="0.0" y="350" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="公司" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bCL-7v-fEV">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="oBn-y6-tL8" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -409,13 +410,13 @@
                                    <rect key="frame" x="0.0" y="400" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="职业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F4W-m1-aF5">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Shq-k9-lMd" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -449,13 +450,13 @@
                                    <rect key="frame" x="0.0" y="450" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所在地" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4yt-IS-YWS">
                                            <rect key="frame" x="16" y="17.333333333333371" width="40" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="39" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="apd-WL-Sql" customClass="QMUITextField">
                                            <rect key="frame" x="56" y="0.0" width="321" height="50"/>
                                            <rect key="frame" x="55" y="0.0" width="322" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -489,13 +490,13 @@
                                    <rect key="frame" x="0.0" y="500" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="故乡" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3mI-9I-yxT">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8Mk-n3-NN5" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
@@ -529,13 +530,13 @@
                                    <rect key="frame" x="0.0" y="550" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="邮箱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qeP-Ob-ndd">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26.666666666666671" height="15.666666666666664"/>
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="S2r-9H-Zt2" customClass="QMUITextField">
                                            <rect key="frame" x="42.666666666666657" y="0.0" width="334.33333333333337" height="50"/>
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
XQMuse/Root/Network/Models.swift
@@ -103,7 +103,7 @@
                var coverUrl: String = ""
                var detailDescription: String = ""
                var favoriteCount: Int = 0
                var generalPrice: Int = 0
                var generalPrice: Double = 0
                var iconUrl: String = ""
                var id: Int = 0
                var questionCount:Int = 0
@@ -119,7 +119,7 @@
    var meditationMusicList = [String]()
}
struct CommentModel:HandyJSON{
class CommentModel:HandyJSON{
                var appUserId: Int = 0
                var avatar: String = ""
                var content: String = ""
@@ -130,6 +130,8 @@
                var publishTime: String = ""
                var replyContent: String = ""
                var replyTime: String = ""
    required init(){}
}
struct PavilionDetailModel:HandyJSON{
XQMuse/Root/Network/Services.swift
@@ -205,8 +205,16 @@
                                                .append(key: "id", value: id)
                                                .append(key: "reason", value: reason)
                                                .append(key: "apipost_id", value: "25c3e3d0b0e15e")
                                return NetworkRequest.request(params: params, method: .get, progress: true)
                                return NetworkRequest.request(params: params, method: .post, progress: true)
                }
    //喜欢评论
    class func likeQuesiton(id:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/meditation/client/meditation/home/likeQuestion")
            .append(key: "id", value: id)
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
                /// 收藏/取消收藏
                class func meditationFavorite(id:Int)->Observable<BaseResponse<SimpleModel>>{
@@ -248,14 +256,30 @@
/// 课程
extension Services{
    class func watchClouse(chapterId:Int,isOver:Bool,minuteLook:Int,secondLook:Int)->Observable<BaseResponse<SimpleModel>>{
    //添加评论
    class func addQuestion(meditationId:Int,content:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/meditation/client/meditation/home/addQuestion")
            .append(key: "meditationId", value: meditationId)
            .append(key: "content", value: content)
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
    /// 收藏/取消收藏
    class func clouseFavorite(id:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/course/client/course/course/collectCourse")
            .append(key: "id", value: id)
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
    class func watchClouse(chapterId:Int,isOver:Bool,secondLook:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/user/user/app-user-viewing-history/saveCourseStudyHistory")
            .append(key: "id", value: chapterId)
            .append(key: "chapterId", value: chapterId)
            .append(key: "isOver", value: isOver)
            .append(key: "isOver", value: isOver)
            .append(key: "minuteLook", value: minuteLook)
            .append(key: "secondLook", value: secondLook)
            .append(key: "minuteLook", value: 0)
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
@@ -364,7 +388,7 @@
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
                class func updateUserInfo(avatar:String? = nil,birthday:String? = nil,company:String? = nil,education:String? = nil,email:String? = nil,gender:GenderType? = nil,hometown:String? = nil,industry:String? = nil,location:String? = nil,nickname:String? = nil,realname:String? = nil,occupation:String? = nil,signature:String? = nil)->Observable<BaseResponse<SimpleModel>>{
                class func updateUserInfo(avatar:String? = nil,birthday:String? = nil,company:String? = nil,education:String? = nil,email:String? = nil,gender:GenderType? = nil,hometown:String? = nil,industry:String? = nil,location:String? = nil,nickname:String? = nil,realname:String? = nil,occupation:String? = nil,signature:String? = nil)->Observable<BaseResponse<UserInfoModel>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/updateUserDetail")
                                                .append(key: "avatar", value: avatar)
@@ -381,8 +405,15 @@
                                                .append(key: "occupation", value: occupation)
                                                .append(key: "signature", value: signature)
                                                .append(key: "apipost_id", value: "2fc350e9b99599")
                                return NetworkRequest.request(params: params, method: .post, progress: false)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: true)
                }
    class func updateUserAvatar(_ imageUrl:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/user/client/app-user/updateUserAvatar")
            .append(key: "avatar", value: imageUrl)
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
                /// 支付成功
                class func paymentSuccess(courseId:Int)->Observable<BaseResponse<[CourseModel]>>{
@@ -433,9 +464,9 @@
                class func getMyBankList()->Observable<BaseResponse<[BankInfoModel]>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/wallet")
                                params.interface(url: "/user/client/app-user-withdraw/bankList")
                                                .append(key: "apipost_id", value: "361bdf11f992d2")
                                return NetworkRequest.request(params: params, method: .post, progress: false)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: false)
                }
                class func withdraw(bankId:Int,money:Double)->Observable<BaseResponse<SimpleModel>>{
@@ -453,7 +484,7 @@
                                params.interface(url: "/user/client/app-user-withdraw/addBank")
                                                .append(key: "apipost_id", value: "361bdf11f992d1")
                                                .append(dic: model.toRequest())
                                return NetworkRequest.request(params: params, method: .post, progress: true)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: true)
                }
                //添加银行卡
@@ -640,11 +671,11 @@
                                return NetworkRequest.request(params: params, method: .get, progress: false)
                }
    class func addQuestion(content:String,meditationId:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/meditation/client/meditation/home/addQuestion")
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
//    class func addQuestion(content:String,meditationId:Int)->Observable<BaseResponse<SimpleModel>>{
//        let params = ParamsAppender.build(url: All_Url)
//            .interface(url: "/meditation/client/meditation/home/addQuestion")
//        return NetworkRequest.request(params: params, method: .post, progress: true)
//    }
                /// 问题列表
                class func commonQuestionDetailBy(id:Int)->Observable<BaseResponse<CommonQuestionModel>>{
XQMuse/Root/Other/View/ShareView.swift
@@ -12,13 +12,20 @@
                @IBOutlet weak var view_content: UIView!
                @IBOutlet weak var cons_bottom: NSLayoutConstraint!
    @IBOutlet weak var btn_wechat: TapBtn!
    @IBOutlet weak var btn_wechatFri: TapBtn!
    @IBOutlet weak var btn_save: TapBtn!
                override func awakeFromNib() {
                                super.awakeFromNib()
                                alpha = 0
                                cons_bottom.constant = -JQ_ScreenW
                                layoutIfNeeded()
        btn_wechat.isHidden = !WXApi.isWXAppInstalled()
        btn_wechatFri.isHidden = !WXApi.isWXAppInstalled()
        btn_save.isHidden = true
                }
                static func show(){
XQMuse/Root/Other/View/ShareView.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"/>
@@ -19,12 +19,18 @@
                    <rect key="frame" x="0.0" y="594" width="393" height="258"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="分享到" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ORe-Xh-Fdk">
                            <rect key="frame" x="172" y="17" width="49" height="26"/>
                            <rect key="frame" x="172.66666666666666" y="17" width="47.666666666666657" height="26"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="26" id="haw-CW-u0b"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
                            <nil key="textColor"/>
                            <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="Vvy-Pb-wYf">
                            <rect key="frame" x="119" y="95.666666666666629" width="155" height="15.666666666666671"/>
                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                            <color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <stackView opaque="NO" contentMode="scaleToFill" spacing="92" translatesAutoresizingMaskIntoConstraints="NO" id="0PG-Ww-jQZ">
@@ -37,7 +43,7 @@
                                            <rect key="frame" x="0.0" y="0.0" width="51" height="50"/>
                                        </imageView>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信分享" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KVQ-as-9PR">
                                            <rect key="frame" x="1" y="58.000000000000007" width="49.333333333333336" height="14.333333333333336"/>
                                            <rect key="frame" x="1.6666666666666679" y="58.000000000000007" width="48" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
@@ -61,7 +67,7 @@
                                            <rect key="frame" x="0.0" y="0.0" width="51" height="51"/>
                                        </imageView>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IIB-Ay-50b">
                                            <rect key="frame" x="7" y="59.000000000000007" width="37" height="14.333333333333336"/>
                                            <rect key="frame" x="7.6666666666666572" y="59.000000000000007" width="36" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
@@ -85,7 +91,7 @@
                                            <rect key="frame" x="0.0" y="0.0" width="51" height="51"/>
                                        </imageView>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="保存至相册" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wZG-si-wUc">
                                            <rect key="frame" x="-5" y="59.000000000000007" width="61.333333333333336" height="14.333333333333336"/>
                                            <rect key="frame" x="-4.3333333333333144" y="59.000000000000007" width="59.666666666666664" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
@@ -157,6 +163,7 @@
                        <constraint firstItem="0PG-Ww-jQZ" firstAttribute="top" secondItem="ORe-Xh-Fdk" secondAttribute="bottom" constant="23" id="NkI-HE-6Xv"/>
                        <constraint firstItem="jqn-0N-gLE" firstAttribute="top" secondItem="lbC-Uv-Tnb" secondAttribute="bottom" id="Ocq-rC-aLx"/>
                        <constraint firstItem="ORe-Xh-Fdk" firstAttribute="top" secondItem="wZN-hq-21i" secondAttribute="top" constant="17" id="cCN-kp-cjw"/>
                        <constraint firstItem="Vvy-Pb-wYf" firstAttribute="centerY" secondItem="0PG-Ww-jQZ" secondAttribute="centerY" id="fWt-LR-97b"/>
                        <constraint firstItem="lbC-Uv-Tnb" firstAttribute="leading" secondItem="wZN-hq-21i" secondAttribute="leading" id="fgP-yK-92y"/>
                        <constraint firstItem="lbC-Uv-Tnb" firstAttribute="top" secondItem="0PG-Ww-jQZ" secondAttribute="bottom" constant="22" id="iZo-ia-IRj"/>
                        <constraint firstItem="jqn-0N-gLE" firstAttribute="leading" secondItem="wZN-hq-21i" secondAttribute="leading" id="n6F-Eh-dER"/>
@@ -164,6 +171,7 @@
                        <constraint firstItem="U0r-0B-hJh" firstAttribute="top" secondItem="jqn-0N-gLE" secondAttribute="bottom" id="sH9-Bi-vu0"/>
                        <constraint firstItem="0PG-Ww-jQZ" firstAttribute="centerX" secondItem="wZN-hq-21i" secondAttribute="centerX" id="tUM-Bl-UGu"/>
                        <constraint firstItem="U0r-0B-hJh" firstAttribute="leading" secondItem="wZN-hq-21i" secondAttribute="leading" id="uLj-2f-fiX"/>
                        <constraint firstItem="Vvy-Pb-wYf" firstAttribute="centerX" secondItem="0PG-Ww-jQZ" secondAttribute="centerX" id="x0F-G5-ktd"/>
                        <constraint firstAttribute="trailing" secondItem="jqn-0N-gLE" secondAttribute="trailing" id="yMv-uD-Pmv"/>
                        <constraint firstItem="n6l-h0-g55" firstAttribute="top" secondItem="wZN-hq-21i" secondAttribute="top" constant="20" id="yqG-Fn-Ggg"/>
                    </constraints>
@@ -177,6 +185,9 @@
                <constraint firstItem="wZN-hq-21i" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="ymT-Hr-VdD"/>
            </constraints>
            <connections>
                <outlet property="btn_save" destination="YWd-mA-5l0" id="kVe-kU-bwK"/>
                <outlet property="btn_wechat" destination="28f-zu-dkE" id="bdK-2g-ZtC"/>
                <outlet property="btn_wechatFri" destination="G6H-X1-86v" id="6nJ-VL-7i9"/>
                <outlet property="cons_bottom" destination="WbY-wM-I0G" id="JLM-B4-xRY"/>
                <outlet property="view_content" destination="wZN-hq-21i" id="ToD-3j-oTG"/>
            </connections>
@@ -184,7 +195,7 @@
        </view>
    </objects>
    <resources>
        <image name="btn_close" width="20" height="20"/>
        <image name="btn_close" width="21.333333969116211" height="21.333333969116211"/>
        <image name="btn_download" width="51" height="51"/>
        <image name="btn_wechat_1" width="50" height="50"/>
        <image name="btn_wechat_fri" width="51" height="51"/>
XQMuse/Root/TreeGroup/TreeTeskVC.swift
@@ -100,6 +100,8 @@
                                                DispatchQueue.main.asyncAfter(delay: 2.0) {
                                                                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)!))
                self.voicePlayer.play()
                                                }
                                }
XQMuse/SceneDelegate.swift
@@ -61,7 +61,9 @@
                                UserViewModel.clearToken()
                                UserViewModel.clearLoginInfo()
                                UserViewModel.clearAvatarInfo()
        NotificationCenter.default.post(name: LoginQuit_Noti, object: nil)
                                let loginNav = LoginNav(rootViewController: LoginVC())
                                loginNav.modalPresentationStyle = .fullScreen
                                JQ_currentViewController().present(loginNav, animated: true)