From 6912d657ec6bb1db9683d5b5be8f0777f001ba11 Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期六, 14 九月 2024 18:24:10 +0800 Subject: [PATCH] fix API --- XQMuse/Root/Course/VC/CourseDetialVC.swift | 1 XQMuse/Root/Me/VC/UserProfileVC.swift | 61 ++++++++- XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib | 2 XQMuse/Root/Me/MeVC.xib | 39 ++++-- XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift | 3 XQMuse/Root/Home/VC/HomeItemListVC.swift | 1 XQMuse/Root/Course/VC/CourseMenuVC.swift | 1 XQMuse/Root/Pavilion/PavilionVC.swift | 2 XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift | 1 XQMuse/Config/Def.swift | 1 XQMuse/Root/Plans/PlanGuideVC.swift | 11 + XQMuse/Root/Home/HomeVC.swift | 4 XQMuse/Root/Me/MeVC.swift | 59 +++++++++ XQMuse/Config/Enums/Enums.swift | 27 +++ XQMuse/Root/Plans/PlanGuide_2_VC.swift | 19 +++ XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib | 2 XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift | 1 XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift | 1 XQMuse/Root/Me/VC/UserProfileVC.xib | 10 + XQMuse/Root/Network/Models.swift | 27 ++++ XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift | 1 XQMuse/Root/Plans/PlanGuide_3_VC.swift | 30 +++- XQMuse/Root/Network/Services.swift | 50 +++++++ 23 files changed, 299 insertions(+), 55 deletions(-) diff --git a/XQMuse/Config/Def.swift b/XQMuse/Config/Def.swift index d0457be..13afa07 100644 --- a/XQMuse/Config/Def.swift +++ b/XQMuse/Config/Def.swift @@ -12,6 +12,7 @@ import QMUIKit import OSLog +//https://dummyimage.com/100x100 let app = UIApplication.shared.delegate as! AppDelegate diff --git a/XQMuse/Config/Enums/Enums.swift b/XQMuse/Config/Enums/Enums.swift index 3b6b37a..b5027ba 100644 --- a/XQMuse/Config/Enums/Enums.swift +++ b/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 + } + } +} diff --git a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift index 822f1de..11417a0 100644 --- a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift +++ b/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 diff --git a/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift index 7c04393..cfcf5a8 100644 --- a/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift +++ b/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 } diff --git a/XQMuse/Root/Course/VC/CourseDetialVC.swift b/XQMuse/Root/Course/VC/CourseDetialVC.swift index 8417269..27558db 100644 --- a/XQMuse/Root/Course/VC/CourseDetialVC.swift +++ b/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! } diff --git a/XQMuse/Root/Course/VC/CourseMenuVC.swift b/XQMuse/Root/Course/VC/CourseMenuVC.swift index 3d992ff..65b7fcc 100644 --- a/XQMuse/Root/Course/VC/CourseMenuVC.swift +++ b/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 } diff --git a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift index 0518eb6..593cece 100644 --- a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift +++ b/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 } diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib index 0a0c40f..7a76534 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib +++ b/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"> diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib index de03781..4844006 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib +++ b/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"> diff --git a/XQMuse/Root/Home/HomeVC.swift b/XQMuse/Root/Home/HomeVC.swift index 3af08cb..ca8efef 100644 --- a/XQMuse/Root/Home/HomeVC.swift +++ b/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(){ diff --git a/XQMuse/Root/Home/VC/HomeItemListVC.swift b/XQMuse/Root/Home/VC/HomeItemListVC.swift index 1d2c234..e4007fa 100644 --- a/XQMuse/Root/Home/VC/HomeItemListVC.swift +++ b/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 } diff --git a/XQMuse/Root/Me/MeVC.swift b/XQMuse/Root/Me/MeVC.swift index 3f3227b..e47d95f 100644 --- a/XQMuse/Root/Me/MeVC.swift +++ b/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 = "爱心榜单" diff --git a/XQMuse/Root/Me/MeVC.xib b/XQMuse/Root/Me/MeVC.xib index 6abb0c3..46d4b99 100644 --- a/XQMuse/Root/Me/MeVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/UserProfileVC.swift b/XQMuse/Root/Me/VC/UserProfileVC.swift index 995c1e1..ad050c8 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.swift +++ b/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 } diff --git a/XQMuse/Root/Me/VC/UserProfileVC.xib b/XQMuse/Root/Me/VC/UserProfileVC.xib index d4f1124..85c6143 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.xib +++ b/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> diff --git a/XQMuse/Root/Network/Models.swift b/XQMuse/Root/Network/Models.swift index 57fc391..4168d21 100644 --- a/XQMuse/Root/Network/Models.swift +++ b/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:其它补充说明 +} + diff --git a/XQMuse/Root/Network/Services.swift b/XQMuse/Root/Network/Services.swift index f2ac2f7..d5fc93e 100644 --- a/XQMuse/Root/Network/Services.swift +++ b/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) + } } diff --git a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift index d8a0cb2..2c6414c 100644 --- a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift +++ b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift @@ -21,7 +21,6 @@ override func awakeFromNib() { super.awakeFromNib() - } func setPavilionDetailModel(_ model:PavilionDetailModel){ diff --git a/XQMuse/Root/Pavilion/PavilionVC.swift b/XQMuse/Root/Pavilion/PavilionVC.swift index e10327f..01f1293 100644 --- a/XQMuse/Root/Pavilion/PavilionVC.swift +++ b/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 diff --git a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift index d7ae81c..dd92200 100644 --- a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift +++ b/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 diff --git a/XQMuse/Root/Plans/PlanGuideVC.swift b/XQMuse/Root/Plans/PlanGuideVC.swift index f32a7dd..3d0d788 100644 --- a/XQMuse/Root/Plans/PlanGuideVC.swift +++ b/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 } diff --git a/XQMuse/Root/Plans/PlanGuide_2_VC.swift b/XQMuse/Root/Plans/PlanGuide_2_VC.swift index 44a2441..84a14b1 100644 --- a/XQMuse/Root/Plans/PlanGuide_2_VC.swift +++ b/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{ diff --git a/XQMuse/Root/Plans/PlanGuide_3_VC.swift b/XQMuse/Root/Plans/PlanGuide_3_VC.swift index 5e7dac1..6ecd191 100644 --- a/XQMuse/Root/Plans/PlanGuide_3_VC.swift +++ b/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 } } -- Gitblit v1.7.1