From 803e04b1ba7a513e8a04899c82b38f3c2fac131c Mon Sep 17 00:00:00 2001 From: 无故事王国 <841720330@qq.com> Date: 星期一, 01 七月 2024 10:04:06 +0800 Subject: [PATCH] fix --- DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift | 2 DolphinEnglishLearnStudent/Other/UIView/VoiceHandleView.swift | 3 DolphinEnglishLearnStudent/SceneDelegate.swift | 9 + DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_2_VC.swift | 4 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift | 17 -- DolphinEnglishLearnStudent/Moudle/Me/MeVC.swift | 46 ++++--- DolphinEnglishLearnStudent/Login/LoginVC.swift | 1 DolphinEnglishLearnStudent/Config/WeChatTools.swift | 18 +++ DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift | 52 ++++++- DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift | 3 DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift | 110 +++++++++++++---- DolphinEnglishLearnStudent/Moudle/Home/Listen/View/GameBeginTipView.swift | 4 DolphinEnglishLearnStudent/Services/NetworkRequest.swift | 8 - DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift | 6 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_2_VC.swift | 17 +- DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift | 12 + DolphinEnglishLearnStudent/Moudle/Me/VC/StudyVC.swift | 2 DolphinEnglishLearnStudent/Services/Services.swift | 14 + DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.xib | 2 DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_4_CCell.xib | 8 DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib | 1 21 files changed, 227 insertions(+), 112 deletions(-) diff --git a/DolphinEnglishLearnStudent/Config/WeChatTools.swift b/DolphinEnglishLearnStudent/Config/WeChatTools.swift index 40cfe03..a13fa73 100644 --- a/DolphinEnglishLearnStudent/Config/WeChatTools.swift +++ b/DolphinEnglishLearnStudent/Config/WeChatTools.swift @@ -129,6 +129,24 @@ WXApi.send(req) } + /// 分享图片 + static func sharePic(_ img:UIImage,thumb:UIImage,text:String,scale:CGFloat = 0.6,scene:WXScene = WXSceneTimeline){ + + let imageObject = WXImageObject() + imageObject.imageData = img.pngData()! + + let mediaMessage = WXMediaMessage() +// mediaMessage.thumbData = thumb.pngData()! + mediaMessage.mediaObject = imageObject + mediaMessage.title = text + + let req = SendMessageToWXReq() + req.bText = false + req.message = mediaMessage + req.scene = Int32(scene.rawValue) + WXApi.send(req) + } + /// 分享音乐 static func shareMusic(_ musicUrl:String,musicLowBandUrl:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ let musicObject = WXMusicObject() diff --git a/DolphinEnglishLearnStudent/Login/LoginVC.swift b/DolphinEnglishLearnStudent/Login/LoginVC.swift index fc4c902..e4bfa5f 100644 --- a/DolphinEnglishLearnStudent/Login/LoginVC.swift +++ b/DolphinEnglishLearnStudent/Login/LoginVC.swift @@ -84,6 +84,7 @@ alert(msg: "请阅读并同意《隐私协议》《用户协议》");return } + view.endEditing(true) Services.login(phone: tf_phone.text!, code: tf_authCode.text!).subscribe(onNext: {result in if var token = result.data?.token{ token.request_time = Int(Date().timeIntervalSince1970) diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_4_CCell.xib b/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_4_CCell.xib index 4d196dc..5b29d0c 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_4_CCell.xib +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_4_CCell.xib @@ -59,14 +59,14 @@ </userDefinedRuntimeAttributes> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OJ6-0b-fVC"> - <rect key="frame" x="0.0" y="68" width="597" height="432"/> + <rect key="frame" x="0.0" y="62" width="597" height="438"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="XW5-ds-CXG"> - <rect key="frame" x="5" y="5" width="587" height="422"/> + <rect key="frame" x="5" y="5" width="587" height="428"/> <color key="backgroundColor" red="0.94509803920000002" green="0.94509803920000002" blue="0.94509803920000002" alpha="0.84999999999999998" colorSpace="custom" customColorSpace="sRGB"/> </imageView> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_success" translatesAutoresizingMaskIntoConstraints="NO" id="eyJ-Qy-E0w"> - <rect key="frame" x="258.5" y="175.5" width="80" height="81"/> + <rect key="frame" x="258.5" y="178.5" width="80" height="81"/> </imageView> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> @@ -87,7 +87,7 @@ <constraint firstItem="Xjz-V8-keG" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="5Iq-AY-uUK"/> <constraint firstItem="OJ6-0b-fVC" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="6p8-30-BD6"/> <constraint firstAttribute="trailing" secondItem="OJ6-0b-fVC" secondAttribute="trailing" id="EAu-4C-peY"/> - <constraint firstItem="OJ6-0b-fVC" firstAttribute="top" secondItem="Xjz-V8-keG" secondAttribute="bottom" constant="16" id="YpO-u8-Uyg"/> + <constraint firstItem="OJ6-0b-fVC" firstAttribute="top" secondItem="Xjz-V8-keG" secondAttribute="bottom" constant="10" id="YpO-u8-Uyg"/> <constraint firstAttribute="bottom" secondItem="OJ6-0b-fVC" secondAttribute="bottom" constant="10" id="m6e-nJ-ukf"/> </constraints> <size key="customSize" width="597" height="510"/> diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift index 2cd5e7d..116b2bf 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift @@ -177,7 +177,7 @@ super.viewDidLoad() yy_popBlock = {[weak self] in - self?.quitAction() + self?.quitAction(isPop: true) } btn_exit.addTarget(self, action: #selector(quitAction), for: .touchUpInside) @@ -288,7 +288,7 @@ } case .story1,.story2: if let dict = noti.object as? Dictionary<String,Any>{ - let type = weakSelf.viewModel.listenType.value == .story1 ? 1:0 + let type = weakSelf.viewModel.listenType.value == .story1 ? 1:2 let accracy = Int(Double(weakSelf.viewModel.correctNum) / Double(weakSelf.viewModel.correctNum + weakSelf.viewModel.errorNum) * 100) weakSelf.storyComplete(storyId: dict["storyId"] as! Int, accuracy: accracy, studyTime: weakSelf.viewModel.times, type: type, integral: dict["storyIntegral"] as! Int) } @@ -373,8 +373,9 @@ toalIntegral = floor(Double(toalIntegral) * (Double(accracy) / 100.0)).int - let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value) + let vc = HomeStudyCompleteVC(totalCoin: toalIntegral,viewModel: viewModel,studyScheduleModel: studyScheduleModel!) vc.title = viewModel.listenType.value.rawTitle + vc.viewModel = viewModel push(vc: vc) } @@ -397,7 +398,7 @@ name = "超级记忆" let v = viewModel.answerItems.first?.value as! Listen1Model totalNum = Double(v.photoList.count) - if totalNum > 0{ + if totalNum > 0 && viewModel.correctNum > 0 && viewModel.errorNum > 0{ accuracy = Int(Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100) } toalIntegral = floor(Double(integral) * (Double(accuracy) / 100.0)).int @@ -409,8 +410,9 @@ timer.invalidate() - let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value,totalNum:totalNum.int) + let vc = HomeStudyCompleteVC(totalCoin: toalIntegral,totalNum:totalNum.int,viewModel: viewModel,studyScheduleModel: studyScheduleModel!) vc.title = viewModel.listenType.value.rawTitle + vc.viewModel = viewModel push(vc: vc) } @@ -420,8 +422,9 @@ NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) }).disposed(by: disposeBag) - let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: integral, listenType: viewModel.listenType.value) + let vc = HomeStudyCompleteVC(totalCoin: integral,viewModel: viewModel,studyScheduleModel: studyScheduleModel!) vc.title = viewModel.listenType.value.rawTitle + vc.viewModel = viewModel push(vc: vc) } @@ -429,12 +432,21 @@ timer.invalidate() } - @objc func quitAction(){ + @objc func quitAction(isPop:Bool = false){ if btn_exit.titleLabel?.text == "完成"{ if viewModel.listenType.value == .story2{ + + if isPop{ + self.navigationController?.popViewController();return + } + + guard (pageVC.currentController as! HomeListenStory_2_VC).isPlayEnd else { + alert(msg: "请听完");return + } + let v = data as! Listen1Model let accuracy = 100 - storyComplete(storyId: v.data!.id, accuracy: accuracy, studyTime: viewModel.times, type: 1, integral: v.data!.lookIntegral) + storyComplete(storyId: v.data!.id, accuracy: accuracy, studyTime: viewModel.times, type: viewModel.listenType.value == .story1 ? 1:2, integral: v.data!.integral) } }else{ CommonAlertView.show(content: "未完成全部答题,确认退出吗?") {[weak self] () in @@ -455,13 +467,26 @@ case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: if temIds.count > 0 && topicIds.count > 0{ let totalNum = weakSelf.viewModel.correctNum + weakSelf.viewModel.errorNum - Services.exitLearning(type:weakSelf.viewModel.listenType.value.rawValue,week: weakSelf.viewModel.week.value!, day: weakSelf.viewModel.day.value!, teamIds: temIds, topicIds: topicIds,answerNumber: totalNum,correctNumber:weakSelf.viewModel.correctNum,studyTime:weakSelf.viewModel.times,schedule: schedule).subscribe(onNext: { data in + Services.exitLearning(type:weakSelf.viewModel.listenType.value.rawValue,quarter: weakSelf.viewModel.quarter.value!,week: weakSelf.viewModel.week.value!, day: weakSelf.viewModel.day.value!, teamIds: temIds, topicIds: topicIds,answerNumber: totalNum,correctNumber:weakSelf.viewModel.correctNum,studyTime:weakSelf.viewModel.times,schedule: schedule).subscribe(onNext: { data in + + NotificationCenter.default.post(name: MeUserInfoUpdate_Noti, object: nil) }).disposed(by: weakSelf.disposeBag) } - default:break + case .game1,.game2,.story1,.story2: + Services.exitGameOrStory(studyTime: weakSelf.viewModel.times).subscribe(onNext: { _ in + + }).disposed(by: weakSelf.disposeBag) } - weakSelf.navigationController?.popViewController(animated: true) + for vc in weakSelf.navigationController?.viewControllers ?? []{ + if vc.isKind(of: HomeListenMenuVC.self){ + weakSelf.navigationController?.popToViewController(vc, animated: true);break + } + + if vc.isKind(of: HomeListenVC.self){ + weakSelf.navigationController?.popToViewController(vc, animated: true);break + } + } } } } @@ -469,6 +494,11 @@ @objc func nextAction(){ listenFightLine = .next if viewModel.listenType.value == .story2{ + + guard (pageVC.currentController as! HomeListenStory_2_VC).isPlayEnd else { + alert(msg: "请听完");return + } + let v = data as! Listen1Model var dict = Dictionary<String,Any>() dict["storyId"] = v.data?.id ?? 0 diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift index ccfa49c..0892752 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift @@ -186,7 +186,7 @@ @objc private func runloopTime(){ print("进入。。。") times -= 1 - label_hint.text = "请在\(times)s内选择答案!" + label_hint.text = "请在\(max(times,1))s内选择答案!" if times == 0{ timer?.fireDate = .distantFuture @@ -231,6 +231,7 @@ let y = abs(newRect.origin.y) + 99 + 5 let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout let copyView = view_studyHandleView.copyView() + copyView.playBtn.isEnabled = false view.addSubview(copyView) UIView.animate(withDuration: 0.5) { diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_2_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_2_VC.swift index 2743be3..c70c9fe 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_2_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_2_VC.swift @@ -62,7 +62,7 @@ for v in listen1Model.voiceList{ v.type = 2 // 音频标识 } - times = listen1Model.data?.answerTime ?? 120 + times = (listen1Model.data?.answerTime ?? 120) + 1 datas.append(contentsOf: listen1Model.photoList) datas.append(contentsOf: listen1Model.voiceList) @@ -139,7 +139,7 @@ @objc private func runloopTime(){ times -= 1 - label_time.text = "\(times)s" + label_time.text = "\(max(1,times))s" if times == 0{ timer?.fireDate = .distantFuture diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_2_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_2_VC.swift index a919fc3..a3c280c 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_2_VC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_2_VC.swift @@ -9,13 +9,13 @@ class HomeListenStory_2_VC: BaseVC { + var rootViewModel:HomeListenFightViewModel! + private var viewModel = FightAnswerViewModel() private var listen1Model:Listen1Model! private var page:Int! - var rootViewModel:HomeListenFightViewModel! - private var voicePlayer = VoicePlayer.share() - + private(set) var isPlayEnd = false private lazy var stackView:UIStackView = { let stackView = UIStackView() stackView.spacing = 78 @@ -106,13 +106,9 @@ } } -extension HomeListenStory_2_VC:UICollectionViewDelegate{ +extension HomeListenStory_2_VC:UICollectionViewDelegate{} -} - -extension HomeListenStory_2_VC:UICollectionViewDelegateFlowLayout{ - -} +extension HomeListenStory_2_VC:UICollectionViewDelegateFlowLayout{} extension HomeListenStory_2_VC:UICollectionViewDataSource{ func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { @@ -134,12 +130,11 @@ extension HomeListenStory_2_VC:VoicePlayerDelegate{ func playComplete() { + isPlayEnd = true view.isUserInteractionEnabled = true } func playing() { view.isUserInteractionEnabled = false } - - } diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift index 314f243..6b981e0 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift @@ -51,23 +51,6 @@ } } - override func setRx() { -// NotificationCenter.default.rx.notification(Refresh_ListenSchedule_Noti).take(until: self.rx.deallocated).subscribe(onNext: {_ in -// self.getData() -// }).disposed(by: disposeBag) - } - - private func getData(force:Bool = false){ - -// if studyScheduleModel == nil || force{ -// Services.studySchedule(week: week).subscribe(onNext: {data in -// self.studyScheduleModel = data.data -// self.tableView.reloadData() -// }).disposed(by: disposeBag) -// } - - } - func jumpAt(listenType:ListenType){ let row = listenType.rawValue - 1 let jumpIndex:IndexPath = IndexPath(row: row, section: 1) diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/GameBeginTipView.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/GameBeginTipView.swift index b3f179e..1e880e8 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/GameBeginTipView.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/GameBeginTipView.swift @@ -37,9 +37,9 @@ var time:Int = 5 levelView.timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in time -= 1 - levelView.label_time.text = "\(time)" + levelView.label_time.text = "\(max(time,1))" levelView.animation() - if time <= 0{ + if time < 1{ timer.invalidate() UIView.animate(withDuration: 0.4) { levelView.transform = .init(scaleX: 0.1, y: 0.1) diff --git a/DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift index 31784da..82c8506 100644 --- a/DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift @@ -21,57 +21,58 @@ @IBOutlet weak var btn_next: UIButton! @IBOutlet weak var stackView: UIStackView! @IBOutlet weak var btn_back: UIButton! - - private var correctNum:Int = 0 - private var errorNum:Int = 0 + private var totalCoin:Int = 0 - private var listenType:ListenType! private var totalNum:Int? //总题目数量 - required init(correctNum:Int,errorNum:Int,totalCoin:Int,listenType:ListenType,totalNum:Int? = nil){ + var viewModel:HomeListenFightViewModel! + var studyScheduleModel:StudyScheduleModel! + + required init(totalCoin:Int,totalNum:Int? = nil,viewModel:HomeListenFightViewModel,studyScheduleModel:StudyScheduleModel){ super.init(nibName: nil, bundle: nil) - self.correctNum = correctNum - self.errorNum = errorNum self.totalCoin = totalCoin - self.listenType = listenType self.totalNum = totalNum + self.viewModel = viewModel + self.studyScheduleModel = studyScheduleModel } - + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - override func viewDidLoad() { - super.viewDidLoad() + + override func viewDidLoad() { + super.viewDidLoad() yy_popBlock = {[weak self] () in self?.backAction() } - label_coin.text = "恭喜你,已完成全部答题!获得\(totalCoin)积分!" - label_correctNum.text = "\(correctNum)次" - label_errorNum.text = "\(errorNum)次" - label_totalNum.text = "\(correctNum + errorNum)次" - label_ratioNum.text = String(format: "正确率:%.0lf%%", Double(correctNum) / Double(correctNum + errorNum) * 100) + label_coin.text = "恭喜您,已完成全部答题!获得\(totalCoin)积分!" + label_correctNum.text = "\(viewModel.correctNum)次" + label_errorNum.text = "\(viewModel.errorNum)次" + label_totalNum.text = "\(viewModel.correctNum + viewModel.errorNum)次" + label_ratioNum.text = String(format: "正确率:%.0lf%%", Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100) - if totalNum != nil{ + if totalNum != nil && viewModel.listenType.value == .game2{ label_title_totalNum.text = "总题目:" label_title_correctNum.text = "正确题目:" label_title_errorNum.text = "错误题目:" - label_coin.text = "恭喜你,已完成游戏!获得\(totalCoin)积分!" + label_coin.text = "恭喜您,已完成游戏!获得\(totalCoin)积分!" + label_totalNum.text = "\(totalNum!)" - label_correctNum.text = "\(correctNum)" - label_errorNum.text = "\(errorNum)" + label_correctNum.text = "\(viewModel.correctNum)" + label_errorNum.text = "\(viewModel.errorNum)" } - btn_next.isHidden = listenType.rawValue >= 5 + btn_next.isHidden = viewModel.listenType.value == .lesson5 - stackView.isHidden = listenType == .story2 - label_ratioNum.isHidden = listenType == .story2 -// NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) - } + stackView.isHidden = viewModel.listenType.value == .story2 + label_ratioNum.isHidden = viewModel.listenType.value == .story2 + + NotificationCenter.default.post(name: MeUserInfoUpdate_Noti, object: nil) + } override func setUI() { super.setUI() @@ -94,9 +95,60 @@ if toVC == nil{ self.navigationController?.popToRootViewController(animated: true) }else{ - self.navigationController?.popToViewController(toVC!, animated: true) - let nextType = ListenType(rawValue: listenType.rawValue + 1) - NotificationCenter.default.post(name: StudyCompleteNextLession_Noti, object: nextType) + let nextType = ListenType(rawValue: viewModel.listenType.value.rawValue + 1)! + + switch nextType { + case .lesson2: + Services.pictureSelectVoice(day:viewModel.day.value!, quarter: viewModel.quarter.value!, week: viewModel.week.value!).subscribe(onNext: {[weak self] result in + guard let weakSelf = self else { return } + if let data = result.data{ + let fightVC = HomeListenFightVC(listenType: .lesson2,quarter:weakSelf.viewModel.quarter.value!,week: weakSelf.viewModel.week.value!,day:weakSelf.viewModel.day.value!) + fightVC.title = ListenType.lesson2.rawTitle + fightVC.data = data + fightVC.studyScheduleModel = weakSelf.studyScheduleModel + weakSelf.push(vc: fightVC) + } + }).disposed(by: disposeBag) + + + case .lesson3: + Services.induceExclude(day: viewModel.day.value!, quarter: viewModel.quarter.value!, week: viewModel.week.value!).subscribe(onNext: {[weak self] result in + guard let weakSelf = self else { return } + if let data = result.data{ + let fightVC = HomeListenFightVC(listenType: .lesson3,quarter:weakSelf.viewModel.quarter.value!,week: weakSelf.viewModel.week.value!,day:weakSelf.viewModel.day.value!) + fightVC.title = ListenType.lesson3.rawTitle + fightVC.data = data + fightVC.studyScheduleModel = weakSelf.studyScheduleModel + weakSelf.push(vc: fightVC) + } + }).disposed(by: disposeBag) + + case .lesson4: + Services.questionsAndAnswers(day: viewModel.day.value!, quarter: viewModel.quarter.value!, week: viewModel.week.value!).subscribe(onNext: {[weak self] result in + guard let weakSelf = self else { return } + if let data = result.data{ + let fightVC = HomeListenFightVC(listenType: .lesson4,quarter:weakSelf.viewModel.quarter.value!,week: weakSelf.viewModel.week.value!,day:weakSelf.viewModel.day.value!) + fightVC.title = ListenType.lesson4.rawTitle + fightVC.data = data + fightVC.studyScheduleModel = weakSelf.studyScheduleModel + weakSelf.push(vc: fightVC) + } + }).disposed(by: disposeBag) + + case .lesson5: + Services.pictureMateVoice(day: viewModel.day.value!, quarter: viewModel.quarter.value!, week: viewModel.week.value!).subscribe(onNext: {[weak self] result in + guard let weakSelf = self else { return } + if let data = result.data{ + let fightVC = HomeListenFightVC(listenType: .lesson4,quarter:weakSelf.viewModel.quarter.value!,week: weakSelf.viewModel.week.value!,day:weakSelf.viewModel.day.value!) + fightVC.title = ListenType.lesson5.rawTitle + fightVC.data = data + fightVC.studyScheduleModel = weakSelf.studyScheduleModel + weakSelf.push(vc: fightVC) + } + }).disposed(by: disposeBag) + + default:break + } } } diff --git a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift index 30d3882..13b7f45 100644 --- a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift @@ -27,6 +27,7 @@ @IBOutlet weak var label_needCoin: UILabel! @IBOutlet weak var label_orderNum: UILabel! @IBOutlet weak var label_footNeedCoin: UILabel! + @IBOutlet weak var btn_exchange: UIButton! private var viewModel = MarketContentViewModel() private var recipientId:Int? // 地址ID @@ -46,7 +47,10 @@ Services.redeemNow(goodId: viewModel.detailModel.value!.good!.id).subscribe(onNext: {result in self.label_orderNum.text = result.data?.orderNumber ?? "" self.viewModel.detailModel.accept(result.data) - }).disposed(by: disposeBag) + }) { error in + self.btn_exchange.backgroundColor = .gray.withAlphaComponent(0.5) + self.btn_exchange.isEnabled = false + }.disposed(by: disposeBag) Services.addressList().subscribe(onNext: {[weak self]result in self?.viewModel.address.accept(result.data ?? []) diff --git a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib index 2147f9a..25552e9 100644 --- a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib +++ b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib @@ -12,6 +12,7 @@ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MarketExchangeVC" customModule="DolphinEnglishLearnStudent" customModuleProvider="target"> <connections> <outlet property="btn_add" destination="wqg-IO-Jti" id="tqa-wd-rR2"/> + <outlet property="btn_exchange" destination="N4Y-Qi-AD2" id="XNW-YA-Bjy"/> <outlet property="btn_reduce" destination="H9G-ck-ezM" id="uPJ-2M-QEo"/> <outlet property="cons_footerHei" destination="71z-Eh-Ya8" id="V0f-Rh-ggi"/> <outlet property="field_number" destination="1nG-XY-fwB" id="xye-yR-VBc"/> diff --git a/DolphinEnglishLearnStudent/Moudle/Me/MeVC.swift b/DolphinEnglishLearnStudent/Moudle/Me/MeVC.swift index a8884e6..a49112c 100644 --- a/DolphinEnglishLearnStudent/Moudle/Me/MeVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Me/MeVC.swift @@ -8,6 +8,8 @@ import UIKit import QMUIKit +let MeUserInfoUpdate_Noti = Notification.Name.init("MeUserInfoUpdate_Noti") + class MeVC: BaseVC { @IBOutlet weak var btn_address: QMUIButton! @IBOutlet weak var btn_coinRecord: QMUIButton! @@ -20,25 +22,8 @@ override func viewDidLoad() { super.viewDidLoad() - - Services.userInfo().subscribe(onNext: {result in - var items = Array<String>() - - if let model = result.data?.user{ - self.imge_cover.sd_setImage(with: URL(string: model.headImg)) - self.label_name.text = model.name - items.append("剩余积分:\(model.integral)") - } - - if let model = result.data?.userStudy{ - items.append("学习进度:周目\(model.week.jq_cn)") - items.append("学习总时长:\(model.totalStudy)小时") - } - self.label_info.text = items.joined(separator: "|") - - }).disposed(by: disposeBag) + getData() } - override func setUI() { super.setUI() @@ -57,6 +42,31 @@ } + override func setRx() { + NotificationCenter.default.rx.notification(MeUserInfoUpdate_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in + self?.getData() + }).disposed(by: disposeBag) + } + + private func getData(){ + Services.userInfo().subscribe(onNext: {result in + var items = Array<String>() + + if let model = result.data?.user{ + self.imge_cover.sd_setImage(with: URL(string: model.headImg)) + self.label_name.text = model.name + items.append("剩余积分:\(model.integral)") + } + + if let model = result.data?.userStudy{ + items.append("学习进度:周目\(model.week.jq_cn)") + items.append("学习总时长:\(model.totalStudy)小时") + } + self.label_info.text = items.joined(separator: "|") + + }).disposed(by: disposeBag) + } + /// 地址管理 @IBAction func addressManageAction(_ sender: QMUIButton) { let vc = AddressManageVC(type: .handle) diff --git a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift index 9dcc4b9..397e268 100644 --- a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift @@ -69,6 +69,8 @@ tableView.delegate = self tableView.dataSource = self tableView.backgroundColor = .clear + tableView.showsVerticalScrollIndicator = false + tableView.showsHorizontalScrollIndicator = false tableView.separatorStyle = .none tableView.register(UINib(nibName: "AddressManageTCell", bundle: nil), forCellReuseIdentifier: "_AddressManageTCell") tableView.jq_addShadows(shadowColor: UIColor(hexStr: "#D9D9D9"), corner: 0, radius: 20, offset: CGSize(width: 0, height: 2), opacity: 1) diff --git a/DolphinEnglishLearnStudent/Moudle/Me/VC/StudyVC.swift b/DolphinEnglishLearnStudent/Moudle/Me/VC/StudyVC.swift index 6343cc0..f824e70 100644 --- a/DolphinEnglishLearnStudent/Moudle/Me/VC/StudyVC.swift +++ b/DolphinEnglishLearnStudent/Moudle/Me/VC/StudyVC.swift @@ -46,6 +46,8 @@ super.setUI() tableView.delegate = self tableView.dataSource = self + tableView.showsVerticalScrollIndicator = false + tableView.showsHorizontalScrollIndicator = false tableView.register(UINib(nibName: "Home_1_TCell", bundle: nil), forCellReuseIdentifier: "_Home_1_TCell") tableView.separatorStyle = .none diff --git a/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift b/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift index 4df6936..df6bbc6 100644 --- a/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift +++ b/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift @@ -9,6 +9,7 @@ import JQTools import QMUIKit import RxSwift +import SDWebImage class ShareView: UIView,JQNibView{ @@ -69,15 +70,18 @@ @IBAction func shareAction(_ sender: QMUIButton) { - guard let m = shareModel else {alertError(msg: "分享失败");return} + guard shareModel != nil else {alertError(msg: "数据获取失败");return} var scene:WXScene! if sender.tag == 10{ scene = WXSceneSession }else{ scene = WXSceneTimeline } - - WeChatTools.shareText("12312") -// WeChatTools.sharePic(img_cover.image!, thumb: UIImage(named: "logo")!, scale: 1.0, scene: scene) + showHUD() + SDWebImageDownloader.shared.downloadImage(with: URL(string: shareModel!.img)) { iamge, data, error, state in + hiddenHUD() + guard error == nil else {alert(msg: "图片获取失败");return} + WeChatTools.shareUrl("https://dollearn.com/", title: "海豚智能教育平台", desc: self.shareModel!.title, thumb: iamge!, scene: scene) + } } } diff --git a/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.xib b/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.xib index 48ed66c..783231d 100644 --- a/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.xib +++ b/DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.xib @@ -75,7 +75,7 @@ <constraint firstAttribute="width" secondItem="FYo-U3-DCE" secondAttribute="height" multiplier="1:0.1972" id="hji-FF-fZU"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9NU-dC-vCn"> + <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9NU-dC-vCn"> <rect key="frame" x="350.5" y="160.5" width="479" height="377"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_login" translatesAutoresizingMaskIntoConstraints="NO" id="QBd-oU-bQt"> diff --git a/DolphinEnglishLearnStudent/Other/UIView/VoiceHandleView.swift b/DolphinEnglishLearnStudent/Other/UIView/VoiceHandleView.swift index 8907b6e..be830ac 100644 --- a/DolphinEnglishLearnStudent/Other/UIView/VoiceHandleView.swift +++ b/DolphinEnglishLearnStudent/Other/UIView/VoiceHandleView.swift @@ -26,6 +26,8 @@ return btn }() + let playBtn = UIButton(type: .custom) + var playUrl:String? var listenType:ListenType? private var playAtClouse:((Int)->Void)? @@ -66,7 +68,6 @@ make.height.equalTo(32) } - let playBtn = UIButton(type: .custom) playBtn.addTarget(self, action: #selector(playingAction), for: .touchUpInside) addSubview(playBtn) playBtn.snp.makeConstraints { make in diff --git a/DolphinEnglishLearnStudent/SceneDelegate.swift b/DolphinEnglishLearnStudent/SceneDelegate.swift index 1ad3441..1dcdda2 100644 --- a/DolphinEnglishLearnStudent/SceneDelegate.swift +++ b/DolphinEnglishLearnStudent/SceneDelegate.swift @@ -62,7 +62,9 @@ } func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { - + if URLContexts.first!.url.host == "resendContextReqByScheme"{ + WXApi.handleOpen(URLContexts.first!.url, delegate: self) + } } @@ -119,6 +121,9 @@ UserDefaults.standard.synchronize() }).disposed(by: weakSelf.disposeBag) } + }else{ + UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer") + UserDefaults.standard.synchronize() } } timer?.fire() @@ -128,6 +133,8 @@ func suspendTimer(){ timer?.fireDate = .distantFuture timer = nil + UserDefaults.standard.set(nil, forKey: "scheduledTimer") + UserDefaults.standard.synchronize() } } diff --git a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift index 04d4545..dfcb676 100644 --- a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift +++ b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift @@ -232,19 +232,15 @@ case 200:ob.onNext(next) case 506: ob.onError(NetRequestError.Other(next.code,next.msg)) - case 503,502: //登录被冻结 + case 502: //登录被冻结 CommonAlertView.show(isSinple: true, content: next.msg) -// case 501: -// CommonAlertView.show(title: "提示", content: next.msg,isSingle: true) { _ in -// -// } -// ob.onError(NetRequestError.InvaildSession) case 401,505,600: if !ignoreAlert{ alertError(msg: "登录失效,请重新登录");ob.onError(NetRequestError.InvaildSession) } sceneDelegate?.needLogin() default: + //503是手机验证码错误 if !ignoreAlert{ DispatchQueue.main.async { alertError(msg: "\(next.msg)") diff --git a/DolphinEnglishLearnStudent/Services/Services.swift b/DolphinEnglishLearnStudent/Services/Services.swift index f4a9ea9..47fe483 100644 --- a/DolphinEnglishLearnStudent/Services/Services.swift +++ b/DolphinEnglishLearnStudent/Services/Services.swift @@ -160,7 +160,7 @@ class func parentPage()->Observable<BaseResponse<String>>{ let params = ParamsAppender.build(url: All_Url) - params.interface(url: "/study/base/user/parentPage") + params.interface(url: "/study/base/user/studyPage") return NetworkRequest.request(params: params, method: .post, progress: false) } @@ -288,7 +288,7 @@ .append(key: "orderNumber", value: orderNumber) .append(key: "recipientId", value: recipientId) .append(key: "remark", value: remark) - return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true) + return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true,ignoreAlert: true) } class func userInfo()->Observable<BaseResponse<UserInfoModel>>{ @@ -324,7 +324,7 @@ return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true) } - class func exitLearning(type:Int,week:Int,day:Int,teamIds:[String],topicIds:[String],answerNumber:Int,correctNumber:Int,studyTime:Int,schedule:Int)->Observable<BaseResponse<SimpleModel>>{ + class func exitLearning(type:Int,quarter:Int,week:Int,day:Int,teamIds:[String],topicIds:[String],answerNumber:Int,correctNumber:Int,studyTime:Int,schedule:Int)->Observable<BaseResponse<SimpleModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/exitLearning") .append(key: "week", value: week) @@ -336,9 +336,17 @@ .append(key: "correctNumber", value: correctNumber) .append(key: "studyTime", value: studyTime) .append(key: "schedule", value: schedule) + .append(key: "quarter", value: quarter) return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true) } + class func exitGameOrStory(studyTime:Int)->Observable<BaseResponse<SimpleModel>>{ + let params = ParamsAppender.build(url: All_Url) + params.interface(url: "/study/base/study/exitGameOrStory") + .append(key: "studyTime", value: studyTime) + return NetworkRequest.request(params: params, method: .get,encoding: JSONEncoding.default, progress: false) + } + class func updateOrderAddress(orderId:Int,recipientId:Int)->Observable<BaseResponse<SimpleModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/goods/base/goods/updateOrderAddress") -- Gitblit v1.7.1