From e2c245035a515bb7f623706b66f05e8dfc2c2fef Mon Sep 17 00:00:00 2001
From: 无故事王国 <841720330@qq.com>
Date: 星期五, 14 六月 2024 17:39:07 +0800
Subject: [PATCH] fix

---
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift |   28 +++++---
 DolphinEnglishLearnStudent/Models/CommonModel.swift                                |    4 +
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift        |    2 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift           |    8 ++
 DolphinEnglishLearnStudent/Services/Services.swift                                 |    4 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift           |   38 +++++++-----
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift         |    8 ++
 Podfile                                                                            |    1 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift |   45 ++++++++++-----
 9 files changed, 91 insertions(+), 47 deletions(-)

diff --git a/DolphinEnglishLearnStudent/Models/CommonModel.swift b/DolphinEnglishLearnStudent/Models/CommonModel.swift
index 6145abb..3319ed7 100644
--- a/DolphinEnglishLearnStudent/Models/CommonModel.swift
+++ b/DolphinEnglishLearnStudent/Models/CommonModel.swift
@@ -318,10 +318,14 @@
 				var updateTime: String = ""
 
 
+				//学习类型四专用
+				var isQuestion:Int = 0
+
 				//游戏类型2专用
 				var isOpen:Bool = false
 }
 
+@available(*,deprecated,message: "废弃")
 struct Listen4Model:HandyJSON{
 				var data = [Listen4DataModel]()
 }
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
index 570dd45..e84e90e 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
@@ -262,7 +262,8 @@
 												let nextPage = weakSelf.viewModel.currentPage.value + 1
 												var asComplete:Bool = false
 												switch weakSelf.viewModel.listenType.value {
-																case .lesson1,.lesson2:asComplete = nextPage >= (weakSelf.data as! ListenNewModel).subjectList.count
+																case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:asComplete = nextPage >= (weakSelf.data as! ListenNewModel).subjectList.count
+																case .story1,.story2: asComplete = nextPage >= (weakSelf.data as! Listen1Model).storyList.count
 
 																default:break
 												}
@@ -283,14 +284,16 @@
 																return
 												}
 
+												if weakSelf.viewModel.listenType.value == .story2{
+																weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value
+																if weakSelf.btn_next.isHidden{
+																				weakSelf.btn_exit.setTitle("完成", for: .normal)
+																}
+												}
+
 
 												//以下无效代码
-//												if weakSelf.viewModel.listenType.value == .story2{
-//																weakSelf.btn_next.isHidden = (nextPage + 1) == weakSelf.viewModel.maxPage.value
-//																if weakSelf.btn_next.isHidden{
-//																				weakSelf.btn_exit.setTitle("完成", for: .normal)
-//																}
-//												}
+//
 //
 //												//完成
 //												if nextPage >= weakSelf.viewModel.maxPage.value{
@@ -327,8 +330,11 @@
 
 				private func setPages(){
 								switch viewModel.listenType.value{
-												case .lesson1,.lesson2,.lesson3:
+												case .lesson1,.lesson2,.lesson3,.lesson5:
 																label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count)"
+												case .lesson4:
+																//两题为一组:需要/2
+																label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count / 2)"
 												case .game1,.game2:
 																btn_forward.isHidden = true
 																label_pageNum.isHidden = true
@@ -339,7 +345,7 @@
 												case .story1,.story2:
 																let count = (data as! Listen1Model).storyList.count
 																viewModel.maxPage.accept(count)
-																label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(0)"
+																label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(count)"
 												default:break
 								}
 				}
@@ -352,7 +358,7 @@
 								var ids:String = ""
 
 								switch viewModel.listenType.value {
-												case .lesson1,.lesson2:
+												case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:
 																let data = (data as! ListenNewModel).data
 																ids = data?.id ?? ""
 																toalIntegral = data?.integral ?? 0
@@ -486,7 +492,9 @@
 				func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt {
 
 								switch viewModel.listenType.value {
-												case .lesson1,.lesson2,.lesson3:return UInt((data as! ListenNewModel).subjectList.count)
+												case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:return UInt((data as! ListenNewModel).subjectList.count)
+												case .story1,.story2:
+																return UInt((data as! Listen1Model).storyList.count)
 												default:break
 								}
 
@@ -494,10 +502,6 @@
 								//超级听力,只有一页
 								if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{
 												return 1
-								}
-
-								if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{
-												return UInt((data as! Listen1Model).storyList.count)
 								}
 								return UInt(viewModel.maxPage.value)
 				}
@@ -550,13 +554,13 @@
 								}
 
 								if viewModel.listenType.value == .lesson4{
-												let vc = HomeListenFight_lesson_4_VC(page: page, listen4Model: data as! Listen4Model)
+												let vc = HomeListenFight_lesson_4_VC(page: page, listenNewModel: data as! ListenNewModel)
 												vc.rootViewModel = viewModel
 												return vc
 								}
 
 								if viewModel.listenType.value == .lesson5{
-												let vc = HomeListenFight_lesson_5_VC(page: page, listen1Model: data as! Listen1Model)
+												let vc = HomeListenFight_lesson_5_VC(page: page, listenNewModel: data as! ListenNewModel)
 												vc.rootViewModel = viewModel
 												return vc
 								}
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
index e5200f8..1f988ac 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
@@ -11,12 +11,13 @@
 
 				private var viewModel = FightAnswerViewModel()
 
-				private var listen4Model:Listen4Model!
+				private var listenNewModel:ListenNewModel!
 				private var page:Int!
 				var rootViewModel:HomeListenFightViewModel!
 
 				private var answerIndex:IndexPath? //答案的Index
 				private var answerCount:Int = 0 //回答计数
+				private var filterItems = [[Listen1SubModel]]() //此类型特殊,需要数据清理
 
 				private lazy var stackView:UIStackView = {
 								let sta = UIStackView()
@@ -41,11 +42,15 @@
 
 				private var voicePlayer = VoicePlayer.share()
 
-				required init(page:Int,listen4Model:Listen4Model){
+				required init(page:Int,listenNewModel:ListenNewModel){
 								super.init(nibName: nil, bundle: nil)
 								self.page = page
-								self.listen4Model = listen4Model
-								self.listen4Model.data.shuffle()
+								self.listenNewModel = listenNewModel
+								let temp1 = Array(listenNewModel.subjectList[page][0...1])
+								let temp2 = Array(listenNewModel.subjectList[page][2...3])
+
+								filterItems.append(temp1)
+								filterItems.append(temp2)
 				}
 
 				required init?(coder: NSCoder) {
@@ -102,7 +107,7 @@
 
 				private func setAnswerStackView(){
 
-								guard viewModel.selectIndex.value != nil else{
+								guard let selectIndex = viewModel.selectIndex.value else{
 												alertError(msg: "请先听题");return
 								}
 
@@ -118,10 +123,11 @@
 												}
 								}
 
+								let answerModel = filterItems[selectIndex.section].filter({$0.isQuestion == 0}).first!
+								let answerId = answerModel.id
 
-								let answerId = listen4Model.data[viewModel.selectIndex.value!.section].subject
 								var tempVoiceArray = [String]()
-								for v in listen4Model.data[viewModel.selectIndex.value!.section].subjectList{
+								for v in filterItems[selectIndex.section]{
 												if v.id == answerId{
 																tempVoiceArray.append(v.correct)
 																tempVoiceArray.append(v.error.components(separatedBy: ",").first ?? "")
@@ -152,6 +158,11 @@
 				}
 
 				@objc func answerAction(btn:UIButton){
+
+								guard let selectIndex = viewModel.selectIndex.value else{
+												alertError(msg: "请先听题");return
+								}
+
 								var tempSubV:Lesson_4_AnswerView?
 
 								for subV in stackView.arrangedSubviews{
@@ -162,8 +173,9 @@
 								}
 
 								var answerModel:Listen1SubModel?
-								for (index,v) in (listen4Model.data[viewModel.selectIndex.value!.section].subjectList).enumerated(){
-												if v.id == listen4Model.data[viewModel.selectIndex.value!.section].subject{
+								for (index,v) in filterItems[selectIndex.section].enumerated(){
+												let m = filterItems[selectIndex.section].filter({$0.isQuestion == 0}).first
+												if v.id == m?.id{
 																answerModel = v
 																answerIndex = IndexPath(row: index, section: viewModel.selectIndex.value!.section)
 												}
@@ -174,6 +186,8 @@
 												answerType = .success
 												answerCount += 1
 												rootViewModel.correctNum += 1
+												let v = rootViewModel.answerCount.value + 1
+												rootViewModel.answerCount.accept(v)
 								}else{
 												answerType = .fail
 												rootViewModel.errorNum += 1
@@ -209,7 +223,9 @@
 
 																																//回答完成,下一答题
 																																if self.answerCount == 2{
-																																				self.rootViewModel.answerItems[self.page] = self.listen4Model
+																																				let v = self.rootViewModel.answerCount.value + 1
+																																				self.rootViewModel.answerCount.accept(v)
+																																				self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
 																																				self.voicePlayer.playerEnd()
 																																				NotificationCenter.default.post(name: NextLession_Noti, object: nil)
 																																				self.voicePlayer.playerEnd()
@@ -267,8 +283,7 @@
 																weakSelf.setAnswerStackView()
 												}
 								}
-
-								let m = listen4Model.data[indexPath.section].subjectList[indexPath.row]
+								let m = filterItems[indexPath.section][indexPath.row]
 								if indexPath == answerIndex{
 												UIView.animate(withDuration: 0.4, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4,options: .layoutSubviews) {
 																cell.img_state.alpha = 1
@@ -279,7 +294,7 @@
 												cell.img_state.transform = .init(scaleX: 0.1, y: 0.1)
 								}
 								//问题
-								if listen4Model.data[indexPath.section].subject == m.id{
+								if filterItems[indexPath.section][indexPath.row].isQuestion == 0{
 												cell.btn_handle.setImage(UIImage(named: "icon_question"), for: .normal)
 												cell.view_handle.isHidden = true
 								}else{
@@ -296,11 +311,11 @@
 				}
 
 				func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-								return listen4Model.data[section].subjectList.count
+								return filterItems[section].count
 				}
 
 				func numberOfSections(in collectionView: UICollectionView) -> Int {
-								return listen4Model.data.count
+								return filterItems.count
 				}
 }
 
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
index e7ff7b6..e4c1d55 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
@@ -10,7 +10,7 @@
 class HomeListenFight_lesson_5_VC: BaseVC {
 
 				private var viewModel = FightAnswerViewModel()
-				private var listen1Model:Listen1Model!
+				private var listenNewModel:ListenNewModel!
 				private var page:Int!
 				private var answterCount:Int = 0 //回答计数,用于确定角标
 				private var playVoiceAt:Int? //播放声音的View
@@ -48,11 +48,11 @@
 								return label
 				}()
 
-				required init(page:Int,listen1Model:Listen1Model){
+				required init(page:Int,listenNewModel:ListenNewModel){
 								super.init(nibName: nil, bundle: nil)
 								self.page = page
-								self.listen1Model = listen1Model
-								self.listen1Model.subjectList.shuffle()
+								self.listenNewModel = listenNewModel
+//								self.listen1Model.subjectList.shuffle()
 				}
 
 				required init?(coder: NSCoder) {
@@ -145,7 +145,7 @@
 								}
 
 								var tempArray = [VoiceHandleView]()
-								for (i,value) in listen1Model.subjectList.enumerated(){
+								for (i,value) in listenNewModel.subjectList[page].enumerated(){
 												let answerView = VoiceHandleView()
 												answerView.listenType = .lesson5
 												answerView.tag = 1000+i
@@ -172,7 +172,7 @@
 
 				private func showHintText(_ state:Bool){
 								if let at = playVoiceAt{
-												label_hint.text = listen1Model.subjectList[at].name
+												label_hint.text = listenNewModel.subjectList[page][at].name
 												UIView.animate(withDuration: 0.5) {
 																if state{
 																				self.label_hint.snp.remakeConstraints { make in
@@ -202,8 +202,8 @@
 
 								viewModel.selectIndex.accept(indexPath)
 
-								let answer = listen1Model.subjectList[playVoiceAt!]
-								let selectAnswer = listen1Model.subjectList[indexPath.row]
+								let answer = listenNewModel.subjectList[page][playVoiceAt!]
+								let selectAnswer = listenNewModel.subjectList[page][indexPath.row]
 
 								var answerType:Fight_lessonType = .none
 
@@ -269,7 +269,7 @@
 
 extension HomeListenFight_lesson_5_VC:UICollectionViewDataSource{
 				func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-								let model = listen1Model.subjectList[indexPath.row]
+								let model = listenNewModel.subjectList[page][indexPath.row]
 								let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: indexPath) as! ListenFight_lesson_1_CCell
 								cell.jq_addShadows(shadowColor: .black.withAlphaComponent(0.31), corner: 8, radius: 3, offset: CGSize(width: 0, height: 1), opacity: 1)
 								if viewModel.selectIndex.value == indexPath{
@@ -288,7 +288,7 @@
 				}
 
 				func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-								return listen1Model.subjectList.count
+								return listenNewModel.subjectList[page].count
 				}
 
 				func numberOfSections(in collectionView: UICollectionView) -> Int {
@@ -303,9 +303,15 @@
 												subV.resetView()
 								}
 
+								if viewModel.answerType.value == .success{
+												let v = rootViewModel.answerCount.value + 1
+												rootViewModel.answerCount.accept(v)
+												viewModel.answerType.accept(.none)
+								}
+
 								DispatchQueue.main.asyncAfter(deadline: .now()+0.4) {
 												if self.answterCount >= 4{
-																self.rootViewModel.answerItems[self.page] = self.listen1Model
+																self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
 																self.voicePlayer.playerEnd()
 																NotificationCenter.default.post(name: NextLession_Noti, object: nil)
 												}
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift
index 00bd77a..296eef7 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift
@@ -80,9 +80,15 @@
 								fatalError("init(coder:) has not been implemented")
 				}
 
+				override func viewDidAppear(_ animated: Bool) {
+								super.viewDidAppear(animated)
+								voicePlayer.delegate = self
+				}
+
 				override func viewDidDisappear(_ animated: Bool) {
 								super.viewDidDisappear(animated)
 								timer?.invalidate()
+								voicePlayer.delegate = nil
 								voicePlayer.playerEnd()
 				}
 
@@ -111,7 +117,6 @@
 												}
 								}
 
-								voicePlayer.delegate = self
     }
 
 				override func setUI() {
@@ -177,6 +182,7 @@
 				}
 
 				@objc private func runloopTime(){
+								print("进入。。。")
 								times -= 1
 								label_hint.text = "请在\(times)s内选择答案!"
 
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift
index 5b79f4a..a391dfa 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenStory_1_VC.swift
@@ -239,7 +239,7 @@
 												v.view_choose.alpha = isPlayedSet.contains(v.tag) ? 1:0
 								}
 				}
-				
+
 				func playing() {
 
 				}
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift
index 93574aa..a75f462 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/View/ChooseLevelView.swift
@@ -25,6 +25,14 @@
 				}
 
 				static func show(clouse:@escaping (Int)->Void){
+
+								var needLoad:Bool = true
+								for v in sceneDelegate?.window?.subviews ?? []{
+												if v is ChooseLevelView{needLoad = false}
+								}
+
+								guard needLoad else {return}
+
 								let levelView = ChooseLevelView.jq_loadNibView()
 								levelView.clouseLevel = clouse
 								sceneDelegate?.window?.addSubview(levelView)
diff --git a/DolphinEnglishLearnStudent/Services/Services.swift b/DolphinEnglishLearnStudent/Services/Services.swift
index f34ceda..918b535 100644
--- a/DolphinEnglishLearnStudent/Services/Services.swift
+++ b/DolphinEnglishLearnStudent/Services/Services.swift
@@ -62,7 +62,7 @@
 				}
 
 				/// 自主学习4-有问有答
-				class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen4Model>>{
+				class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
 								let params = ParamsAppender.build(url: All_Url)
 								params.interface(url: "/study/base/study/questionsAndAnswers")
 								params.append(key: "quarter", value: quarter)
@@ -72,7 +72,7 @@
 				}
 
 				/// 自主学习5-音图相配
-				class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
+				class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
 								let params = ParamsAppender.build(url: All_Url)
 								params.interface(url: "/study/base/study/pictureMateVoice")
 								params.append(key: "quarter", value: quarter)
diff --git a/Podfile b/Podfile
index 08b97b2..5c2a0cd 100644
--- a/Podfile
+++ b/Podfile
@@ -14,5 +14,6 @@
   pod 'SVProgressHUD' # 提示框组件
   pod 'CryptoSwift' # 常用加密算法
 	pod 'Alamofire' # 网络请求框架
+	pod 'Lantern' # 图片浏览器
 
 end

--
Gitblit v1.7.1