From 349ae761d39ebe18d7c23d415027e44dd1c0a373 Mon Sep 17 00:00:00 2001 From: 葛建军 Date: Wed, 24 May 2017 13:42:31 +0800 Subject: [PATCH] no message --- YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift | 23 ++++++++++++++--------- YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------- YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift | 15 +++++++-------- YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift | 48 ++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 165 insertions(+), 38 deletions(-) diff --git a/YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift b/YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift index 2fbe75e..dca29ec 100644 --- a/YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift +++ b/YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift @@ -7,6 +7,7 @@ // import UIKit +import AVKit class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UISearchResultsUpdating { @IBOutlet var tableView: UITableView! @@ -18,14 +19,14 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie var searchController:UISearchController! var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] var searchAry:[String]=[] - var currentPage:Int=0 //当前页数,每次取十个数据 + var currentPage:Int=1 //当前页数,每次取十个数据 var resourceData:[MicroCourseModel]=[] override func viewDidLoad() { super.viewDidLoad() self.configTheme() addSearchController() addRefresh() - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -53,9 +54,9 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie func addRefresh(){ let header=MJRefreshNormalHeader(refreshingBlock: { //下拉刷新 - self.currentPage=0 + self.currentPage=1 self.resourceData.removeAll() - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -66,7 +67,7 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie tableView.mj_header=header tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { //上拉加载更多 - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -75,9 +76,8 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie }) } // MARK: - 刷新数据接口 - func refreshLivesAction(tag:Int,completionHandler:@escaping (Bool) -> ()){ - let parameters:Dictionary=["type":0 as AnyObject,"pageIndex":tag as AnyObject,"pageSize":1 as AnyObject] - AppDelegate.instance().httpServer.getHotRescourse(parameters: parameters) { (str, error) in + func refreshLivesAction(parameters:Dictionary,completionHandler:@escaping (Bool) -> ()){ + AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in var success:Bool=true if error==nil { if JSON.fromString(jsonString: str)!["status"].intValue == 1{ @@ -129,8 +129,13 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie self.navigationController?.pushViewController(vc, animated: true) }else{ // let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "LiveInforViewControllerVC") as! LiveInforViewController -// vc.item=resourceData[indexPath.row] + // self.navigationController?.pushViewController(vc, animated: true) + let url = URL(string:resourceData[indexPath.row].f_ResourceUrl) + let player = AVPlayerViewController() + player.player = AVPlayer(url: url!) + player.videoGravity = AVLayerVideoGravityResizeAspect + self.present(player, animated: true, completion: nil) } } //取消键盘输入状态 diff --git a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift index a389d42..7434672 100644 --- a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift +++ b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift @@ -13,7 +13,7 @@ class FilterViewController: UIViewController,FilterViewDelegate { var dataSchoolSection:[SchoolSection]=[] var dataGrade:[Grade]=[] var dataSubject:[Subject]=[] - + var dataMaterials:[Material]=[] var type=FilterParameter() override func viewDidLoad() { super.viewDidLoad() @@ -38,25 +38,35 @@ class FilterViewController: UIViewController,FilterViewDelegate { case 3: //学科 type.subject=arry[0].f_Id + case 4: + //教材 + type.materials=arry[0].f_Id default: + break } }else{ filterView.selected = -1 if index==2{ type.grade=nil + }else if index==4{ + type.materials=nil } } filterView.isOpen=false filterView.changeItems(array: arry) - filterView.constraints.last!.constant=60+(getScreenWidth()-80)/12 + if index==4{ + filterView.constraints.last!.constant=60+(getScreenWidth()-80)/12*2+10 + }else{ + filterView.constraints.last!.constant=60+(getScreenWidth()-80)/12 + } filterView.collectionView.reloadData() } @IBAction func determineAction(_ sender: UIButton) { // AppDelegate.instance().httpServer.postResourceList(parameters: <#T##[String : AnyObject]?#>, completionHandler: <#T##(String?, NSError?) -> ()#>) } - //请求年级 并添加控件 + //请求学段 并添加控件 func getSchoolSection(){ SVProgressHUD.show(withStatus: "获取学段...") SVProgressHUD.setDefaultMaskType(.black) @@ -89,15 +99,19 @@ class FilterViewController: UIViewController,FilterViewDelegate { self.scrollContentView.addArrangedSubview(filterView) filterView.translatesAutoresizingMaskIntoConstraints=false filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12)) - for i in 1..<3{ + for i in 1...3{ let filterView=Bundle.main.loadNibNamed("FilterView", owner: nil, options: nil)![0] as! FilterView - filterView.frame.size=CGSize(width: getScreenWidth(), height: 60+(getScreenWidth()-80)/12) + filterView.frame.size=CGSize(width: getScreenWidth(), height: 60+(getScreenWidth()-80)/12*2+10) filterView.delegate=self filterView.tag=i filterView.setUpWithItems(title: self.nameAry[i], array: []) self.scrollContentView.addArrangedSubview(filterView) filterView.translatesAutoresizingMaskIntoConstraints=false - filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12)) + if i==3{ + filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12*2+10)) + }else{ + filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12)) + } } if self.dataSchoolSection.count>0{ self.getGradeWithSchoolSectionID(id: self.dataSchoolSection[0].f_Id, index: 2) @@ -112,10 +126,22 @@ class FilterViewController: UIViewController,FilterViewDelegate { getGradeWithSchoolSectionID(id: dataSchoolSection[index].f_Id, index: 2) case 1: type.grade=dataGrade[index].f_Id + if self.type.schoolSection != nil && self.type.grade != nil && self.type.subject != nil{ + self.getMaterials(index: 4) + }else{ + self.dataMaterials.removeAll() + self.setupFilterView(index: 4, arry: self.dataMaterials) + } case 2: type.subject=dataSubject[index].f_Id - case 3: break - + if self.type.schoolSection != nil && self.type.grade != nil && self.type.subject != nil{ + self.getMaterials(index: 4) + }else{ + self.dataMaterials.removeAll() + self.setupFilterView(index: 4, arry: self.dataMaterials) + } + case 3: + type.materials=dataMaterials[index].f_Id default: break } @@ -143,14 +169,17 @@ class FilterViewController: UIViewController,FilterViewDelegate { self.view.makeToast("获取年级失败:\(error!.description)") } self.setupFilterView(index: index, arry: self.dataGrade) + if self.type.schoolSection != nil && self.type.grade != nil && self.type.subject != nil{ + self.getMaterials(index: 4) + }else{ + self.dataMaterials.removeAll() + self.setupFilterView(index: 4, arry: self.dataMaterials) + } } } //请求学科 并刷新 func getSubjects(index:Int){ - SVProgressHUD.show(withStatus: "获取学科...") - SVProgressHUD.setDefaultMaskType(.black) AppDelegate.instance().httpServer.getSubjects { (str, error) in - SVProgressHUD.dismiss() self.dataSubject.removeAll() if error==nil { if JSON.fromString(jsonString: str)!["status"].intValue == 1{ @@ -168,6 +197,38 @@ class FilterViewController: UIViewController,FilterViewDelegate { self.view.makeToast("获取学科失败:\(error!.description)") } self.setupFilterView(index: index, arry: self.dataSubject) + if self.type.schoolSection != nil && self.type.grade != nil && self.type.subject != nil{ + self.getMaterials(index: 4) + }else{ + self.dataMaterials.removeAll() + self.setupFilterView(index: 4, arry: self.dataMaterials) + } + } + } + //请求教材 并刷新 + func getMaterials(index:Int){ + SVProgressHUD.show(withStatus: "获取教材...") + SVProgressHUD.setDefaultMaskType(.black) + let parameters:Dictionary=["vid":0 as AnyObject,"sid":type.subject as AnyObject,"stid":type.schoolSection as AnyObject,"gid":type.grade as AnyObject] + AppDelegate.instance().httpServer.getCourseWaves(parameters: parameters) { (str, error) in + SVProgressHUD.dismiss() + self.dataMaterials.removeAll() + if error==nil { + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { + self.dataMaterials.append(Material(j: item)) + } + }, failHandler: { (error) in + self.view.makeToast("获取教材失败:\(error.localizedDescription)") + }) + }else{ + self.view.makeToast("获取教材失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") + } + }else{ + self.view.makeToast("获取教材失败:\(error!.description)") + } + self.setupFilterView(index: index, arry: self.dataMaterials) } } override func didReceiveMemoryWarning() { @@ -228,3 +289,37 @@ class Subject: filterModel { f_SubjectName=j["f_SubjectName"].stringValue } } +class Material: filterModel { + /* + f_WaveTitle (string, optional): 教材名称 , + f_VersionId (string, optional): 版本ID , + f_VersionName (string, optional): 版本名称 , + f_SubjectId (string, optional): 学科ID , + f_SubjectName (string, optional): 学科名称 , + f_SchoolTypeId (string, optional): 学段ID , + f_SchoolTypeName (string, optional): 学段名称 , + f_GradeId (string, optional): 年级ID , + f_GradeName (string, optional): 年级名称 + */ + var f_WaveTitle:String="" + var f_VersionId:String="" + var f_VersionName:String="" + var f_SubjectId:String="" + var f_SubjectName:String="" + var f_SchoolTypeId:String="" + var f_SchoolTypeName:String="" + var f_GradeId:String="" + var f_GradeName:String="" + override init(j:JSON) { + super.init(j: j) + f_WaveTitle=j["f_WaveTitle"].stringValue + f_VersionId=j["f_VersionId"].stringValue + f_VersionName=j["f_VersionName"].stringValue + f_SubjectId=j["f_SubjectId"].stringValue + f_SubjectName=j["f_SubjectName"].stringValue + f_SchoolTypeId=j["f_SchoolTypeId"].stringValue + f_SchoolTypeName=j["f_SchoolTypeName"].stringValue + f_GradeId=j["f_GradeId"].stringValue + f_GradeName=j["f_GradeName"].stringValue + } +} diff --git a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift index 89d23e8..455bf2d 100644 --- a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift +++ b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift @@ -18,14 +18,14 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa var searchController:UISearchController! var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] var searchAry:[String]=[] - var currentPage:Int=0 //当前页数,每次取十个数据 + var currentPage:Int=1 //当前页数,每次取十个数据 var resourceData:[MicroCourseModel]=[] override func viewDidLoad() { super.viewDidLoad() self.configTheme() addSearchController() addRefresh() - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -53,9 +53,9 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa func addRefresh(){ let header=MJRefreshNormalHeader(refreshingBlock: { //下拉刷新 - self.currentPage=0 + self.currentPage=1 self.resourceData.removeAll() - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -66,7 +66,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa tableView.mj_header=header tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { //上拉加载更多 - self.refreshLivesAction(tag: self.currentPage, completionHandler: { (success) in + self.refreshLivesAction(parameters: ["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in if success{ self.tableView.reloadData() } @@ -75,9 +75,8 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa }) } // MARK: - 刷新数据接口 - func refreshLivesAction(tag:Int,completionHandler:@escaping (Bool) -> ()){ - let parameters:Dictionary=["type":1 as AnyObject,"pageIndex":tag as AnyObject,"pageSize":1 as AnyObject] - AppDelegate.instance().httpServer.getHotRescourse(parameters: parameters) { (str, error) in + func refreshLivesAction(parameters:Dictionary,completionHandler:@escaping (Bool) -> ()){ + AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in var success:Bool=true if error==nil { if JSON.fromString(jsonString: str)!["status"].intValue == 1{ diff --git a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift index 735f335..27f81c8 100644 --- a/YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift +++ b/YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift @@ -18,6 +18,7 @@ class FilterView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UIC var numberLines:Int! var cellWidth=(getScreenWidth()-80)/3 var cellHeight=(getScreenWidth()-80)/12 + var tableViewWidth=getScreenWidth()-40 override func awakeFromNib() { super.awakeFromNib() collectionView.register(UINib(nibName: "FilterCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "identifier") @@ -25,28 +26,53 @@ class FilterView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UIC func setUpWithItems(title:String,array:[filterModel]) { titleLabel.text=title dataAry=array - numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3 + if self.tag==3{ + numberLines = array.count + }else{ + numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3 + } self.collectionView.reloadData() } func changeItems(array:[filterModel]){ dataAry=array - numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3 + if self.tag==3{ + numberLines = array.count + }else{ + numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3 + } self.collectionView.reloadData() } @IBAction func openOrCloseAction(_ sender: UIButton) { - if isOpen { - isOpen=false - self.constraints.last!.constant=60+cellHeight + if self.tag==3{ + if isOpen { + isOpen=false + self.constraints.last!.constant=60+cellHeight*2+10 + }else{ + if dataAry.count>2{ + isOpen=true + self.constraints.last!.constant=60+cellHeight+CGFloat(numberLines-1)*(cellHeight+10) + self.collectionView.reloadData() + } + } }else{ - if dataAry.count>3{ - isOpen=true - self.constraints.last!.constant=60+cellHeight+CGFloat(numberLines-1)*(cellHeight+10) - self.collectionView.reloadData() + if isOpen { + isOpen=false + self.constraints.last!.constant=60+cellHeight + }else{ + if dataAry.count>3{ + isOpen=true + self.constraints.last!.constant=60+cellHeight+CGFloat(numberLines-1)*(cellHeight+10) + self.collectionView.reloadData() + } } } } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: cellWidth, height: cellHeight) + if self.tag==3{ + return CGSize(width: tableViewWidth,height: cellHeight) + }else{ + return CGSize(width: cellWidth, height: cellHeight) + } } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "identifier", for: indexPath) as! FilterCollectionViewCell @@ -57,6 +83,8 @@ class FilterView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UIC cell.titleLabel.text=(dataAry as! [Grade])[indexPath.row].f_GradeName case 2: cell.titleLabel.text=(dataAry as! [Subject])[indexPath.row].f_SubjectName + case 3: + cell.titleLabel.text=(dataAry as! [Material])[indexPath.row].f_WaveTitle default: cell.titleLabel.text="未知" } -- libgit2 0.21.0