杨锴
2024-09-14 6912d657ec6bb1db9683d5b5be8f0777f001ba11
fix API
23个文件已修改
354 ■■■■ 已修改文件
XQMuse/Config/Def.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/Enums/Enums.swift 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseMenuVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemListVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.swift 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.xib 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.swift 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.xib 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Models.swift 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/PavilionVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuideVC.swift 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_2_VC.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_3_VC.swift 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/Def.swift
@@ -12,6 +12,7 @@
import QMUIKit
import OSLog
//https://dummyimage.com/100x100
let app = UIApplication.shared.delegate as! AppDelegate
XQMuse/Config/Enums/Enums.swift
@@ -13,11 +13,6 @@
                case line = 1 //顺序播放
}
enum GenderType:Int,HandyJSONEnum{
                case none = 0
                case  man = 1
                case  woman = 2
}
enum DisplayType:Int,HandyJSONEnum{
                case horizontal = 1 //横
@@ -116,3 +111,25 @@
                case increase = 1
                case decreate = 2
}
enum GenderType:Int,HandyJSONEnum,Codable{
                case man = 1
                case woman = 2
                case encrypt = 3
                var rawTitle:String{
                                switch self {
                                                case .man:return "男"
                                                case .woman:return "女"
                                                case .encrypt:return "保密"
                                }
                }
                static func GenderBy(_ str:String)->GenderType{
                                switch str {
                                                case "男":return .man
                                                case "女":return .woman
                                                default:return .encrypt
                                }
                }
}
XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift
@@ -19,7 +19,8 @@
                func setItem(_ item:TitleItem){
                                if let localImage = item.coverImage{
                                                img_cover.image = UIImage(named: localImage)
//                                                img_cover.image = UIImage(named: localImage)
                                                img_cover.sd_setImage(with: URL(string: localImage))
                                }
                                label_title.text = item.title
XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift
@@ -45,7 +45,6 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell
                                cell.setCourseModel(items[indexPath.row])
                                cell.backgroundColor = .jq_randomColor
                                return cell
                }
XQMuse/Root/Course/VC/CourseDetialVC.swift
@@ -270,7 +270,6 @@
                                if cell == nil{
                                                cell = UITableViewCell(style: .value1, reuseIdentifier: "cell")
                                }
                                cell?.backgroundColor = .jq_randomColor
                                return cell!
                }
XQMuse/Root/Course/VC/CourseMenuVC.swift
@@ -102,7 +102,6 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_1_CCell", for: indexPath) as! HomeRelaxBanner_2_1_CCell
                                cell.backgroundColor = .jq_randomColor
                                cell.setCourseModel(model)
                                return cell
                }
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift
@@ -118,7 +118,6 @@
                                }
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell
                                cell.backgroundColor = .jq_randomColor
                                cell.setCourseModel(model)
                                return cell
                }
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib
@@ -17,7 +17,7 @@
                <rect key="frame" x="0.0" y="0.0" width="160" height="196"/>
                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                <subviews>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VwD-36-ent">
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VwD-36-ent">
                        <rect key="frame" x="0.0" y="0.0" width="160" height="196"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nyj-tV-0t4">
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib
@@ -16,7 +16,7 @@
                <rect key="frame" x="0.0" y="0.0" width="178" height="301"/>
                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                <subviews>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cCC-0f-GSV">
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cCC-0f-GSV">
                        <rect key="frame" x="0.0" y="0.0" width="178" height="301"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Fb9-IV-vVk">
XQMuse/Root/Home/HomeVC.swift
@@ -132,6 +132,10 @@
                                NotificationCenter.default.rx.notification(SetBGMSuccess_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
                                                self.topMenuView.resetTopImage()
                                }).disposed(by: disposeBag)
                                NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in
                                                self.getData()
                                }).disposed(by: disposeBag)
                }
                private func getData(){
XQMuse/Root/Home/VC/HomeItemListVC.swift
@@ -69,7 +69,6 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                cell.backgroundColor = .jq_randomColor
                                cell.setMeditationModel(model)
                                return cell
                }
XQMuse/Root/Me/MeVC.swift
@@ -21,6 +21,17 @@
                @IBOutlet weak var btn_setting: QMUIButton!
                @IBOutlet weak var btn_share: QMUIButton!
                @IBOutlet weak var view_rank: GradientView!
                @IBOutlet weak var image_vipBg: UIImageView!
                @IBOutlet weak var label_expirtTime: UILabel!
                @IBOutlet weak var label_sustainDay: UILabel!
                @IBOutlet weak var label_today: UILabel!
                @IBOutlet weak var image_medal: UIImageView!
                @IBOutlet weak var image_userAvatar: UIImageView!
                @IBOutlet weak var label_userName: UILabel!
                @IBOutlet weak var label_phone: UILabel!
                @IBOutlet weak var label_vipInfo: UILabel!
                @IBOutlet weak var label_totalDay: UILabel!
                
                override func viewDidLoad() {
        super.viewDidLoad()
@@ -28,6 +39,8 @@
                                let tap = UITapGestureRecognizer(target: self, action: #selector(rankAction))
                                view_rank.isUserInteractionEnabled = true
                                view_rank.addGestureRecognizer(tap)
                                getData()
    }
                override func setUI() {
@@ -46,6 +59,52 @@
                                btn_share.imagePosition = .top
                }
                override func setRx() {
                                NotificationCenter.default.rx.notification(UpdateUserProfile_Noti, object: nil).take(until: self.rx.deallocated).subscribe(onNext: { _ in
                                                self.getData()
                                }).disposed(by: disposeBag)
                }
                private func getData(){
                                Services.getUserDetail().subscribe(onNext: {data in
                                                if let model = data.data{
                                                                UserViewModel.saveAvatarInfo(model)
                                                }
                                }).disposed(by: self.disposeBag)
                                Services.getUserInfo().subscribe(onNext: {data in
                                                if let model = data.data{
                                                                self.image_userAvatar.sd_setImage(with: URL(string: model.avatar))
                                                                self.label_userName.text = model.nickname
                                                                self.label_phone.text = model.cellPhone.jq_blotOutPhone()
                                                                self.label_totalDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.cumulative)", 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.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.continuity)", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
                                                                self.image_medal.sd_setImage(with: URL(string: model.levelIcon))
                                                                let timeTurple = Date.jq_formateToTime_tuple(model.today * 60)
                                                                self.label_today.attributedText = AttributedStringbuilder.build().add(string: "\(timeTurple.hour)", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "时", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).add(string: "\(timeTurple.minute)", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "分", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
                                                                if model.isVip == .yes{
                                                                                self.image_vipBg.image = UIImage(named: "bg_vip")
                                                                                self.label_vipInfo.text = "你已是高级会员"
                                                                                self.label_expirtTime.text = model.vipExpireTime + "到期"
                                                                }else{
                                                                                self.image_vipBg.image = UIImage(named: "bg_vip_u")
                                                                                self.label_vipInfo.text = "升级为高级会员,解锁全部体验"
                                                                                self.label_expirtTime.text = "你还未开通会员服务"
                                                                }
                                                }
                                }).disposed(by: disposeBag)
                }
                @objc func rankAction(){
                                let vc = WebVC()
                                vc.title = "爱心榜单"
XQMuse/Root/Me/MeVC.xib
@@ -18,6 +18,16 @@
                <outlet property="btn_record" destination="ohz-jh-MYr" id="I71-ch-fvw"/>
                <outlet property="btn_setting" destination="gCl-Xh-n2C" id="QuC-zj-2x4"/>
                <outlet property="btn_share" destination="503-ii-Lw9" id="v1J-Bx-FQ7"/>
                <outlet property="image_medal" destination="dut-7H-aMv" id="7p1-yV-vbS"/>
                <outlet property="image_userAvatar" destination="dFl-Si-mEi" id="j1A-z8-kad"/>
                <outlet property="image_vipBg" destination="lQe-up-4F0" id="pBK-QF-IFs"/>
                <outlet property="label_expirtTime" destination="IcP-op-38A" id="Hxh-C2-qn1"/>
                <outlet property="label_phone" destination="xL7-Qf-iI2" id="R7I-kg-vh2"/>
                <outlet property="label_sustainDay" destination="8j2-ya-Clo" id="kPr-q8-A4K"/>
                <outlet property="label_today" destination="zZP-3q-D6G" id="SA1-hV-SxE"/>
                <outlet property="label_totalDay" destination="YPb-vk-RCa" id="NPs-ta-7BS"/>
                <outlet property="label_userName" destination="Xiq-PE-zPH" id="vAC-Zm-SdG"/>
                <outlet property="label_vipInfo" destination="pJK-nH-NXm" id="cHp-Kf-9fB"/>
                <outlet property="scrollView" destination="eKy-w2-ydR" id="uh0-OR-U8m"/>
                <outlet property="view" destination="iN0-l3-epB" id="xwB-6q-ebc"/>
                <outlet property="view_rank" destination="4fN-Be-XLG" id="3h6-0r-QKI"/>
@@ -69,8 +79,8 @@
                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_vip_u" translatesAutoresizingMaskIntoConstraints="NO" id="lQe-up-4F0">
                                            <rect key="frame" x="0.0" y="0.0" width="368" height="114.33333333333333"/>
                                        </imageView>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cy9-se-bLv">
                                            <rect key="frame" x="19.333333333333336" y="23.666666666666671" width="19.666666666666664" height="26.333333333333329"/>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="心泉·疗愈会员" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cy9-se-bLv">
                                            <rect key="frame" x="19.333333333333329" y="23.666666666666671" width="150.66666666666669" height="26.333333333333329"/>
                                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="22"/>
                                            <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
@@ -163,29 +173,32 @@
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0天" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YPb-vk-RCa">
                                                    <rect key="frame" x="131.66666666666669" y="192" width="104.66666666666669" height="71.666666666666686"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="60"/>
                                                    <rect key="frame" x="136" y="192" width="96" height="45"/>
                                                    <constraints>
                                                        <constraint firstAttribute="height" constant="45" id="Ma8-cs-j54"/>
                                                    </constraints>
                                                    <fontDescription key="fontDescription" name="PingFangSC-Light" family="PingFang SC" pointSize="60"/>
                                                    <color key="textColor" red="0.082352941176470587" green="0.15294117647058825" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ho-wk-mFw">
                                                    <rect key="frame" x="21.333333333333343" y="326.66666666666663" width="325" height="71"/>
                                                    <rect key="frame" x="21.333333333333343" y="300" width="325" height="71"/>
                                                    <subviews>
                                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XmC-Kd-dmq">
                                                            <rect key="frame" x="162" y="20.666666666666742" width="1" height="30"/>
                                                            <rect key="frame" x="162" y="20.666666666666629" width="1" height="30"/>
                                                            <color key="backgroundColor" red="0.94509803921568625" green="0.95294117647058818" blue="0.94901960784313721" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                            <constraints>
                                                                <constraint firstAttribute="width" constant="1" id="hXb-BI-vs2"/>
                                                            </constraints>
                                                        </view>
                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0小时0分" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zZP-3q-D6G">
                                                            <rect key="frame" x="163" y="38.666666666666742" width="162" height="18"/>
                                                            <rect key="frame" x="163" y="38.666666666666629" width="162" height="18"/>
                                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                            <nil key="textColor"/>
                                                            <nil key="highlightedColor"/>
                                                        </label>
                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0天" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8j2-ya-Clo">
                                                            <rect key="frame" x="0.0" y="38.666666666666742" width="162" height="18"/>
                                                            <rect key="frame" x="0.0" y="38.666666666666629" width="162" height="18"/>
                                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                            <nil key="textColor"/>
                                                            <nil key="highlightedColor"/>
@@ -254,25 +267,25 @@
                                                    </constraints>
                                                </view>
                                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n62-aO-gnS" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                                                    <rect key="frame" x="21.333333333333343" y="413.33333333333337" width="325" height="50.333333333333314"/>
                                                    <rect key="frame" x="21.333333333333343" y="386.66666666666663" width="325" height="50.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="z63-U0-xCY">
                                                            <rect key="frame" x="4.6666666666666607" y="16.666666666666629" width="57.333333333333343" height="17"/>
                                                            <rect key="frame" x="4.6666666666666607" y="16.666666666666742" width="57.333333333333343" height="17"/>
                                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                            <color key="textColor" red="0.13725490196078433" green="0.13725490196078433" blue="0.13725490196078433" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                            <nil key="highlightedColor"/>
                                                        </label>
                                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip_level" translatesAutoresizingMaskIntoConstraints="NO" id="dut-7H-aMv">
                                                            <rect key="frame" x="72" y="11.333333333333259" width="95.666666666666686" height="27.666666666666671"/>
                                                            <rect key="frame" x="72" y="11.333333333333373" width="95.666666666666686" height="27.666666666666671"/>
                                                        </imageView>
                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="查看详情" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="flg-Hv-HHC">
                                                            <rect key="frame" x="265.66666666666669" y="18.666666666666629" width="45" height="13.333333333333336"/>
                                                            <rect key="frame" x="265.66666666666669" y="18.666666666666742" width="45" height="13.333333333333336"/>
                                                            <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                                            <color key="textColor" red="0.40392156862745099" green="0.40392156862745099" blue="0.40392156862745099" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                            <nil key="highlightedColor"/>
                                                        </label>
                                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="IKY-cB-8Vd">
                                                            <rect key="frame" x="316.66666666666669" y="20.333333333333258" width="5.3333333333333144" height="10"/>
                                                            <rect key="frame" x="316.66666666666669" y="20.333333333333371" width="5.3333333333333144" height="10"/>
                                                            <constraints>
                                                                <constraint firstAttribute="width" constant="5.5" id="UAN-uc-0l9"/>
                                                                <constraint firstAttribute="height" constant="10" id="mje-aH-Ehd"/>
XQMuse/Root/Me/VC/UserProfileVC.swift
@@ -10,11 +10,24 @@
import JQTools
import TZImagePickerController
let UpdateUserProfile_Noti = Notification.Name.init("UpdateUserProfile_Noti")
class UserProfileVC: BaseVC {
                @IBOutlet weak var image_user: UIImageView!
                @IBOutlet weak var tf_nickName: QMUITextField!
                @IBOutlet weak var tf_realName: QMUITextField!
                @IBOutlet weak var tf_sign: QMUITextField!
                @IBOutlet weak var tf_gender: QMUITextField!
                @IBOutlet weak var tf_birthday: QMUITextField!
                @IBOutlet weak var tf_degree: QMUITextField!
                @IBOutlet weak var tf_industry: QMUITextField!
                @IBOutlet weak var tf_company: QMUITextField!
                @IBOutlet weak var tf_job: QMUITextField!
                @IBOutlet weak var tf_address: QMUITextField!
                @IBOutlet weak var tf_birthland: QMUITextField!
                @IBOutlet weak var tf_email: QMUITextField!
                private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小
                private var clipFrame:CGRect{
@@ -33,6 +46,42 @@
                override func viewDidLoad() {
                                super.viewDidLoad()
                                title = "个人资料"
                                tf_nickName.text = UserViewModel.getAvatarInfo().nickname
                                tf_realName.text = UserViewModel.getAvatarInfo().realname
                                tf_sign.text = UserViewModel.getAvatarInfo().signature
                                tf_gender.text = UserViewModel.getAvatarInfo().gender.rawTitle
                                tf_birthday.text = UserViewModel.getAvatarInfo().birthday
                                tf_degree.text = UserViewModel.getAvatarInfo().education
                                tf_industry.text = UserViewModel.getAvatarInfo().industry
                                tf_company.text = UserViewModel.getAvatarInfo().company
                                tf_job.text = UserViewModel.getAvatarInfo().occupation
                                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)
                                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)
                                }
                }
                override func setUI() {
@@ -83,16 +132,9 @@
                                if textField == tf_gender{
                                                let items = ["男","女","保密"]
                                                CommonAlertSheetView.show(items: items) {[weak self] index in
                                                                guard let weakSelf = self else { return }
                                                CommonAlertSheetView.show(items: items) { index in
                                                                guard textField.text != items[index] else {return}
                                                                textField.text = items[index]
                                                                var gender:GenderType!
                                                                if index == 0{
                                                                                gender = .man
                                                                }else{
                                                                                gender = .woman
                                                                }
                                                }
                                }
@@ -101,9 +143,6 @@
                                                BitrhdayPickerView.show(title: "", type: .YMD) { date in
                                                                
                                                }
//                                                CommonDatePickerView.show(before: 60, after: 0, type: .YMD) { year, month, day,_,_ in
//                                                                textField.text = String(format: "%ld-%02ld-%02ld", year!,month!,day!)
//                                                }
                                                return false
                                }
XQMuse/Root/Me/VC/UserProfileVC.xib
@@ -11,8 +11,18 @@
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="UserProfileVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <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"/>
                <outlet property="tf_birthland" destination="8Mk-n3-NN5" id="84g-kg-wrt"/>
                <outlet property="tf_company" destination="oBn-y6-tL8" id="DSm-9v-SmX"/>
                <outlet property="tf_degree" destination="NG9-8J-4PE" id="8HI-YX-gv2"/>
                <outlet property="tf_email" destination="S2r-9H-Zt2" id="ECV-Od-3Q8"/>
                <outlet property="tf_gender" destination="eyM-56-9BV" id="dX4-by-LUg"/>
                <outlet property="tf_industry" destination="OLk-lo-tWN" id="fMb-Kq-cQn"/>
                <outlet property="tf_job" destination="Shq-k9-lMd" id="xBA-bw-XbQ"/>
                <outlet property="tf_nickName" destination="xDs-61-9P0" id="dKw-c6-6r8"/>
                <outlet property="tf_realName" destination="7Wv-tW-0JD" id="E1t-zc-26s"/>
                <outlet property="tf_sign" destination="HRg-rk-jcD" id="O8Q-AD-caV"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
XQMuse/Root/Network/Models.swift
@@ -222,7 +222,7 @@
                var email: String = ""
                var freezingOperator: String = ""
                var freezingReason: String = ""
                var gender: Int = 0
                var gender: GenderType = .encrypt
                var hometown: String = ""
                var id: Int = 0
                var income: Int = 0
@@ -233,6 +233,7 @@
                var location: String = ""
                var logoutTime: String = ""
                var nickname: String = ""
                var realname:String = ""
                var occupation: String = ""
                var registerTime: String = ""
                var sanskritFlag: Int = 0
@@ -247,6 +248,13 @@
                var vipExpireTime: String = ""
                var isVip:ConditionType = .no
                var wxOpenId: String = ""
                var continuity: Int = 0
                var cumulative: Int = 0
                var level: Int = 0
                var levelIcon: String?
                var levelName: String?
                var today: Int = 0
}
struct TutorInfoModel:HandyJSON{
@@ -328,6 +336,23 @@
                var code:String = ""
}
struct TagModel:HandyJSON,Hashable{
                var id = 0
                var tagName = ""
                var indexPath:IndexPath?
}
struct ResponseUserAnswerModel:HandyJSON{
                var tagsId = "" //问题二 多个tagId使用英文逗号拼接字符串
                var userAnswerOneDTOList = [ResponseUserAnswerDTOModel]()
}
struct ResponseUserAnswerDTOModel:HandyJSON{
                var answer = "" //问题一 答案 1:是2:否3:偶尔,其他补充说明
                var type = 0 //问题一 问题类型 1:您是否内心纠结敏感多疑?2:您是否辗转反侧彻夜难眠?3:您是否情绪失控暴躁易怒?4:您是否沉迷情感倍受伤害?5:您是否人生迷茫踌躇彷徨?6:其它补充说明
}
XQMuse/Root/Network/Services.swift
@@ -133,7 +133,7 @@
                class func getMeditationPage(_ cateId:Int,page:Int,pageSize:Int = 20)->Observable<BaseResponse<BaseResponseList<MeditationModel>>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/meditation/client/meditation/home/getMeditationAndCateList")
                                params.interface(url: "/meditation/client/meditation/home/getMeditationPageByCateId")
                                                .append(key: "cateId", value: cateId)
                                                .append(key: "pageCurr", value: page)
                                                .append(key: "pageSize", value: pageSize)
@@ -285,10 +285,38 @@
                }
                /// 获取用户信息
                class func getUserDetail()->Observable<BaseResponse<UserInfoModel>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/getUserDetail")
                                                .append(key: "apipost_id", value: "2fc350e9799588")
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
                /// 获取用户信息
                class func getUserInfo()->Observable<BaseResponse<UserInfoModel>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/getCurrentUser")
                                                .append(key: "apipost_id", value: "2e763463799132")
                                params.interface(url: "/user/client/app-user/getUserInfo")
                                                .append(key: "apipost_id", value: "300079e039993f")
                                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>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/updateUserDetail")
                                                .append(key: "avatar", value: avatar)
                                                .append(key: "birthday", value: birthday)
                                                .append(key: "company", value: company)
                                                .append(key: "education", value: education)
                                                .append(key: "email", value: email)
                                                .append(key: "gender", value: gender?.rawValue)
                                                .append(key: "hometown", value: hometown)
                                                .append(key: "industry", value: industry)
                                                .append(key: "location", value: location)
                                                .append(key: "nickname", value: nickname)
                                                .append(key: "realname", value: realname)
                                                .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)
                }
@@ -307,6 +335,22 @@
                                                .append(key: "apipost_id", value: "2e763463799134")
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
                //获取个性化设置的标签
                class func getTag()->Observable<BaseResponse<[TagModel]>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/getTagList")
                                                .append(key: "apipost_id", value: "25c3dab9f0e024")
                                return NetworkRequest.request(params: params, method: .post, progress: true)
                }
                class func saveUserAnswers(_ model:ResponseUserAnswerModel)->Observable<BaseResponse<SimpleModel>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/user/client/app-user/saveUserAnswers")
                                                .append(dic: model.toJSON()!)
                                                .append(key: "apipost_id", value: "25c3dab9f0e025")
                                return NetworkRequest.request(params: params, method: .post, progress: true)
                }
}
XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift
@@ -21,7 +21,6 @@
                
                override func awakeFromNib() {
        super.awakeFromNib()
    }
                func setPavilionDetailModel(_ model:PavilionDetailModel){
XQMuse/Root/Pavilion/PavilionVC.swift
@@ -72,7 +72,7 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let model = viewModel.dataSource.value!.list[indexPath.row]
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_PavilionItemCell", for: indexPath) as! PavilionItemCell
                                cell.backgroundColor = .jq_randomColor
                                cell.backgroundColor = .white
                                cell.jq_cornerRadius = 16
                                cell.setPavilionDetailModel(model)
                                return cell
XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift
@@ -40,7 +40,6 @@
        super.viewDidLoad()
                                title = "疗愈馆详情"
                                scrollView.contentInsetAdjustmentBehavior = .never
                                view_bannerBg.backgroundColor = .jq_randomColor
                                webView.scrollView.isScrollEnabled = false
                                Services.getPavlilonDetail(id: id).subscribe(onNext: {data in
XQMuse/Root/Plans/PlanGuideVC.swift
@@ -38,6 +38,16 @@
                }
                override func viewWillAppear(_ animated: Bool) {
                                super.viewWillAppear(animated)
                                player.play()
                }
                override func viewDidDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
                                player.pause()
                }
                override func setUI() {
                                label_title.font = Def_FlyFlowerSong(fontSize: 35)
@@ -58,7 +68,6 @@
                                playerLayer.player = player
                                view.layer.addSublayer(playerLayer)
                                player.play()
                                playerLayer.zPosition = -999
                }
XQMuse/Root/Plans/PlanGuide_2_VC.swift
@@ -21,6 +21,8 @@
                private var questions = [String]()
                private var questionIndex = -1
                private var responseUserAnswerModel = ResponseUserAnswerModel()
                override func viewDidLoad() {
        super.viewDidLoad()
@@ -102,6 +104,17 @@
                                btn_deny.isSelected = sender.tag == btn_deny.tag
                                btn_OnceInAWel.isSelected = sender.tag == btn_OnceInAWel.tag
                                var answer:String = ""
                                if btn_sure.isSelected{
                                                answer = "1"
                                }else if btn_deny.isSelected{
                                                answer = "2"
                                }else{
                                                answer = "3"
                                }
                                responseUserAnswerModel.userAnswerOneDTOList.append(ResponseUserAnswerDTOModel(answer: answer, type: questionIndex))
                                btn_sure.backgroundColor = btn_sure.isSelected ? UIColor(hexString: "#5E9456"):.clear
                                btn_deny.backgroundColor = btn_deny.isSelected ? UIColor(hexString: "#5E9456"):.clear
                                btn_OnceInAWel.backgroundColor = btn_OnceInAWel.isSelected ? UIColor(hexString: "#5E9456"):.clear
@@ -123,10 +136,14 @@
                                                self.btn_OnceInAWel.alpha = 0
                                }
                                DispatchQueue.main.asyncAfter(delay: 1.8) {
                                DispatchQueue.main.asyncAfter(delay: 1.5) {
                                                if self.questionIndex == self.questions.count - 1{
                                                                PlanGuidePromptSupplyView.show { text in
                                                                                if    text != nil{
                                                                                                self.responseUserAnswerModel.userAnswerOneDTOList.append(ResponseUserAnswerDTOModel(answer: text!, type: 6))
                                                                                }
                                                                                let vc = PlanGuide_3_VC()
                                                                                vc.responseUserAnswerModel = self.responseUserAnswerModel
                                                                                self.push(vc: vc)
                                                                }
                                                }else{
XQMuse/Root/Plans/PlanGuide_3_VC.swift
@@ -15,9 +15,10 @@
                @IBOutlet weak var btn_next: UIButton!
                @IBOutlet weak var view_content: UIView!
                @IBOutlet weak var collectionVIew: UICollectionView!
                private var setIndex = Set<IndexPath>()
                private var selectModels = Set<TagModel>()
                private var items = [["原生家庭","亲子关系","夫妻关系"],["情感纠结","思念亲人","优质睡眠","提升能量"],["高维智慧","清理净化","情绪稳定"]]
                var responseUserAnswerModel:ResponseUserAnswerModel!
                private var items = [[TagModel]?]()
                override func viewWillAppear(_ animated: Bool) {
@@ -29,6 +30,11 @@
                override func viewDidLoad() {
                                super.viewDidLoad()
                                var topIndex = 0
                                Services.getTag().subscribe(onNext: { data in
                                                self.items = Array<TagModel>.splitArray((data.data ?? []), subArraySize: 3)
                                                self.collectionVIew.reloadData()
                                }).disposed(by: disposeBag)
                }
                override func setUI() {
@@ -51,7 +57,10 @@
                }
                @IBAction func nextAction(_ sender: UIButton) {
                                NotificationCenter.default.post(name: PlantGuideQuit_Noti, object: true)
                                responseUserAnswerModel.tagsId = selectModels.map({"\($0.id)"}).joined(separator: ",")
                                Services.saveUserAnswers(responseUserAnswerModel).subscribe(onNext: { data in
                                                NotificationCenter.default.post(name: PlantGuideQuit_Noti, object: true)
                                }).disposed(by: disposeBag)
                }
                @IBAction func previousAction(_ sender: UIButton) {
@@ -67,16 +76,18 @@
extension PlanGuide_3_VC:UICollectionViewDelegate & UICollectionViewDataSource{
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                if setIndex.contains(indexPath){
                                                setIndex.remove(indexPath)
                                let m = items[indexPath.section]![indexPath.row]
                                if selectModels.contains(m){
                                                selectModels.remove(m)
                                }else{
                                                setIndex.insert(indexPath)
                                                selectModels.insert(m)
                                }
                                collectionView.reloadData()
                }
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                return items[section].count
                                return items[section]?.count ?? 0
                }
                func numberOfSections(in collectionView: UICollectionView) -> Int {
@@ -85,8 +96,9 @@
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! Planguide_3_CCell
                                cell.label_title.text = items[indexPath.section][indexPath.row]
                                cell.isSelect(setIndex.contains(indexPath))
                                let m = items[indexPath.section]![indexPath.row]
                                cell.label_title.text = m.tagName
                                cell.isSelect(selectModels.contains(m))
                                return cell
                }
}