From f2e891eecfac25bf6aed38c8eadfdf05704b16b6 Mon Sep 17 00:00:00 2001
From: 无故事王国 <841720330@qq.com>
Date: 星期四, 20 六月 2024 18:48:39 +0800
Subject: [PATCH] fix

---
 DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_1_CCell.swift |    1 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift               |    2 
 DolphinEnglishLearnStudent/Moudle/Me/VC/CoinRecordHistoryVC.swift                    |    4 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift             |   33 ++++--
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift   |   18 +++
 DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift                   |   10 +
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift   |   17 +++
 DolphinEnglishLearnStudent/Moudle/Home/HomeVC.swift                                  |    7 +
 DolphinEnglishLearnStudent/Services/Services.swift                                   |   17 +++
 DolphinEnglishLearnStudent/Moudle/Market/VC/MarketContentVC.swift                    |    6 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenMenuVC.swift              |    6 +
 DolphinEnglishLearnStudent/Moudle/Market/MarketVC.xib                                |   16 +-
 DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib                     |   18 ++-
 DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift                        |    4 
 DolphinEnglishLearnStudent/SceneDelegate.swift                                       |   27 ++++
 DolphinEnglishLearnStudent/Moudle/Me/TCell/GoodsItemTCell.swift                      |    2 
 DolphinEnglishLearnStudent/Login/LoginVC.swift                                       |    2 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenVC.swift                  |    3 
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift   |   21 ++++
 DolphinEnglishLearnStudent/Other/UIView/CommonAlertView.swift                        |    6 
 DolphinEnglishLearnStudent/Services/NetworkRequest.swift                             |    4 
 DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.xib                    |    5 -
 DolphinEnglishLearnStudent/Models/CommonModel.swift                                  |    2 
 DolphinEnglishLearnStudent/Moudle/Market/MarketVC.swift                              |    2 
 DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift             |   31 ++++--
 DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift   |   20 +++
 26 files changed, 212 insertions(+), 72 deletions(-)

diff --git a/DolphinEnglishLearnStudent/Login/LoginVC.swift b/DolphinEnglishLearnStudent/Login/LoginVC.swift
index 6780bac..fc4c902 100644
--- a/DolphinEnglishLearnStudent/Login/LoginVC.swift
+++ b/DolphinEnglishLearnStudent/Login/LoginVC.swift
@@ -80,7 +80,7 @@
 								guard authInputPhone() else {return}
 								guard authInputCode() else {return}
 
-								guard btn_isRead.isEnabled else {
+								guard btn_isRead.isSelected else {
 												alert(msg: "请阅读并同意《隐私协议》《用户协议》");return
 								}
 
diff --git a/DolphinEnglishLearnStudent/Models/CommonModel.swift b/DolphinEnglishLearnStudent/Models/CommonModel.swift
index abf036d..8c6c47a 100644
--- a/DolphinEnglishLearnStudent/Models/CommonModel.swift
+++ b/DolphinEnglishLearnStudent/Models/CommonModel.swift
@@ -111,6 +111,7 @@
 				var good: MarketModel?
 				var goodTypes = [MarketTypeModel]()
 				var orderNumber: String = ""
+				var residueNumber:Int?
 				var recipient: MarketRecipientModel?
 }
 
@@ -237,6 +238,7 @@
 				var totalIntegral = 0
 				var type = 0
 				var week = 0
+				var canStudy = 0
 }
 
 class ListenNewModel:HandyJSON{
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift
index 365ae9e..363892a 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift
@@ -47,11 +47,11 @@
 								self.page = page
 								self.listenNewModel = listenNewModel
 				}
-				
+
 				required init?(coder: NSCoder) {
 								fatalError("init(coder:) has not been implemented")
 				}
-				
+
 				override func viewDidLoad() {
 								super.viewDidLoad()
 								navigationItem.titleView = UIView()
@@ -107,7 +107,6 @@
 																NotificationCenter.default.post(name: NextLession_Noti, object: nil)
 																weakSelf.viewModel.answerType.accept(.none)
 																weakSelf.viewModel.selectIndex.accept(nil)
-																weakSelf.rootViewModel.answerItems[weakSelf.page] = weakSelf.listenNewModel.subjectList[weakSelf.page]
 																weakSelf.isListen = false
 												}
 												return
@@ -172,6 +171,18 @@
 								collectionView.reloadData()
 				}
 
+				override func viewDidLayoutSubviews() {
+								super.viewDidLayoutSubviews()
+								let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
+								let w = (self.collectionView.size.width - flowLayout.minimumLineSpacing) / 2
+								let h = (self.collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2
+
+								if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{
+												flowLayout.itemSize = CGSize(width: w, height: h)
+												collectionView.reloadData()
+								}
+				}
+
 				override func setRx() {
 								viewModel.selectIndex.subscribe(onNext: {[weak self] index in
 												guard let weakSelf = self else { return }
@@ -189,6 +200,10 @@
 																				self?.isAnsterComplete = true
 
 																				VoicePlayer.share().playSuccessVoice()
+
+																				let teamId = weakSelf.listenNewModel.data?.id.components(separatedBy: ",")[weakSelf.page]
+																				weakSelf.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].id)
+
 																				DispatchQueue.main.asyncAfter(deadline: .now()+2) {
 																								VoicePlayer.share().playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].correct)
 																				}
@@ -207,8 +222,7 @@
 																								self?.answerSuccess(cell)
 																				case .fail:
 																								self?.viewModel.answerType.accept(.fail)
-//																								self?.collectionView.isUserInteractionEnabled = false
-																								self?.answerFail(errorSound: weakSelf.listenNewModel.subjectList[weakSelf.page][index.row].error)
+																								self?.collectionView.reloadData()
 																				default:break
 																}
 												}
@@ -230,11 +244,6 @@
 								}completion: { _ in
 												self.collectionView.reloadData()
 								}
-				}
-
-				private func answerFail(errorSound:String?){
-								self.collectionView.reloadData()
-								VoicePlayer.share().playerAt(url: errorSound)
 				}
 }
 
@@ -272,7 +281,7 @@
 								isListen = false
 								self.view.isUserInteractionEnabled = false
 				}
-				
+
 				func playComplete() {
 								isListen = true
 								self.view.isUserInteractionEnabled = true
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/HomeVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/HomeVC.swift
index c968cbf..217d531 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/HomeVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/HomeVC.swift
@@ -31,6 +31,13 @@
 																}
 												}
 								}).disposed(by: disposeBag)
+
+								Services.onlineDuration().subscribe(onNext: { data in
+												if let time = data.data{
+																sceneDelegate?.globalTimeval = time
+																sceneDelegate?.startTimer()
+												}
+								}).disposed(by: disposeBag)
     }
 
 				@IBAction func listenAction(_ sender: UIButton) {
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_1_CCell.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_1_CCell.swift
index a7ca965..9d5ac26 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_1_CCell.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_lesson_1_CCell.swift
@@ -24,6 +24,7 @@
 								image_state.alpha = 0
 								image_state.transform = .init(scaleX: 0.1, y: 0.1)
 								label_title.isHidden = true
+								image_cover.contentMode = .scaleToFill
 				}
 
 				func setState(state:Fight_lessonType){
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
index 65014de..c8b282f 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
@@ -44,6 +44,12 @@
 				case none
 }
 
+
+//中途退出所需要
+class ExitLearnModel{
+				var topicsIds = Set<Int>()
+}
+
 class HomeListenFightViewModel{
 
 				/// 当前页数
@@ -75,6 +81,17 @@
 				//所有回答的
 				var answerItems = Dictionary<Int,Any>() //{page:0,data:String,currectAt:0}
 				var answerCount = BehaviorRelay<Int>(value: 1)
+
+				var answerItems_1 = Dictionary<String,Set<Int>>()
+
+				//回答正确的题
+				func insertCorrectAnswer(teamId:String?,answerId:Int){
+								guard teamId != nil else {return}
+								if answerItems_1[teamId!] == nil{
+												answerItems_1[teamId!] = Set<Int>()
+								}
+								answerItems_1[teamId!]!.insert(answerId)
+				}
 }
 
 class HomeListenFightVC: BaseVC {
@@ -328,7 +345,6 @@
 								switch viewModel.listenType.value {
 												case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:
 																let data = (data as! ListenNewModel).data
-																ids = data?.id ?? ""
 																toalIntegral = data?.integral ?? 0
 												default:break
 								}
@@ -396,21 +412,14 @@
 												CommonAlertView.show(content: "未完成全部答题,确认退出吗?") {[weak self] () in
 																guard let weakSelf = self else { return }
 
-																var temIds = [String]()
-																var topicIds = [String]()
-																for v in weakSelf.viewModel.answerItems.values{
-																				if let v =  v as? Listen1Model{
-																								temIds.append("\(v.data?.id ?? 0)")
-																								for sV in v.subjectList{
-																												topicIds.append("\(sV.id)")
-																								}
-																				}
-																}
+																let topicIds = weakSelf.viewModel.answerItems_1.keys.sorted()
+																let temIds = weakSelf.viewModel.answerItems_1.values.flatMap({$0}).map({"\($0)"})
 
 																switch weakSelf.viewModel.listenType.value{
 																				case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:
 																								if temIds.count > 0 && topicIds.count > 0{
-																												Services.exitLearning(type:weakSelf.viewModel.listenType.value.rawValue,week: weakSelf.viewModel.week.value!, day: weakSelf.viewModel.day.value!, teamIds: temIds, topicIds: topicIds).subscribe(onNext: { data in
+																												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).subscribe(onNext: { data in
 
 																												}).disposed(by: weakSelf.disposeBag)
 																								}
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
index 9c1308d..6e0cb04 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_2_VC.swift
@@ -81,6 +81,18 @@
 
 				}
 
+				override func viewDidLayoutSubviews() {
+								super.viewDidLayoutSubviews()
+								let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
+								let w = (self.collectionView.size.width - flowLayout.minimumLineSpacing) / 2
+								let h = (self.collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2
+
+								if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{
+												flowLayout.itemSize = CGSize(width: w, height: h)
+												collectionView.reloadData()
+								}
+				}
+
 				override func setUI() {
 								super.setUI()
 
@@ -162,7 +174,9 @@
 																if handleView.vioceSoundUrl == weakSelf.listenNewModel.subjectList[weakSelf.page][row].correct{
 																				lessionType = .success
 																				weakSelf.voicePlayer.playSuccessVoice()
-//																								weakSelf.voicePlayer.playerInterrupt()
+																				let teamId = weakSelf.listenNewModel.data?.id.components(separatedBy: ",")[weakSelf.page]
+																				let answerId = weakSelf.listenNewModel.subjectList[weakSelf.page][row].id
+																				weakSelf.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: answerId)
 																}else{
 																				lessionType = .fail
 																				weakSelf.voicePlayer.playFailVoice()
@@ -255,7 +269,7 @@
 								playedIndex.removeAll()
 								let newRow = viewModel.selectIndex.value!.row+1
 								if newRow >= listenNewModel.subjectList[page].count{ //防止坐标越界
-												rootViewModel.answerItems[page] = listenNewModel.subjectList[page]
+//												rootViewModel.answerItems[page] = listenNewModel.subjectList[page]
 												NotificationCenter.default.post(name: NextLession_Noti, object: nil);return
 								}
 
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift
index e8e54e7..defdd6f 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift
@@ -103,6 +103,18 @@
 
 				}
 
+				override func viewDidLayoutSubviews() {
+								super.viewDidLayoutSubviews()
+								let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
+
+								let w = (collectionView.size.width - flowLayout.minimumLineSpacing) / 3.1
+								let h = (collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2 - 40
+								if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{
+												flowLayout.itemSize = CGSize(width: w, height: h)
+												collectionView.reloadData()
+								}
+				}
+
 				private func setAnswerStackView(force:Bool = false){
 
 
@@ -153,7 +165,7 @@
 
 				@objc private func chooseAnswerAction(btn:UIButton){
 
-								guard viewModel.selectIndex != nil else {return}
+								guard viewModel.selectIndex.value != nil else {return}
 
 								if !islisten{
 												alertError(msg: "请先听题");return
@@ -240,6 +252,11 @@
 																				} completion: { _ in
 																								self.answterCount += 1
 																								self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][valueIndex].correct)
+
+																								let teamId = self.listenNewModel.data?.id.components(separatedBy: ",")[self.page]
+																								let answerId = self.listenNewModel.subjectList[self.page][valueIndex].id
+																								self.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: answerId)
+
 																								DispatchQueue.main.asyncAfter(deadline: .now()+1.0) {
 																												self.setAnswerStackView()
 																												let v = self.rootViewModel.answerCount.value + 1
@@ -395,7 +412,6 @@
 
 
 								if self.answterCount == 3{
-												self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
 												NotificationCenter.default.post(name: NextLession_Noti, object: nil)
 												return
 								}
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 98b453e..c58e709 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
@@ -109,6 +109,19 @@
 								}
 				}
 
+				override func viewDidLayoutSubviews() {
+								super.viewDidLayoutSubviews()
+								let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
+
+								let w = (collectionView.size.width - flowLayout.minimumLineSpacing) / 2
+								let h = (collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2.1
+								
+								if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{
+												flowLayout.itemSize = CGSize(width: w, height: h)
+												collectionView.reloadData()
+								}
+				}
+
 				private func setAnswerStackView(){
 
 								guard let selectIndex = viewModel.selectIndex.value else{
@@ -206,6 +219,12 @@
 								if tempSubV?.voiceUrl == answerModel?.correct{
 												answerType = .success
 												voicePlayer.playSuccessVoice()
+
+												let teamId = self.listenNewModel.data?.id.components(separatedBy: ",")[self.page]
+												let answerId = answerModel!.id
+												self.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: answerId)
+
+
 												DispatchQueue.main.asyncAfter(deadline: .now()+2) {
 																self.voicePlayer.playerAt(url: tempSubV!.voiceUrl)
 												}
@@ -261,7 +280,7 @@
 																																if self.answerIndexs.count == 2{
 																																				let v = self.rootViewModel.answerCount.value + 1
 																																				self.rootViewModel.answerCount.accept(v)
-																																				self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
+//																																				self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
 																																				self.voicePlayer.playerEnd()
 																																				NotificationCenter.default.post(name: NextLession_Noti, object: nil)
 																																				self.voicePlayer.playerEnd()
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 c9ecc86..2321d82 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
@@ -114,6 +114,19 @@
 								setAnswerStackView()
 				}
 
+				override func viewDidLayoutSubviews() {
+								super.viewDidLayoutSubviews()
+								let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
+
+								let w = (collectionView.size.width - flowLayout.minimumLineSpacing) / 2
+								let h = (collectionView.size.height - flowLayout.minimumInteritemSpacing) / 2.0
+								
+								if flowLayout.itemSize.width != w || flowLayout.itemSize.height != h{
+												flowLayout.itemSize = CGSize(width: w, height: h)
+												collectionView.reloadData()
+								}
+				}
+
 				override func setRx() {
 
 				}
@@ -213,6 +226,8 @@
 								if answer.id == selectAnswer.id{
 												answerType = .success
 												voicePlayer.playSuccessVoice()
+												let teamId = listenNewModel.data?.id.components(separatedBy: ",")[page]
+												rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: selectAnswer.id)
 								}else{
 												answerType = .fail
 												voicePlayer.playFailVoice()
@@ -318,7 +333,7 @@
 
 								DispatchQueue.main.asyncAfter(deadline: .now()+0.4) {
 												if self.answterCount >= 4{
-																self.rootViewModel.answerItems[self.page] = self.listenNewModel.subjectList[self.page]
+//																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/HomeListenMenuVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenMenuVC.swift
index 2e1d3ae..020b78d 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenMenuVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenMenuVC.swift
@@ -63,6 +63,12 @@
 
 				func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
 								let model = dataItems[selectIndexPath.row][indexPath.row]
+
+								guard model.canStudy == 1 else {
+												CommonAlertView.show(isSinple: true, content: "请先完成上一周练习")
+												return
+								}
+
 								Services.studySchedule(week: model.week).subscribe(onNext: {[weak self]data in
 												guard let weakSelf = self else { return }
 												if let model = data.data{
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift
index c4f1489..5f80900 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenSubVC.swift
@@ -40,6 +40,8 @@
 								tableView.delegate = self
 								tableView.dataSource = self
 								tableView.separatorStyle = .none
+								tableView.showsVerticalScrollIndicator = false
+								tableView.showsHorizontalScrollIndicator = false
 								tableView.backgroundColor = Config.ThemeBGColor
 								tableView.register(UINib(nibName: "HomeListen_process_TCell", bundle: nil), forCellReuseIdentifier: "_HomeListen_process_TCell")
 								tableView.register(UINib(nibName: "HomeListen_item_TCell", bundle: nil), forCellReuseIdentifier: "_HomeListen_item_TCell")
diff --git a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenVC.swift b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenVC.swift
index 6e49502..4acaad4 100644
--- a/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenVC.swift
@@ -74,6 +74,9 @@
 				override func setUI() {
 								super.setUI()
 
+								//解决返回按钮区域过小,点击不灵敏
+								title = "            "
+
 								let topMenuView = UIView()
 								topMenuView.backgroundColor = .white
 								topMenuView.jq_cornerRadius = 8
diff --git a/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.swift b/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.swift
index 86b439a..15840e1 100644
--- a/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.swift
@@ -17,7 +17,7 @@
 				let menuTypes = BehaviorRelay<[MarketTypeModel]>(value:[])
 				var selectMenuTypes = Set<MarketTypeModel>(){
 								didSet{
-												types.accept(selectMenuTypes.map({$0.name}))
+												types.accept(selectMenuTypes.map({"\($0.id)"}))
 												beginRefresh()
 								}
 				}
diff --git a/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.xib b/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.xib
index 069bbb0..35335b9 100644
--- a/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.xib
+++ b/DolphinEnglishLearnStudent/Moudle/Market/MarketVC.xib
@@ -79,16 +79,16 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="82B-Dg-Sap">
-                    <rect key="frame" x="946" y="102" width="13" height="29"/>
+                    <rect key="frame" x="940" y="98" width="19" height="44"/>
                     <constraints>
-                        <constraint firstAttribute="height" constant="29" id="wW2-Vh-riV"/>
+                        <constraint firstAttribute="height" constant="44" id="yC7-fJ-c6s"/>
                     </constraints>
-                    <fontDescription key="fontDescription" name="Impact" family="Impact" pointSize="24"/>
+                    <fontDescription key="fontDescription" name="Impact" family="Impact" pointSize="36"/>
                     <color key="textColor" red="0.99607843139999996" green="0.14117647059999999" blue="0.050980392159999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="剩余积分:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A9t-n3-Bmf">
-                    <rect key="frame" x="867" y="105.5" width="74" height="22"/>
+                    <rect key="frame" x="861" y="109" width="74" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="YFs-Uk-JaX"/>
                     </constraints>
@@ -97,7 +97,7 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="商品分类:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jg0-dG-OCI">
-                    <rect key="frame" x="65" y="105.5" width="74" height="22"/>
+                    <rect key="frame" x="65" y="109" width="74" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="tki-uv-Hgf"/>
                     </constraints>
@@ -106,7 +106,7 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="OCn-Jg-gWg">
-                    <rect key="frame" x="152" y="96" width="705" height="41"/>
+                    <rect key="frame" x="152" y="99.5" width="699" height="41"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="41" id="A5O-nk-89N"/>
                     </constraints>
@@ -118,7 +118,7 @@
                     </collectionViewFlowLayout>
                 </collectionView>
                 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="EPp-Vf-S4a">
-                    <rect key="frame" x="0.0" y="159" width="1024" height="1207"/>
+                    <rect key="frame" x="0.0" y="162.5" width="1024" height="1203.5"/>
                     <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="YMW-eo-TCY">
                         <size key="itemSize" width="128" height="128"/>
@@ -134,7 +134,7 @@
                 <constraint firstItem="82B-Dg-Sap" firstAttribute="trailing" secondItem="Unb-0E-8fJ" secondAttribute="trailing" id="04D-Ur-Vzd"/>
                 <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Unb-0E-8fJ" secondAttribute="trailing" constant="65" id="9yv-3Y-78Y"/>
                 <constraint firstItem="Unb-0E-8fJ" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="65" id="O97-uk-THq"/>
-                <constraint firstItem="82B-Dg-Sap" firstAttribute="top" secondItem="Unb-0E-8fJ" secondAttribute="bottom" constant="28" id="OiX-TJ-i3e"/>
+                <constraint firstItem="82B-Dg-Sap" firstAttribute="top" secondItem="Unb-0E-8fJ" secondAttribute="bottom" constant="24" id="OiX-TJ-i3e"/>
                 <constraint firstItem="A9t-n3-Bmf" firstAttribute="leading" secondItem="OCn-Jg-gWg" secondAttribute="trailing" constant="10" id="Q2g-q0-rku"/>
                 <constraint firstItem="OCn-Jg-gWg" firstAttribute="leading" secondItem="Jg0-dG-OCI" secondAttribute="trailing" constant="13" id="Rup-A4-pfm"/>
                 <constraint firstItem="82B-Dg-Sap" firstAttribute="centerY" secondItem="A9t-n3-Bmf" secondAttribute="centerY" id="bHH-o4-cLV"/>
diff --git a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketContentVC.swift b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketContentVC.swift
index 5c3d940..87d84d4 100644
--- a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketContentVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketContentVC.swift
@@ -67,8 +67,8 @@
 
 																var info_Array = Array<String>()
 
-																if m.good?.surplus != nil{
-																				info_Array.append("剩余数量:\(m.good?.surplus ?? 0)")
+																if m.residueNumber != nil{
+																				info_Array.append("剩余数量:\(m.residueNumber ?? 0)")
 																}
 
 																if m.good?.userCount != nil{
@@ -113,7 +113,7 @@
 				@IBAction func exchangeAction(_ sender: UIButton) {
 
 
-								guard viewModel.detailModel.value?.good?.surplus != 0 else {
+								guard viewModel.detailModel.value?.residueNumber != 0 else {
 												CommonAlertView.show(isSinple: true, content: "兑换失败,当前剩余数量不足!") {
 
 												}
diff --git a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift
index b59ad1b..2766de6 100644
--- a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.swift
@@ -106,11 +106,17 @@
 								if viewModel.address.value.count == 0{
 												let vc = AddressManageVC(type: .handle)
 												vc.title = "地址管理"
+												vc.chooseAddress {[weak self] m in
+																self?.label_address.text = m.address
+																self?.label_address_info.text = m.recipient + "|" + m.recipientPhone
+																self?.recipientId = m.id
+																self?.label_address_info.isHidden = false
+												}
 												push(vc: vc)
 												return
 								}
 
-								let vc = AddressManageVC(type: .choose)
+								let vc = AddressManageVC(type: .handle)
 								vc.title = "地址管理"
 								vc.chooseAddress {[weak self] m in
 												self?.label_address.text = m.address
@@ -140,7 +146,7 @@
 
 								guard recipientId != nil else{
 												CommonAlertView.show(content: "请先选择收货地址") {
-																let vc = AddressManageVC(type: .choose)
+																let vc = AddressManageVC(type: .handle)
 																vc.title = "地址管理"
 																vc.chooseAddress {[weak self] m in
 																				self?.label_address.text = m.address
diff --git a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib
index 0b1617c..2147f9a 100644
--- a/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib
+++ b/DolphinEnglishLearnStudent/Moudle/Market/VC/MarketExchangeVC.xib
@@ -103,22 +103,25 @@
                                                     </constraints>
                                                 </view>
                                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more_gray" translatesAutoresizingMaskIntoConstraints="NO" id="jKh-8m-ogE">
-                                                    <rect key="frame" x="536" y="40" width="6" height="10"/>
+                                                    <rect key="frame" x="530" y="40" width="12" height="10"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="12" id="0Vb-aw-7BH"/>
+                                                    </constraints>
                                                 </imageView>
-                                                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="ZAd-Ha-PgP">
-                                                    <rect key="frame" x="14" y="25.5" width="36" height="39.5"/>
+                                                <stackView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="ZAd-Ha-PgP">
+                                                    <rect key="frame" x="14" y="25.5" width="502" height="39.5"/>
                                                     <subviews>
-                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ph9-Ra-CxP">
-                                                            <rect key="frame" x="0.0" y="0.0" width="36" height="20"/>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ph9-Ra-CxP">
+                                                            <rect key="frame" x="0.0" y="0.0" width="502" height="20"/>
                                                             <constraints>
-                                                                <constraint firstAttribute="height" constant="20" id="cgw-w2-dsN"/>
+                                                                <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="cgw-w2-dsN"/>
                                                             </constraints>
                                                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                                             <color key="textColor" red="0.011764705882352941" green="0.015686274509803921" blue="0.019607843137254902" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hns-QV-baw">
-                                                            <rect key="frame" x="0.0" y="25" width="36" height="14.5"/>
+                                                            <rect key="frame" x="0.0" y="25" width="502" height="14.5"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                             <nil key="textColor"/>
                                                             <nil key="highlightedColor"/>
@@ -135,6 +138,7 @@
                                                 <constraint firstItem="5h7-8X-cXI" firstAttribute="leading" secondItem="sfn-3Q-b7V" secondAttribute="leading" id="g86-ED-gAW"/>
                                                 <constraint firstAttribute="trailing" secondItem="jKh-8m-ogE" secondAttribute="trailing" constant="14" id="on7-ez-QYT"/>
                                                 <constraint firstItem="ZAd-Ha-PgP" firstAttribute="centerY" secondItem="sfn-3Q-b7V" secondAttribute="centerY" id="qhc-bm-AqF"/>
+                                                <constraint firstItem="jKh-8m-ogE" firstAttribute="leading" secondItem="ZAd-Ha-PgP" secondAttribute="trailing" constant="14" id="rNk-IQ-9WA"/>
                                             </constraints>
                                             <connections>
                                                 <action selector="addressAction:" destination="-1" eventType="touchUpInside" id="fj4-mV-Wor"/>
diff --git a/DolphinEnglishLearnStudent/Moudle/Me/TCell/GoodsItemTCell.swift b/DolphinEnglishLearnStudent/Moudle/Me/TCell/GoodsItemTCell.swift
index 756da6f..b04f039 100644
--- a/DolphinEnglishLearnStudent/Moudle/Me/TCell/GoodsItemTCell.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Me/TCell/GoodsItemTCell.swift
@@ -70,7 +70,7 @@
 				}
 
 				@IBAction func handleAction(_ sender: UIButton) {
-								let vc = AddressManageVC(type: .choose)
+								let vc = AddressManageVC(type: .handle)
 								vc.title = "修改地址"
 								vc.chooseAddress { m in
 												CommonAlertView.show(content: "确认修改当前收货地址吗?") {[weak self] () in
diff --git a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.xib b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.xib
index 82c7c28..108dfe1 100644
--- a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.xib
+++ b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.xib
@@ -166,11 +166,6 @@
                                             <rect key="frame" x="90.5" y="0.0" width="778.5" height="54"/>
                                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                             <textInputTraits key="textInputTraits"/>
-                                            <userDefinedRuntimeAttributes>
-                                                <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength">
-                                                    <integer key="value" value="11"/>
-                                                </userDefinedRuntimeAttribute>
-                                            </userDefinedRuntimeAttributes>
                                         </textField>
                                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1bK-P9-OGL">
                                             <rect key="frame" x="0.0" y="53.5" width="888" height="0.5"/>
diff --git a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift
index aa39351..f688d40 100644
--- a/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageVC.swift
@@ -65,7 +65,7 @@
 								}
 
 
-								tableView = UITableView(frame: .zero, style: .plain)
+								tableView = UITableView(frame: .zero, style: .grouped)
 								tableView.delegate = self
 								tableView.dataSource = self
 								tableView.backgroundColor = .clear
@@ -105,11 +105,9 @@
 
 extension AddressManageVC:UITableViewDelegate{
 				func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-								if addressManageType == .choose{
 												let model = viewModel.dataSource.value[indexPath.row]
 												clouse?(model)
 												self.navigationController?.popViewController()
-								}
 				}
 }
 
diff --git a/DolphinEnglishLearnStudent/Moudle/Me/VC/CoinRecordHistoryVC.swift b/DolphinEnglishLearnStudent/Moudle/Me/VC/CoinRecordHistoryVC.swift
index 6db38ea..a4869b7 100644
--- a/DolphinEnglishLearnStudent/Moudle/Me/VC/CoinRecordHistoryVC.swift
+++ b/DolphinEnglishLearnStudent/Moudle/Me/VC/CoinRecordHistoryVC.swift
@@ -42,6 +42,8 @@
 								view_menuTitle.jq_addCorners(corner: [.topLeft,.topRight], radius: 20)
 								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
 				}
@@ -58,7 +60,7 @@
 				@IBAction func chooseDateTimeAction(_ sender: UIButton) {
 								let year = viewModel.selectDate.value?.jq_nowYear() ?? Date().jq_nowYear()
 								let month = viewModel.selectDate.value?.jq_nowMonth() ?? Date().jq_nowMonth()
-								BitrhdayPickerView.show(title: "查询时间", type: .YM, defaultYear: year, defaultMonth: month, defaultDay: 0, minYear: 0) {[weak self] date in
+								BitrhdayPickerView.show(title: "查询时间", type: .YM, defaultYear: year, defaultMonth: month, defaultDay: 0, minYear: 2021) {[weak self] date in
 												self?.viewModel.selectDate.accept(date)
 												self?.viewModel.beginRefresh()
 								}
diff --git a/DolphinEnglishLearnStudent/Other/UIView/CommonAlertView.swift b/DolphinEnglishLearnStudent/Other/UIView/CommonAlertView.swift
index 01d5fff..bfdba71 100644
--- a/DolphinEnglishLearnStudent/Other/UIView/CommonAlertView.swift
+++ b/DolphinEnglishLearnStudent/Other/UIView/CommonAlertView.swift
@@ -15,7 +15,7 @@
 				@IBOutlet weak var btn_close: UIButton!
 				@IBOutlet weak var cons_btnClose: NSLayoutConstraint!
 				
-				private var clouse:(()->Void)!
+				private var clouse:(()->Void)?
 				override func awakeFromNib() {
 								super.awakeFromNib()
 								self.alpha = 0
@@ -23,7 +23,7 @@
 								layoutIfNeeded()
 				}
 
-				static func show(isSinple:Bool = false, content:String,clouse:@escaping ()->Void){
+				static func show(isSinple:Bool = false, content:String,clouse:( ()->Void)? = nil){
 								 let commonAlertView = CommonAlertView.jq_loadNibView()
 								sceneDelegate?.window?.addSubview(commonAlertView)
 								commonAlertView.label_content.text = content
@@ -60,7 +60,7 @@
 												self.view_container.transform = .init(scaleX: 0.1, y: 0.1)
 								} completion: { _ in
 												self.removeFromSuperview()
-												self.clouse()
+												self.clouse?()
 								}
 				}
 }
diff --git a/DolphinEnglishLearnStudent/SceneDelegate.swift b/DolphinEnglishLearnStudent/SceneDelegate.swift
index 16c7ef8..ec8d9ae 100644
--- a/DolphinEnglishLearnStudent/SceneDelegate.swift
+++ b/DolphinEnglishLearnStudent/SceneDelegate.swift
@@ -11,11 +11,13 @@
 class SceneDelegate: UIResponder, UIWindowSceneDelegate {
 
 				var window: UIWindow?
+				var globalTimeval:Int?
+				var timer:Timer?
 				private var disposeBag = JQ_disposeBag
 
 				func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
 								guard let windowScene = (scene as? UIWindowScene) else { return }
-
+								UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer")
 								window = UIWindow(windowScene: windowScene)
 								window?.frame = windowScene.coordinateSpace.bounds
 								if #available(iOS 13.0, *) {
@@ -25,9 +27,8 @@
 								SVProgressHUD.setMaximumDismissTimeInterval(1.5)
 								SVProgressHUD.setDefaultMaskType(.custom)
 
-								guard let tokenModel = LoginTokenModel.getToken(),!LoginTokenModel.isOverdue() else {
-												needLogin()
-												return
+								guard !LoginTokenModel.isOverdue() else {
+												needLogin();return
 								}
 								loginSuccess()
 
@@ -89,5 +90,23 @@
 								LoginTokenModel.clearToken()
 
 				}
+
+				func startTimer(){
+								guard let timeval = globalTimeval  else {return}
+								timer = Timer.scheduledTimer(withTimeInterval: 60, repeats: true) {[weak self] timer in
+												guard let weakSelf = self else { return }
+												if let v = UserDefaults.standard.object(forKey: "scheduledTimer") as? TimeInterval{
+																if Date().timeIntervalSince1970 - v > Double(timeval) * 60.0{
+												Services.giveIntegral().subscribe(onNext: { _ in
+
+												}).disposed(by: weakSelf.disposeBag)
+																				UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer")
+																				UserDefaults.standard.synchronize()
+																}
+												}
+								}
+								timer?.fire()
+								RunLoop.current.add(timer!, forMode: .common)
+				}
 }
 
diff --git a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift
index 2a4a26f..28a8647 100644
--- a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift
+++ b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift
@@ -233,9 +233,7 @@
 																												case 504: //登录设备最大限制
 																																break
 																												case 503: //登录被冻结
-																																DispatchQueue.main.async {
-																																				alert(msg: next.msg)
-																																}
+																																CommonAlertView.show(isSinple: true, content: next.msg)
 //																												case 501:
 //																																CommonAlertView.show(title: "提示", content: next.msg,isSingle: true) { _ in
 //
diff --git a/DolphinEnglishLearnStudent/Services/Services.swift b/DolphinEnglishLearnStudent/Services/Services.swift
index 8f46a4a..e698ce4 100644
--- a/DolphinEnglishLearnStudent/Services/Services.swift
+++ b/DolphinEnglishLearnStudent/Services/Services.swift
@@ -322,7 +322,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])->Observable<BaseResponse<SimpleModel>>{
+				class func exitLearning(type:Int,week:Int,day:Int,teamIds:[String],topicIds:[String],answerNumber:Int,correctNumber:Int,studyTime:Int)->Observable<BaseResponse<SimpleModel>>{
 								let params = ParamsAppender.build(url: All_Url)
 								params.interface(url: "/study/base/study/exitLearning")
 												.append(key: "week", value: week)
@@ -330,6 +330,9 @@
 												.append(key: "teamIds", value: teamIds.joined(separator: ","))
 												.append(key: "topicIds", value: topicIds.joined(separator: ","))
 												.append(key: "type", value: type)
+												.append(key: "answerNumber", value: answerNumber)
+												.append(key: "correctNumber", value: correctNumber)
+												.append(key: "studyTime", value: studyTime)
 								return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
 				}
 
@@ -340,6 +343,18 @@
 												.append(key: "recipientId", value: recipientId)
 								return NetworkRequest.request(params: params, method: .get, progress: true)
 				}
+
+				class func onlineDuration()->Observable<BaseResponse<Int>>{
+								let params = ParamsAppender.build(url: All_Url)
+								params.interface(url: "/study/base/study/onlineDuration")
+								return NetworkRequest.request(params: params, method: .get, progress: false)
+				}
+
+				class func giveIntegral()->Observable<BaseResponse<SimpleModel>>{
+								let params = ParamsAppender.build(url: All_Url)
+								params.interface(url: "/study/base/study/giveIntegral")
+								return NetworkRequest.request(params: params, method: .get, progress: false)
+				}
 }
 
 extension Services{

--
Gitblit v1.7.1