DolphinEnglishLearnStudent/Models/CommonModel.swift
@@ -247,7 +247,7 @@ } class ListenNewDataModel:HandyJSON{ var id = 0 var id:String = "" var integral = 0 required init(){} DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift
@@ -18,13 +18,15 @@ class HomeListenFight_lesson_1_VC: BaseVC { private var viewModel = FightAnswerViewModel() private var listen1Model:Listen1Model! private var listenNewModel:ListenNewModel! private var randomElement:Listen1SubModel? private var page:Int! var rootViewModel:HomeListenFightViewModel! private var isListen:Bool = false private var isAnsterComplete:Bool = false //是否已经回答完成 private var isAnsterComplete:Bool = false //是否已经回答完成[小题] private var isAnsterDone:Bool = false //是否已经回答完成[大题] private var isAnsterModel = Set<Listen1SubModel>() private var menuView:VoiceHandleView? private lazy var collectionView:UICollectionView = { @@ -39,11 +41,10 @@ return collection }() 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 } required init?(coder: NSCoder) { @@ -57,8 +58,8 @@ print("加载======DidLoad") //制造随机 randomElement = listen1Model.subjectList.randomElement() menuView?.playUrl = randomElement?.correct listenNewModel.subjectList[page].shuffle() getNextAnswer() menuView?.listenType = .lesson1 DispatchQueue.main.asyncAfter(deadline: .now()+2) { @@ -80,12 +81,34 @@ func restore(){ isAnsterModel.removeAll() isAnsterComplete = false viewModel.answerType.accept(.none) viewModel.selectIndex.accept(nil) menuView?.resetView() setUI() collectionView.reloadData() } private func getNextAnswer(){ if isAnsterModel.count == 4{ print("答题答满了");return } randomElement = listenNewModel.subjectList[page].randomElement() if randomElement != nil{ if isAnsterModel.contains(randomElement!){ getNextAnswer();return } isAnsterModel.insert(randomElement!) } menuView?.playUrl = randomElement?.correct listenNewModel.subjectList[page].shuffle() isAnsterComplete = false viewModel.answerType.accept(.none) collectionView.reloadData() setUI() } override func setUI() { @@ -127,18 +150,19 @@ override func setRx() { viewModel.selectIndex.subscribe(onNext: {[weak self] index in guard let weakSelf = self else { return } guard let index = index else { return } if weakSelf.viewModel.answerType.value == .success {return} //判断选中是否正确逻辑 if let cell = self?.collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: index) as? ListenFight_lesson_1_CCell{ var answer:Fight_lessonType = .none if self?.randomElement?.id == self?.listen1Model.subjectList[index.row].id{ if self?.randomElement?.id == weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].id{ answer = .success if self?.isAnsterComplete == false{ self?.rootViewModel.correctNum += 1 } self?.isAnsterComplete = true VoicePlayer.share().playerAt(url: self?.listen1Model.subjectList[index.row].correct) VoicePlayer.share().playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].correct) }else{ answer = .fail if self?.isAnsterComplete == false{ @@ -153,7 +177,7 @@ case .fail: self?.viewModel.answerType.accept(.fail) // self?.collectionView.isUserInteractionEnabled = false self?.answerFail(errorSound: self?.listen1Model.subjectList[index.row].error) self?.answerFail(errorSound: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].error) default:break } } @@ -163,7 +187,6 @@ //回答正确 private func answerSuccess(_ cell:ListenFight_lesson_1_CCell){ menuView?.snp.removeConstraints() // collectionView.isUserInteractionEnabled = false let v = cell.view_topHandle.convert(cell.bounds, to: self.view) UIView.animate(withDuration: 0.3) { self.menuView?.snp.updateConstraints { make in @@ -204,12 +227,12 @@ }else{ cell.setState(state: .none) } cell.setListen1SubModel(listen1Model.subjectList[indexPath.row]) cell.setListen1SubModel(listenNewModel.subjectList[page][indexPath.row]) return cell } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return min(4,listen1Model.subjectList.count) return listenNewModel.subjectList[page].count } } @@ -219,12 +242,28 @@ func playComplete() { isListen = true self.menuView?.resetView() if self.isAnsterComplete{ DispatchQueue.main.asyncAfter(deadline: .now()+3){ if isAnsterModel.count == 4{ if !isAnsterDone{ let v = rootViewModel.answerCount.value rootViewModel.answerCount.accept(v + 1) } isAnsterDone = true DispatchQueue.main.asyncAfter(deadline: .now()+3){[weak self] in guard let weakSelf = self else { return } NotificationCenter.default.post(name: NextLession_Noti, object: nil) self.viewModel.answerType.accept(.none) self.viewModel.selectIndex.accept(nil) self.rootViewModel.answerItems[self.page] = self.listen1Model weakSelf.viewModel.answerType.accept(.none) weakSelf.viewModel.selectIndex.accept(nil) weakSelf.rootViewModel.answerItems[weakSelf.page] = weakSelf.listenNewModel.subjectList[weakSelf.page] } } if isAnsterComplete{ getNextAnswer() if !isAnsterDone{ let v = rootViewModel.answerCount.value rootViewModel.answerCount.accept(v + 1) } } } DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
@@ -73,6 +73,7 @@ //所有回答的 var answerItems = Dictionary<Int,Any>() //{page:0,data:String,currectAt:0} var answerCount = BehaviorRelay<Int>(value: 1) } class HomeListenFightVC: BaseVC { @@ -160,21 +161,23 @@ btn_forward.addTarget(self, action: #selector(beforeAction), for: .touchUpInside) btn_next.addTarget(self, action: #selector(nextAction), for: .touchUpInside) setPages() pageVC.reloadData() if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ btn_forward.isHidden = true label_pageNum.isHidden = true if viewModel.listenType.value == .game1{ showGameLevel() } }else if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{ let count = (data as! Listen1Model).storyList.count viewModel.maxPage.accept(count) label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(viewModel.maxPage.value)" }else{ pageVC.reloadData() } // if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ // btn_forward.isHidden = true // label_pageNum.isHidden = true // // if viewModel.listenType.value == .game1{ // showGameLevel() // } // }else if viewModel.listenType.value == .story1 || viewModel.listenType.value == .story2{ // let count = (data as! Listen1Model).storyList.count // viewModel.maxPage.accept(count) // label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(viewModel.maxPage.value)" // }else{ // pageVC.reloadData() // } timer = Timer(fire: .distantPast, interval: 1.0, repeats: true, block: {[weak self] _ in self?.viewModel.times += 1 @@ -257,23 +260,21 @@ NotificationCenter.default.rx.notification(NextLession_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in guard let weakSelf = self else { return } 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 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) } default:break } //完成 if nextPage >= weakSelf.viewModel.maxPage.value{ if asComplete{ switch weakSelf.viewModel.listenType.value { case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: weakSelf.studyComplete() case .game1,.game2: if let dict = noti.object as? Dictionary<String,Any>{ weakSelf.gamesComplete(gameId: dict["gameId"] as! Int,integral: dict["gameIntegral"] as! Int) } case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: weakSelf.studyComplete() case .story1,.story2: if let dict = noti.object as? Dictionary<String,Any>{ weakSelf.storyComplete(storyId: dict["storyId"] as! Int, integral: dict["storyIntegral"] as! Int) @@ -282,16 +283,65 @@ return } self?.listenFightLine = .next self?.pageVC.scroll(toPage: nextPage, animation: true) self?.viewModel.currentPage.accept(nextPage) //以下无效代码 // 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{ // switch weakSelf.viewModel.listenType.value { // case .game1,.game2: // if let dict = noti.object as? Dictionary<String,Any>{ // weakSelf.gamesComplete(gameId: dict["gameId"] as! Int,integral: dict["gameIntegral"] as! Int) // } // case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5: // weakSelf.studyComplete() // case .story1,.story2: // if let dict = noti.object as? Dictionary<String,Any>{ // weakSelf.storyComplete(storyId: dict["storyId"] as! Int, integral: dict["storyIntegral"] as! Int) // } // } // return // } weakSelf.listenFightLine = .next weakSelf.pageVC.scroll(toPage: nextPage, animation: true) weakSelf.viewModel.currentPage.accept(nextPage) }).disposed(by: disposeBag) viewModel.currentPage.subscribe(onNext: {[weak self]currentPage in guard let weakSelf = self else { return } self?.btn_forward.isHidden = currentPage <= 0 self?.label_pageNum.text = "已完成:\(weakSelf.viewModel.currentPage.value + 1)/\(weakSelf.viewModel.maxPage.value)" self?.setPages() }).disposed(by: disposeBag) viewModel.answerCount.subscribe(onNext: {[weak self] count in self?.setPages() }).disposed(by: disposeBag) } private func setPages(){ switch viewModel.listenType.value{ case .lesson1,.lesson2,.lesson3: label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count)" case .game1,.game2: btn_forward.isHidden = true label_pageNum.isHidden = true if viewModel.listenType.value == .game1{ showGameLevel() } case .story1,.story2: let count = (data as! Listen1Model).storyList.count viewModel.maxPage.accept(count) label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\(0)" default:break } } @@ -299,36 +349,38 @@ /// - Parameter ignorePush: 是否忽略跳转(未完成答题 :true) private func studyComplete(){ var toalIntegral:Int = 0 var ids = [Int]() for v in viewModel.answerItems.values{ if let v = v as? Listen1Model{ toalIntegral += v.data?.integral ?? 0 ids.append(v.data?.studyId ?? 0) } var ids:String = "" switch viewModel.listenType.value { case .lesson1,.lesson2: let data = (data as! ListenNewModel).data ids = data?.id ?? "" toalIntegral = data?.integral ?? 0 default:break } //有答题过程 //完成进度 var isComplete = false switch viewModel.listenType.value { case .lesson1:isComplete = studyScheduleModel?.listen == 100 case .lesson2:isComplete = studyScheduleModel?.look == 100 case .lesson3:isComplete = studyScheduleModel?.induction == 100 case .lesson4:isComplete = studyScheduleModel?.answer == 100 case .lesson5:isComplete = studyScheduleModel?.pair == 100 default:isComplete = false } //完成进度 var isComplete = false switch viewModel.listenType.value { case .lesson1:isComplete = studyScheduleModel?.listen == 100 case .lesson2:isComplete = studyScheduleModel?.look == 100 case .lesson3:isComplete = studyScheduleModel?.induction == 100 case .lesson4:isComplete = studyScheduleModel?.answer == 100 case .lesson5:isComplete = studyScheduleModel?.pair == 100 default:isComplete = false } Services.completeLearing(type: viewModel.listenType.value.rawValue, studyTime: viewModel.times, studyIds: ids, isComplete: isComplete).subscribe(onNext: {data in NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) }).disposed(by: disposeBag) Services.completeLearing(type: viewModel.listenType.value.rawValue, studyTime: viewModel.times, studyIds: ids, isComplete: isComplete).subscribe(onNext: {data in NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil) }).disposed(by: disposeBag) timer.invalidate() let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value) vc.title = viewModel.listenType.value.rawTitle push(vc: vc) let vc = HomeStudyCompleteVC(correctNum: viewModel.correctNum, errorNum: viewModel.errorNum, totalCoin: toalIntegral, listenType: viewModel.listenType.value) vc.title = viewModel.listenType.value.rawTitle push(vc: vc) } //游戏类完成 @@ -433,6 +485,12 @@ extension HomeListenFightVC:FFPageViewControllerDelegate{ func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt { switch viewModel.listenType.value { case .lesson1,.lesson2,.lesson3:return UInt((data as! ListenNewModel).subjectList.count) default:break } //超级听力,只有一页 if viewModel.listenType.value == .game1 || viewModel.listenType.value == .game2{ return 1 @@ -473,21 +531,20 @@ } func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { print("加载======") if viewModel.listenType.value == .lesson1{ let vc = HomeListenFight_lesson_1_VC(page: page,listen1Model:data as! Listen1Model) let vc = HomeListenFight_lesson_1_VC(page: page,listenNewModel:data as! ListenNewModel) vc.rootViewModel = viewModel return vc } if viewModel.listenType.value == .lesson2{ let vc = HomeListenFight_lesson_2_VC(page: page,listen1Model:data as! Listen1Model) let vc = HomeListenFight_lesson_2_VC(page: page,listenNewModel:data as! ListenNewModel) vc.rootViewModel = viewModel return vc } if viewModel.listenType.value == .lesson3{ let vc = HomeListenFight_lesson_3_VC(page: page, listen1Model: data as! Listen1Model) let vc = HomeListenFight_lesson_3_VC(page: page, listenNewModel: data as! ListenNewModel) vc.rootViewModel = viewModel return vc } DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
@@ -12,14 +12,18 @@ private var viewModel = FightAnswerViewModel() private var listen1Model:Listen1Model! private var randomElement:Listen1SubModel? private var listenNewModel:ListenNewModel! // private var randomElement:Listen1SubModel? private var page:Int! var rootViewModel:HomeListenFightViewModel! private var tempViews = [StudyHandleView]() private var playedIndex = Set<Int>() //已经播放过的view private var voicePlayer = VoicePlayer.share() private var isAnsterModel = Set<Listen1SubModel>() // private var isAnsterComplete:Bool = false //是否已经回答完成[小题] // private var isAnsterDone:Bool = false //是否已经回答完成[大题] private lazy var stackView:UIStackView = { let stackView = UIStackView() @@ -41,11 +45,10 @@ }() 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 } required init?(coder: NSCoder) { @@ -117,6 +120,8 @@ private func addStackView(){ // getNextAnswer() for subV in stackView.arrangedSubviews{ subV.removeFromSuperview() } @@ -130,7 +135,7 @@ handleView.tag = 20 + index let row = viewModel.selectIndex.value!.row let model = listen1Model.subjectList[row] let model = listenNewModel.subjectList[page][row] if index == 0{ handleView.vioceSoundUrl = model.correct @@ -148,12 +153,12 @@ self?.playedIndex.insert(index) } handleView.chooseClouse {[weak self] btn in guard let weakSelf = self else { return } let row = weakSelf.viewModel.selectIndex.value!.row handleView.view_choose.alpha = 1 var lessionType:Fight_lessonType = .none if handleView.vioceSoundUrl == weakSelf.listen1Model.subjectList[row].correct{ if handleView.vioceSoundUrl == weakSelf.listenNewModel.subjectList[weakSelf.page][row].correct{ lessionType = .success weakSelf.voicePlayer.playerEnd() }else{ @@ -162,6 +167,7 @@ switch lessionType { case .success: // weakSelf.isAnsterComplete = true weakSelf.rootViewModel.correctNum += 1 handleView.btn_choose.isEnabled = false handleView.btn_state.setImage(UIImage(named: "icon_success_small"), for: .normal) @@ -212,7 +218,7 @@ //copy试图放在上面进行覆盖 let copyHandleView = studyHandleView.copyView() copyHandleView.view_choose.isHidden = true copyHandleView.vioceSoundUrl = listen1Model.subjectList[self.viewModel.selectIndex.value!.row].correct copyHandleView.vioceSoundUrl = listenNewModel.subjectList[page][self.viewModel.selectIndex.value!.row].correct copyHandleView.btn_state.setImage(nil, for: .normal) view.addSubview(copyHandleView) view.layoutIfNeeded() @@ -237,15 +243,16 @@ self.view.layoutIfNeeded() }completion: { complete in if complete{ self.voicePlayer.playerAt(url: self.listen1Model.subjectList[self.viewModel.selectIndex.value!.row].correct) self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][self.viewModel.selectIndex.value!.row].correct) } } } private func resetStackView(){ playedIndex.removeAll() let newRow = viewModel.selectIndex.value!.row+1 if newRow == listen1Model.subjectList.count{ //防止坐标越界 rootViewModel.answerItems[page] = listen1Model if newRow >= listenNewModel.subjectList[page].count{ //防止坐标越界 rootViewModel.answerItems[page] = listenNewModel.subjectList[page] NotificationCenter.default.post(name: NextLession_Noti, object: nil);return } @@ -273,13 +280,14 @@ }else{ cell.label_title.isHidden = true } cell.setListen1SubModel(listen1Model.subjectList[indexPath.row]) cell.label_title.text = listen1Model.subjectList[indexPath.row].name cell.setListen1SubModel(listenNewModel.subjectList[page][indexPath.row]) cell.label_title.text = listenNewModel.subjectList[page][indexPath.row].name return cell } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return min(4,listen1Model.subjectList.count) return listenNewModel.subjectList[page].count } } @@ -291,16 +299,26 @@ for sub in stackView.arrangedSubviews as! [StudyHandleView]{ if playedIndex.contains(sub.tag){ sub.resetView() sub.view_choose.alpha = playedIndex.contains(sub.tag) ? 1:0 } } print("--->\(page)") if viewModel.answerType.value == .success{ let v = rootViewModel.answerCount.value rootViewModel.answerCount.accept(v + 1) DispatchQueue.main.asyncAfter(deadline: .now()+3) { self.resetStackView() self.viewModel.answerType.accept(.none) } } // if isAnsterComplete{ //// getNextAnswer() // if !isAnsterDone{ // let v = rootViewModel.answerCount.value // rootViewModel.answerCount.accept(v + 1) // } // } } } DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift
@@ -31,17 +31,17 @@ return sta }() private var listen1Model:Listen1Model! private var listenNewModel:ListenNewModel! private var page:Int! private var answterCount:Int = 0 //回答计数,用于确定角标 var rootViewModel:HomeListenFightViewModel! private var voicePlayer = VoicePlayer.share() 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) { @@ -124,9 +124,9 @@ var tempImageArray = [String]() tempImageArray.append(listen1Model.subjectList[2].img) tempImageArray.append(listen1Model.subjectList[4].img) tempImageArray.append(listen1Model.subjectList[5].img) tempImageArray.append(listenNewModel.subjectList[page][2].img) tempImageArray.append(listenNewModel.subjectList[page][4].img) tempImageArray.append(listenNewModel.subjectList[page][5].img) // tempImageArray.shuffle() view.addSubview(stackView) @@ -179,7 +179,7 @@ valueIndex = viewModel.selectIndex.value!.row + 3 } if subV?.imageUrl == listen1Model.subjectList[valueIndex].img{ if subV?.imageUrl == listenNewModel.subjectList[page][valueIndex].img{ answerType = .success }else{ answerType = .fail @@ -220,11 +220,13 @@ copyView?.frame = newFrame } completion: { _ in self.answterCount += 1 self.voicePlayer.playerAt(url: self.listen1Model.subjectList[valueIndex].correct) self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][valueIndex].correct) DispatchQueue.main.asyncAfter(deadline: .now()+1.0) { self.setAnswerStackView() self.viewModel.selectIndex.accept(nil) let v = self.rootViewModel.answerCount.value + 1 self.rootViewModel.answerCount.accept(v) } } } @@ -281,7 +283,7 @@ } if indexPath.section == 0{ let model = listen1Model.subjectList[indexPath.row] let model = listenNewModel.subjectList[page][indexPath.row] if indexPath.row != 2{ cell.img_cover.sd_setImage(with: URL(string: model.img)) }else{ @@ -291,7 +293,7 @@ } if indexPath.section == 1{ let model = listen1Model.subjectList[indexPath.row + 3] let model = listenNewModel.subjectList[page][indexPath.row + 3] if indexPath.row == 0{ cell.img_cover.sd_setImage(with: URL(string: model.img)) }else{ @@ -322,7 +324,7 @@ collectionView.reloadData() if self.answterCount == 3{ self.rootViewModel.answerItems[self.page] = self.listen1Model self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page] NotificationCenter.default.post(name: NextLession_Noti, object: nil) VoicePlayer.share().playerEnd() return DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift
@@ -39,6 +39,10 @@ override func viewDidLoad() { super.viewDidLoad() yy_popBlock = {[weak self] () in self?.backAction() } label_coin.text = "恭喜你,已完成全部答题!获得\(totalCoin)积分!" label_correctNum.text = "\(correctNum)次" label_errorNum.text = "\(errorNum)次" @@ -56,15 +60,7 @@ } @IBAction func backHomeAction(_ sender: UIButton) { for vc in navigationController?.viewControllers ?? []{ if vc.isKind(of: HomeListenMenuVC.self){ navigationController?.popToViewController(vc, animated: true);break } if vc.isKind(of: HomeListenVC.self){ navigationController?.popToViewController(vc, animated: true);break } } backAction() } @IBAction func nextAction(_ sender: UIButton) { @@ -85,4 +81,16 @@ NotificationCenter.default.post(name: StudyCompleteNextLession_Noti, object: nextType) } } private func backAction(){ for vc in navigationController?.viewControllers ?? []{ if vc.isKind(of: HomeListenMenuVC.self){ navigationController?.popToViewController(vc, animated: true);break } if vc.isKind(of: HomeListenVC.self){ navigationController?.popToViewController(vc, animated: true);break } } } } DolphinEnglishLearnStudent/Services/Services.swift
@@ -31,7 +31,7 @@ /// 自主学习1-听音选图 class func listenSelectPicture(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{ class func listenSelectPicture(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/listenSelectPicture") params.append(key: "quarter", value: quarter) @@ -42,7 +42,7 @@ /// 自主学习2-看图选音 class func pictureSelectVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{ class func pictureSelectVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/pictureSelectVoice") params.append(key: "quarter", value: quarter) @@ -52,7 +52,7 @@ } /// 自主学习3-归纳排除 class func induceExclude(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{ class func induceExclude(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/induceExclude") params.append(key: "quarter", value: quarter) @@ -82,12 +82,12 @@ } /// 完成学习 class func completeLearing(type:Int,studyTime:Int,studyIds:[Int],isComplete:Bool)->Observable<BaseResponse<SimpleModel>>{ class func completeLearing(type:Int,studyTime:Int,studyIds:String,isComplete:Bool)->Observable<BaseResponse<SimpleModel>>{ let params = ParamsAppender.build(url: All_Url) params.interface(url: "/study/base/study/completeLearning") .append(key: "type", value: type) .append(key: "studyTime", value: studyTime) .append(key: "studyIds", value: studyIds.map({"\($0)"})) .append(key: "studyIds", value: studyIds) .append(key: "isComplete", value: isComplete) return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true) }