Commit 70ad884f authored by David黄金龙's avatar David黄金龙

Merge branch 'develop' into davidhuang

* develop: (27 commits)
  bug处理
  // 搜索
  标题错误修改
  吴测试牛逼
  处理一处 crash
  //  消息 无数据View
  首页banner  最多10条
  // tag 2.3.9-3
  无状态刷新bug处理
  1、删除不使用的代码 2、处理首页没有
  //  搜索
  返回
  处理 一处展示
  修改版本号
  首页 置顶
  1、处理 首页的数据刷新 2、处理 数据一致性
  // tag:0.2.9.
  多页每次请求  6 控制 banner 不超过6
  修改 版本号 0.2.3
  跳转逻辑
  ...
parents 079fc07c 18c8e063
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
0414BDA92BC7E81500225367 /* YHMyPermissionSettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDA82BC7E81500225367 /* YHMyPermissionSettingVC.swift */; }; 0414BDA92BC7E81500225367 /* YHMyPermissionSettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDA82BC7E81500225367 /* YHMyPermissionSettingVC.swift */; };
0414BDAB2BC7E9C200225367 /* YHMyPermissionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDAA2BC7E9C200225367 /* YHMyPermissionCell.swift */; }; 0414BDAB2BC7E9C200225367 /* YHMyPermissionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDAA2BC7E9C200225367 /* YHMyPermissionCell.swift */; };
0414BDAD2BC7F02C00225367 /* YHMyNotifySettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDAC2BC7F02C00225367 /* YHMyNotifySettingVC.swift */; }; 0414BDAD2BC7F02C00225367 /* YHMyNotifySettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDAC2BC7F02C00225367 /* YHMyNotifySettingVC.swift */; };
0414BDB22BCCC0A500225367 /* YHCollectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0414BDB12BCCC0A500225367 /* YHCollectionModel.swift */; };
041B52872B5657B3007EBCEB /* IMAppKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041B52862B5657B3007EBCEB /* IMAppKey.swift */; }; 041B52872B5657B3007EBCEB /* IMAppKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041B52862B5657B3007EBCEB /* IMAppKey.swift */; };
0425E63D2BA9345200A5E763 /* YHSchemeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */; }; 0425E63D2BA9345200A5E763 /* YHSchemeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */; };
0425E6402BA9357D00A5E763 /* YHScemeItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */; }; 0425E6402BA9357D00A5E763 /* YHScemeItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */; };
...@@ -450,6 +451,7 @@ ...@@ -450,6 +451,7 @@
0414BDA82BC7E81500225367 /* YHMyPermissionSettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyPermissionSettingVC.swift; sourceTree = "<group>"; }; 0414BDA82BC7E81500225367 /* YHMyPermissionSettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyPermissionSettingVC.swift; sourceTree = "<group>"; };
0414BDAA2BC7E9C200225367 /* YHMyPermissionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyPermissionCell.swift; sourceTree = "<group>"; }; 0414BDAA2BC7E9C200225367 /* YHMyPermissionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyPermissionCell.swift; sourceTree = "<group>"; };
0414BDAC2BC7F02C00225367 /* YHMyNotifySettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyNotifySettingVC.swift; sourceTree = "<group>"; }; 0414BDAC2BC7F02C00225367 /* YHMyNotifySettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyNotifySettingVC.swift; sourceTree = "<group>"; };
0414BDB12BCCC0A500225367 /* YHCollectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCollectionModel.swift; sourceTree = "<group>"; };
041B52862B5657B3007EBCEB /* IMAppKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMAppKey.swift; sourceTree = "<group>"; }; 041B52862B5657B3007EBCEB /* IMAppKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMAppKey.swift; sourceTree = "<group>"; };
0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSchemeTableViewCell.swift; sourceTree = "<group>"; }; 0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSchemeTableViewCell.swift; sourceTree = "<group>"; };
0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHScemeItemModel.swift; sourceTree = "<group>"; }; 0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHScemeItemModel.swift; sourceTree = "<group>"; };
...@@ -893,6 +895,14 @@ ...@@ -893,6 +895,14 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
0414BDB02BCCC09000225367 /* Model */ = {
isa = PBXGroup;
children = (
0414BDB12BCCC0A500225367 /* YHCollectionModel.swift */,
);
path = Model;
sourceTree = "<group>";
};
041B52852B565798007EBCEB /* IM */ = { 041B52852B565798007EBCEB /* IM */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -1924,6 +1934,7 @@ ...@@ -1924,6 +1934,7 @@
A5ACE8E72B4564F7002C94D2 /* Mine(我的) */ = { A5ACE8E72B4564F7002C94D2 /* Mine(我的) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0414BDB02BCCC09000225367 /* Model */,
048B2A4B2BC7DACF00A93BF0 /* ViewModel */, 048B2A4B2BC7DACF00A93BF0 /* ViewModel */,
A5ACE8EB2B4564F7002C94D2 /* V */, A5ACE8EB2B4564F7002C94D2 /* V */,
A5ACE8E92B4564F7002C94D2 /* C */, A5ACE8E92B4564F7002C94D2 /* C */,
...@@ -2184,12 +2195,12 @@ ...@@ -2184,12 +2195,12 @@
A5ACE95B2B45712D002C94D2 /* V */ = { A5ACE95B2B45712D002C94D2 /* V */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A5C5B30F2B57677300A7C5D1 /* YHGestureTableView.swift */,
044413F82BC279D200784A14 /* YHHomeWebBottomView.swift */, 044413F82BC279D200784A14 /* YHHomeWebBottomView.swift */,
044413FA2BC27E6F00784A14 /* YHHomeWebBottomButton.swift */, 044413FA2BC27E6F00784A14 /* YHHomeWebBottomButton.swift */,
A501BE652BC2B76200C4F1FB /* YHHomeHeadView.swift */, A501BE652BC2B76200C4F1FB /* YHHomeHeadView.swift */,
A5C5B2FA2B5535DF00A7C5D1 /* YHHomeBannerView.swift */, A5C5B2FA2B5535DF00A7C5D1 /* YHHomeBannerView.swift */,
A501BE672BC2B85F00C4F1FB /* YHHomeSearchView.swift */, A501BE672BC2B85F00C4F1FB /* YHHomeSearchView.swift */,
A5C5B30F2B57677300A7C5D1 /* YHGestureTableView.swift */,
044E1E862BC3D00E00A3B4AF /* YHSearchItemLayout.swift */, 044E1E862BC3D00E00A3B4AF /* YHSearchItemLayout.swift */,
044E1E822BC3BBFC00A3B4AF /* YHSearchInfoHistoryView.swift */, 044E1E822BC3BBFC00A3B4AF /* YHSearchInfoHistoryView.swift */,
044E1E842BC3BEC300A3B4AF /* YHSearchInfoHistoryCell.swift */, 044E1E842BC3BEC300A3B4AF /* YHSearchInfoHistoryCell.swift */,
...@@ -2719,6 +2730,7 @@ ...@@ -2719,6 +2730,7 @@
04A7BD132BA42F4200BD35A2 /* YHMyDocumentsDetailViewController.swift in Sources */, 04A7BD132BA42F4200BD35A2 /* YHMyDocumentsDetailViewController.swift in Sources */,
04A671622BA058DE00C1FB91 /* YHCertificateEditSheetView.swift in Sources */, 04A671622BA058DE00C1FB91 /* YHCertificateEditSheetView.swift in Sources */,
A5ACE9432B4564F7002C94D2 /* UILable+Extension.swift in Sources */, A5ACE9432B4564F7002C94D2 /* UILable+Extension.swift in Sources */,
0414BDB22BCCC0A500225367 /* YHCollectionModel.swift in Sources */,
A53D38202BC243F1006AE6F7 /* YHStartPageViewController.swift in Sources */, A53D38202BC243F1006AE6F7 /* YHStartPageViewController.swift in Sources */,
045EEE882B9F171A0022A143 /* YHPreviewAcademicAndProfessionalQualificationViewController.swift in Sources */, 045EEE882B9F171A0022A143 /* YHPreviewAcademicAndProfessionalQualificationViewController.swift in Sources */,
0435FA7F2BA178C100024EAE /* YHCommonAlertView.swift in Sources */, 0435FA7F2BA178C100024EAE /* YHCommonAlertView.swift in Sources */,
......
...@@ -124,7 +124,10 @@ extension AppDelegate { ...@@ -124,7 +124,10 @@ extension AppDelegate {
//1.设置主窗口 //1.设置主窗口
private func setupRootVC() { private func setupRootVC() {
let tabBarController = YHTabBarViewController() let tabBarController = YHTabBarViewController()
let v0 = YHNavigationController(rootVC:YHHomePageViewController())
let homeVC = YHHomePageViewController()
tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceViewController()) let v1 = YHNavigationController(rootVC:YHServiceViewController())
let v2 = YHNavigationController(rootVC:YHMsgViewController()) let v2 = YHNavigationController(rootVC:YHMsgViewController())
let v3 = YHNavigationController(rootVC:YHMyViewController()) let v3 = YHNavigationController(rootVC:YHMyViewController())
......
...@@ -53,13 +53,15 @@ extension YHFourKingViewController { ...@@ -53,13 +53,15 @@ extension YHFourKingViewController {
for item in classify { for item in classify {
let model = item as YHHomeClassifyModel let model = item as YHHomeClassifyModel
if model.id == self.id { if model.id == self.id {
gk_navTitle = model.name if self.classId == 0 {
self.sectionView.items = model.children gk_navTitle = model.name
let classifyID = model.children.first?.id ?? 0 self.sectionView.items = model.children
self.classId = classifyID let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in self.classId = classifyID
guard let self = self else { return } self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? [] guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
}
} }
} }
} }
...@@ -120,6 +122,9 @@ extension YHFourKingViewController : UITableViewDelegate,UITableViewDataSource { ...@@ -120,6 +122,9 @@ extension YHFourKingViewController : UITableViewDelegate,UITableViewDataSource {
} }
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if sectionView.items.count == 1 {
return 0
}
return 48 return 48
} }
......
...@@ -41,7 +41,6 @@ class YHHomePageViewController: YHBaseViewController { ...@@ -41,7 +41,6 @@ class YHHomePageViewController: YHBaseViewController {
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
loadFirstData()
} }
lazy var searchView: YHHomeSearchView = { lazy var searchView: YHHomeSearchView = {
...@@ -55,6 +54,10 @@ class YHHomePageViewController: YHBaseViewController { ...@@ -55,6 +54,10 @@ class YHHomePageViewController: YHBaseViewController {
let view = YHHomeHeadView() let view = YHHomeHeadView()
return view return view
}() }()
var tapTimestamp : CFAbsoluteTime = -10.0
} }
private extension YHHomePageViewController { private extension YHHomePageViewController {
...@@ -78,11 +81,9 @@ private extension YHHomePageViewController { ...@@ -78,11 +81,9 @@ private extension YHHomePageViewController {
guard let self = self else { return } guard let self = self else { return }
homeCollectView.es.stopLoadingMore() homeCollectView.es.stopLoadingMore()
if self.viewModel.hasMoreForHomeNews == false { if self.viewModel.hasMoreForHomeNews == false {
homeCollectView.es.noticeNoMoreData() homeCollectView.es.noticeNoMoreData()
} }
self.homeCollectView.reloadData() self.homeCollectView.reloadData()
} }
} }
...@@ -95,7 +96,6 @@ private extension YHHomePageViewController { ...@@ -95,7 +96,6 @@ private extension YHHomePageViewController {
if self.viewModel.hasMoreForHomeNews == false { if self.viewModel.hasMoreForHomeNews == false {
homeCollectView.es.noticeNoMoreData() homeCollectView.es.noticeNoMoreData()
} }
self.homeCollectView.reloadData() self.homeCollectView.reloadData()
} }
} }
...@@ -104,8 +104,6 @@ private extension YHHomePageViewController { ...@@ -104,8 +104,6 @@ private extension YHHomePageViewController {
gk_navigationBar.isHidden = true gk_navigationBar.isHidden = true
view.backgroundColor = .white view.backgroundColor = .white
NotificationCenter.default.addObserver(self, selector: #selector(homepageRefresh), name:YhConstant.YhNotification.refreshHomePageNotifiction, object: nil)
view.addSubview(searchView) view.addSubview(searchView)
searchView.snp.makeConstraints { make in searchView.snp.makeConstraints { make in
make.top.equalTo(k_Height_safeAreaInsetsTop() + 6) make.top.equalTo(k_Height_safeAreaInsetsTop() + 6)
...@@ -156,11 +154,25 @@ extension YHHomePageViewController: UICollectionViewDelegate, UICollectionViewDa ...@@ -156,11 +154,25 @@ extension YHHomePageViewController: UICollectionViewDelegate, UICollectionViewDa
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let model = self.viewModel.arrHomeNewsData?[indexPath.row] else { return } guard let model = self.viewModel.arrHomeNewsData?[indexPath.row] else { return }
if model.type == 2 {
let vc = YHHomeWebViewController() let vc = YHHomeWebViewController()
vc.url = YHConfigManager.shared.h5Url + "?id=\(model.id)" vc.url = YHConfigManager.shared.h5Url + "?id=\(model.id)"
vc.id = model.id vc.id = model.id
self.navigationController?.pushViewController(vc) vc.block = { item in
if let arr = self.viewModel.arrHomeNewsData {
for (index,targetItem) in arr.enumerated() {
if targetItem.id == item.id {
targetItem.is_like = item.is_like
targetItem.like_count = item.like_count
self.homeCollectView.reloadItems(at: [IndexPath.SubSequence(item: index, section: 0)])
}
}
}
}
self.navigationController?.pushViewController(vc)
} else if model.type == 1 {
printLog("直接播放视频")
}
} }
} }
...@@ -170,3 +182,21 @@ extension YHHomePageViewController : CollectionViewWaterfallLayoutDelegate { ...@@ -170,3 +182,21 @@ extension YHHomePageViewController : CollectionViewWaterfallLayoutDelegate {
return CGSize(width: model.img_width_cell, height: model.img_height_cell) return CGSize(width: model.img_width_cell, height: model.img_height_cell)
} }
} }
extension YHHomePageViewController : UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
let doubleTapInterval : CGFloat = 0.3
if tabBarController.selectedIndex == 0 {
let timestamp = CFAbsoluteTimeGetCurrent()
printLog(timestamp - self.tapTimestamp)
if timestamp - self.tapTimestamp < doubleTapInterval {
UIView.animate(withDuration: 0.25) {
self.homeCollectView.contentOffset = CGPoint(x: 0, y: -YHHomeHeadView.viewH)//置顶功能
}
}
self.tapTimestamp = timestamp
}
}
}
...@@ -10,8 +10,14 @@ import UIKit ...@@ -10,8 +10,14 @@ import UIKit
import WebKit import WebKit
class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationDelegate { class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationDelegate {
var operationFlag:Bool = false
typealias Block = (YHWebModel) -> ()
var block: Block?
var viewModel: YHHomeWebViewModel! var viewModel: YHHomeWebViewModel!
var webview = WKWebView() var webview = WKWebView()
var progBar = UIProgressView() var progBar = UIProgressView()
var bottomView: YHHomeWebBottomView! var bottomView: YHHomeWebBottomView!
...@@ -60,16 +66,22 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD ...@@ -60,16 +66,22 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
self.viewModel.getLike(self.id, 1) {[weak self] success, error in self.viewModel.getLike(self.id, 1) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if success { if success {
operationFlag = true
YHHUD.flash(message: "已点赞") YHHUD.flash(message: "已点赞")
self.getData() self.getData()
} else {
operationFlag = false
} }
} }
} else { } else {
self.viewModel.getLike(self.id, 0) {[weak self] success, error in self.viewModel.getLike(self.id, 0) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if success { if success {
operationFlag = true
YHHUD.flash(message: "已取消点赞") YHHUD.flash(message: "已取消点赞")
self.getData() self.getData()
} else {
operationFlag = false
} }
} }
} }
...@@ -87,16 +99,22 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD ...@@ -87,16 +99,22 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
self.viewModel.getStar(self.id, 1) {[weak self] success, error in self.viewModel.getStar(self.id, 1) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if success { if success {
operationFlag = true
YHHUD.flash(message: "已收藏") YHHUD.flash(message: "已收藏")
self.getData() self.getData()
} else {
operationFlag = false
} }
} }
} else { } else {
self.viewModel.getStar(self.id, 0) {[weak self] success, error in self.viewModel.getStar(self.id, 0) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if success { if success {
operationFlag = true
YHHUD.flash(message: "已取消收藏") YHHUD.flash(message: "已取消收藏")
self.getData() self.getData()
} else {
operationFlag = false
} }
} }
} }
...@@ -132,11 +150,17 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD ...@@ -132,11 +150,17 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
func getData() { func getData() {
viewModel.getWebDetail(self.id) {[weak self] success, error in viewModel.getWebDetail(self.id) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
guard let model = self.viewModel.mainModel else { return } if success {
bottomView.likeCount = model.like_count guard let model = self.viewModel.mainModel else { return }
bottomView.starCount = model.collect_count bottomView.likeCount = model.like_count
bottomView.isStar = model.is_collect bottomView.starCount = model.collect_count
bottomView.isLike = model.is_like bottomView.isStar = model.is_collect
bottomView.isLike = model.is_like
if operationFlag {
self.block?(model)
}
}
} }
} }
......
...@@ -12,6 +12,7 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -12,6 +12,7 @@ class YHSearchInfomationVC: YHBaseViewController {
static let searchInfoHistoryKey = "searchInfoHistoryKey" static let searchInfoHistoryKey = "searchInfoHistoryKey"
static let searchHistoryMaxCount = 10 static let searchHistoryMaxCount = 10
var searchStr = ""
var items:[YHHomeListModel] = [] var items:[YHHomeListModel] = []
lazy var viewModel: YHHomePageViewModel = { lazy var viewModel: YHHomePageViewModel = {
...@@ -39,9 +40,16 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -39,9 +40,16 @@ class YHSearchInfomationVC: YHBaseViewController {
bar.searchBlock = { bar.searchBlock = {
[weak self] text in [weak self] text in
guard let self = self else { return } guard let self = self else { return }
searchText(self.searchBar.textField.text ?? "") searchStr = self.searchBar.textField.text ?? ""
if let searchText = self.searchBar.textField.text, searchText.count > 0 { searchStr = searchStr.trimmingCharacters(in: .whitespaces)
self.saveSearchHistory(searchText)
if isEmptyString(searchStr) {
searchStr = "香港身份"
self.searchBar.textField.text = "香港身份"
}
searchText()
if searchStr.count > 0 {
self.saveSearchHistory(searchStr)
} }
} }
bar.textChange = { bar.textChange = {
...@@ -73,6 +81,12 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -73,6 +81,12 @@ class YHSearchInfomationVC: YHBaseViewController {
tableView.backgroundColor = .white tableView.backgroundColor = .white
tableView.backgroundView = emptyDataTipsView tableView.backgroundView = emptyDataTipsView
tableView.register(YHSearchInfoCell.self, forCellReuseIdentifier: YHSearchInfoCell.cellReuseIdentifier) tableView.register(YHSearchInfoCell.self, forCellReuseIdentifier: YHSearchInfoCell.cellReuseIdentifier)
tableView.es.addPullToRefresh {
self.loadFirstData()
}
tableView.es.addInfiniteScrolling {
self.loadMoreData()
}
return tableView return tableView
}() }()
...@@ -84,7 +98,8 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -84,7 +98,8 @@ class YHSearchInfomationVC: YHBaseViewController {
guard let self = self else { return } guard let self = self else { return }
self.searchHistoryView.isHidden = true self.searchHistoryView.isHidden = true
self.searchBar.textField.text = text self.searchBar.textField.text = text
searchText(text) self.searchStr = text
searchText()
self.saveSearchHistory(text) self.saveSearchHistory(text)
} }
return view return view
...@@ -159,12 +174,14 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -159,12 +174,14 @@ class YHSearchInfomationVC: YHBaseViewController {
} }
} }
func searchText(_ text:String) { func searchText() {
self.tableView.scrollToTop()
YHHUD.show(.progress(message: "搜索中...")) YHHUD.show(.progress(message: "搜索中..."))
self.viewModel.searchArticleList(text) { viewModel.searchArticleList(self.searchStr, isFirstPage : true) {
[weak self] success, error in [weak self] success, error in
YHHUD.hide() YHHUD.hide()
guard let self = self else { return } guard let self = self else { return }
items.removeAll() items.removeAll()
if let arr = self.viewModel.arrHomeNewsData { if let arr = self.viewModel.arrHomeNewsData {
items.append(contentsOf: arr) items.append(contentsOf: arr)
...@@ -172,6 +189,49 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -172,6 +189,49 @@ class YHSearchInfomationVC: YHBaseViewController {
emptyDataTipsView.isHidden = (items.count > 0) emptyDataTipsView.isHidden = (items.count > 0)
searchHistoryView.isHidden = true searchHistoryView.isHidden = true
self.tableView.reloadData() self.tableView.reloadData()
tableView.es.stopPullToRefresh()
if self.viewModel.hasMoreForHomeNews == false {
tableView.es.noticeNoMoreData()
}
}
}
func loadMoreData() {
viewModel.searchArticleList(self.searchStr, isFirstPage : false) {
[weak self] success, error in
guard let self = self else { return }
items.removeAll()
if let arr = self.viewModel.arrHomeNewsData {
items.append(contentsOf: arr)
}
emptyDataTipsView.isHidden = (items.count > 0)
searchHistoryView.isHidden = true
self.tableView.reloadData()
tableView.es.stopLoadingMore()
if self.viewModel.hasMoreForHomeNews == false {
tableView.es.noticeNoMoreData()
}
}
}
func loadFirstData() {
viewModel.searchArticleList(self.searchStr, isFirstPage : true) {
[weak self] success, error in
guard let self = self else { return }
items.removeAll()
if let arr = self.viewModel.arrHomeNewsData {
items.append(contentsOf: arr)
}
emptyDataTipsView.isHidden = (items.count > 0)
searchHistoryView.isHidden = true
self.tableView.reloadData()
tableView.es.stopPullToRefresh()
if self.viewModel.hasMoreForHomeNews == false {
tableView.es.noticeNoMoreData()
}
} }
} }
...@@ -187,10 +247,13 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -187,10 +247,13 @@ class YHSearchInfomationVC: YHBaseViewController {
if isEmptyString(text) { return } if isEmptyString(text) { return }
var arr = getSearchHistoryList() var arr = getSearchHistoryList()
// 去除两端的空格
let targetText = text.trimmingCharacters(in: .whitespaces)
// 查找历史记录中是否有相同记录 // 查找历史记录中是否有相同记录
var targetIndex = -1 var targetIndex = -1
for (index, history) in arr.enumerated() { for (index, history) in arr.enumerated() {
if history == text { if history == targetText {
targetIndex = index targetIndex = index
break break
} }
...@@ -202,9 +265,9 @@ class YHSearchInfomationVC: YHBaseViewController { ...@@ -202,9 +265,9 @@ class YHSearchInfomationVC: YHBaseViewController {
// 将最近记录放在第一位 // 将最近记录放在第一位
if arr.count < Self.searchHistoryMaxCount { if arr.count < Self.searchHistoryMaxCount {
arr.insert(text, at: 0) arr.insert(targetText, at: 0)
} else { } else {
arr.insert(text, at: 0) arr.insert(targetText, at: 0)
arr.removeLast() arr.removeLast()
} }
UserDefaults.standard.set(arr, forKey: Self.searchInfoHistoryKey) UserDefaults.standard.set(arr, forKey: Self.searchInfoHistoryKey)
...@@ -233,7 +296,7 @@ extension YHSearchInfomationVC: UITableViewDelegate, UITableViewDataSource { ...@@ -233,7 +296,7 @@ extension YHSearchInfomationVC: UITableViewDelegate, UITableViewDataSource {
if 0 <= indexPath.section && indexPath.section < items.count { if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section] let item = items[indexPath.section]
cell.updateModel(item) cell.updateModel(item)
cell.renderHighLightText(self.searchBar.textField.text ?? "") cell.renderHighLightText(searchStr)
} }
return cell return cell
} }
......
...@@ -26,7 +26,7 @@ class YHStartPageViewController: UIViewController { ...@@ -26,7 +26,7 @@ class YHStartPageViewController: UIViewController {
lazy var closeBtn: UIButton = { lazy var closeBtn: UIButton = {
let button = UIButton(type: .custom) let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 12) button.titleLabel?.font = UIFont.PFSC_R(ofSize: 12)
button.setTitle("跳过 5", for: .normal) button.setTitle("跳过 3", for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal) button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.setBackgroundColor(color: UIColor(red: 0.071, green: 0.102, blue: 0.149, alpha: 0.3), forState: .normal) button.setBackgroundColor(color: UIColor(red: 0.071, green: 0.102, blue: 0.149, alpha: 0.3), forState: .normal)
return button return button
...@@ -98,7 +98,9 @@ private extension YHStartPageViewController { ...@@ -98,7 +98,9 @@ private extension YHStartPageViewController {
//1.设置主窗口 //1.设置主窗口
func setupRootVC() { func setupRootVC() {
let tabBarController = YHTabBarViewController() let tabBarController = YHTabBarViewController()
let v0 = YHNavigationController(rootVC:YHHomePageViewController()) let homeVC = YHHomePageViewController()
tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceViewController()) let v1 = YHNavigationController(rootVC:YHServiceViewController())
let v2 = YHNavigationController(rootVC:YHMsgViewController()) let v2 = YHNavigationController(rootVC:YHMsgViewController())
let v3 = YHNavigationController(rootVC:YHMyViewController()) let v3 = YHNavigationController(rootVC:YHMyViewController())
......
...@@ -16,4 +16,16 @@ class YHBannerModel: YHBaseModel { ...@@ -16,4 +16,16 @@ class YHBannerModel: YHBaseModel {
var create_at: String = "" var create_at: String = ""
var skip_type: Int = 0 var skip_type: Int = 0
var id: Int = 0 var id: Int = 0
//是否为本地
var isLocalItemFlag : Bool = false
//
static func localDefaultItem() -> YHBannerModel {
let model = YHBannerModel()
model.isLocalItemFlag = true
model.img_url = "home_banner_default_icon"
model.type = 0
return model
}
} }
...@@ -18,12 +18,12 @@ class YHHomeListModel: YHBaseModel { ...@@ -18,12 +18,12 @@ class YHHomeListModel: YHBaseModel {
var id: Int = 0 var id: Int = 0
var title: String = "" var title: String = ""
var content: String = "" var content: String = ""
var view_count: Int = 0 var view_count: Int = 0 //浏览数量
var img_url: String = "" var img_url: String = ""
var type: Int = 0 //文章类型 '文章类型 1视频 2图文 3图片', var type: Int = 0 //文章类型 '文章类型 1视频 2图文 3图片',
var is_like : Bool = false var is_like : Bool = false
var media_url : String = "" var media_url : String = ""
var like_count : Int = 0 var like_count : Int = 0 //点赞梳理
......
...@@ -75,9 +75,20 @@ private extension YHHomeBannerCollectionViewCell { ...@@ -75,9 +75,20 @@ private extension YHHomeBannerCollectionViewCell {
func updateUI() { func updateUI() {
guard let model = dataModel else { return } guard let model = dataModel else { return }
if let url = URL(string: model.img_url) {
bannerImagV.kf.setImage(with: url) if model.isLocalItemFlag {
bannerTitleLable.isHidden = true
effectV.isHidden = true
bannerImagV.image = UIImage(named: model.img_url)
} else {
bannerTitleLable.isHidden = false
effectV.isHidden = false
if let url = URL(string: model.img_url) {
bannerImagV.kf.setImage(with: url)
}
bannerTitleLable.text = model.name
} }
bannerTitleLable.text = model.name
} }
} }
...@@ -75,6 +75,7 @@ extension YHHomeBannerIndicatorView { ...@@ -75,6 +75,7 @@ extension YHHomeBannerIndicatorView {
make.top.bottom.equalToSuperview() make.top.bottom.equalToSuperview()
make.width.equalTo(16) make.width.equalTo(16)
} }
view.backgroundColor = selectedColor
} else if i == indicatorItems - 1 { } else if i == indicatorItems - 1 {
view.snp.makeConstraints { make in view.snp.makeConstraints { make in
make.left.equalTo(tagView!.snp.right).offset(3) make.left.equalTo(tagView!.snp.right).offset(3)
......
...@@ -106,6 +106,9 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -106,6 +106,9 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
return return
} }
let model = dataArr[index] let model = dataArr[index]
if model.isLocalItemFlag {
return
}
if model.skip_url.isEmpty == false { if model.skip_url.isEmpty == false {
switch model.skip_type { switch model.skip_type {
case 1: //跳转H5 case 1: //跳转H5
......
...@@ -36,7 +36,7 @@ private extension YHHomeSearchView { ...@@ -36,7 +36,7 @@ private extension YHHomeSearchView {
let lable = UILabel() let lable = UILabel()
lable.text = "大家正在搜香港身份" lable.text = "香港身份"
lable.font = UIFont.PFSC_R(ofSize: 12) lable.font = UIFont.PFSC_R(ofSize: 12)
lable.textColor = UIColor(hex: 0x94A3B8, alpha: 1.0) lable.textColor = UIColor(hex: 0x94A3B8, alpha: 1.0)
addSubview(lable) addSubview(lable)
......
...@@ -37,7 +37,7 @@ class YHSearchInfoBar: UIView { ...@@ -37,7 +37,7 @@ class YHSearchInfoBar: UIView {
lazy var textField:UITextField = { lazy var textField:UITextField = {
let textField = UITextField() let textField = UITextField()
textField.backgroundColor = .clear textField.backgroundColor = .clear
textField.attributedPlaceholder = NSAttributedString(string: "大家正在搜香港身份".local, attributes: [NSAttributedString.Key.foregroundColor : UIColor(hex: 0x94A3B8)]) textField.attributedPlaceholder = NSAttributedString(string: "香港身份".local, attributes: [NSAttributedString.Key.foregroundColor : UIColor(hex: 0x94A3B8)])
textField.font = UIFont.PFSC_M(ofSize: 12) textField.font = UIFont.PFSC_M(ofSize: 12)
textField.tintColor = UIColor(hex: 0x3570DC) textField.tintColor = UIColor(hex: 0x3570DC)
textField.textColor = UIColor(hexString: "#121A26") textField.textColor = UIColor(hexString: "#121A26")
......
...@@ -17,7 +17,7 @@ class YHHomePageViewModel : YHBaseViewModel { ...@@ -17,7 +17,7 @@ class YHHomePageViewModel : YHBaseViewModel {
var hkList: [YHHKEventModel]? var hkList: [YHHKEventModel]?
//首页相关参数 //首页相关参数
private var curPageIndex : Int = 1 private var curPageIndex : Int = 1
private var page_Size : Int = 10 private var page_Size : Int = 6
private var totalCount : Int = 0 private var totalCount : Int = 0
var hasMoreForHomeNews : Bool = true var hasMoreForHomeNews : Bool = true
} }
...@@ -70,6 +70,7 @@ extension YHHomePageViewModel { ...@@ -70,6 +70,7 @@ extension YHHomePageViewModel {
return return
} }
for item in result.data { for item in result.data {
item.calHeightParam() item.calHeightParam()
} }
...@@ -77,7 +78,9 @@ extension YHHomePageViewModel { ...@@ -77,7 +78,9 @@ extension YHHomePageViewModel {
if firstPageFlag { if firstPageFlag {
self.totalCount = result.total self.totalCount = result.total
self.arrHomeNewsData = result.data self.arrHomeNewsData = result.data
curPageIndex = 1
} else { } else {
curPageIndex = curPageIndex + 1
self.arrHomeNewsData?.append(contentsOf: result.data) self.arrHomeNewsData?.append(contentsOf: result.data)
} }
...@@ -111,16 +114,41 @@ extension YHHomePageViewModel { ...@@ -111,16 +114,41 @@ extension YHHomePageViewModel {
if json.code == 200 { if json.code == 200 {
let dic = json.data let dic = json.data
guard let result = [YHBannerModel].deserialize(from: dic as? [Any]) else { guard let result = [YHBannerModel].deserialize(from: dic as? [Any]) else {
let model = YHBannerModel.localDefaultItem()
self.banners?.removeAll()
self.banners = [model]
callBackBlock(false,nil) callBackBlock(false,nil)
return return
} }
self.banners = result as? [YHBannerModel]
var arrData = result as? [YHBannerModel]
if let arr = arrData {
if arr.isEmpty {
let model = YHBannerModel.localDefaultItem()
arrData = [model]
} else if arr.count > 10 {
arrData = Array(arrData?[0...9] ?? [])
}
}
self.banners = arrData
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let model = YHBannerModel.localDefaultItem()
self.banners?.removeAll()
self.banners = [model]
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error) callBackBlock(false, error)
} }
} failBlock: { err in } failBlock: { err in
let model = YHBannerModel.localDefaultItem()
self.banners?.removeAll()
self.banners = [model]
callBackBlock(false,err) callBackBlock(false,err)
} }
} }
...@@ -160,6 +188,7 @@ extension YHHomePageViewModel { ...@@ -160,6 +188,7 @@ extension YHHomePageViewModel {
params = ["page": curPageIndex + 1, params = ["page": curPageIndex + 1,
"page_size": page_Size, "page_size": page_Size,
"classify_id[0]": classifyID] "classify_id[0]": classifyID]
curPageIndex = curPageIndex + 1
} }
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
...@@ -226,34 +255,61 @@ extension YHHomePageViewModel { ...@@ -226,34 +255,61 @@ extension YHHomePageViewModel {
} }
// 搜索 // 搜索
func searchArticleList(_ title: String, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) { func searchArticleList(_ title: String, isFirstPage:Bool, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let params: [String : Any] = ["page": 1,
"page_size": 10, var params: [String : Any] = [:]
"title": title]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article if isFirstPage {
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in curPageIndex = 1
guard let self = self else { return } params = ["page": curPageIndex,
//1. json字符串 转 对象 "page_size": 10,
if json.code == 200 { "title": title]
let dic = json.data } else {
guard let result = YHHomeListTotalModel.deserialize(from: dic as? Dictionary) else { params = ["page": curPageIndex + 1,
self.arrHomeNewsData = [] "page_size": 10,
callBackBlock(false,nil) "title": title]
return }
} let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
for item in result.data { guard let self = self else { return }
item.calHeightParam() //1. json字符串 转 对象
} if json.code == 200 {
let dic = json.data
guard let result = YHHomeListTotalModel.deserialize(from: dic as? Dictionary) else {
self.arrHomeNewsData = []
callBackBlock(false,nil)
return
}
for item in result.data {
item.calHeightParam()
}
if isFirstPage {
self.totalCount = result.total
self.arrHomeNewsData = result.data self.arrHomeNewsData = result.data
callBackBlock(true, nil) curPageIndex = 1
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) curPageIndex = curPageIndex + 1
callBackBlock(false, error) self.arrHomeNewsData?.append(contentsOf: result.data)
} }
} failBlock: { err in
callBackBlock(false,err) if let count = self.arrHomeNewsData?.count {
if count == self.totalCount {
self.hasMoreForHomeNews = false
} else {
self.hasMoreForHomeNews = true
}
}
callBackBlock(true, nil)
} else {
self.arrHomeNewsData = []
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
} }
} failBlock: { err in
self.arrHomeNewsData = []
callBackBlock(false,err)
} }
}
} }
...@@ -60,13 +60,15 @@ extension YHServerHKLifeViewController { ...@@ -60,13 +60,15 @@ extension YHServerHKLifeViewController {
let model = item as YHHomeClassifyModel let model = item as YHHomeClassifyModel
if model.id == 2 { if model.id == 2 {
self.sectionView.items = model.children self.sectionView.items = model.children
let classifyID = model.children.first?.id ?? 0 if self.classId == 0 {
self.classId = classifyID let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in self.classId = classifyID
guard let self = self else { return } self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? [] guard let self = self else { return }
if self.homeViewModel.hasMoreForHomeNews == false { self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
self.homeTableView.es.noticeNoMoreData() if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
} }
} }
} }
...@@ -107,9 +109,9 @@ extension YHServerHKLifeViewController { ...@@ -107,9 +109,9 @@ extension YHServerHKLifeViewController {
homeTableView.dataSource = self homeTableView.dataSource = self
homeTableView.es.addInfiniteScrolling {[weak self] in homeTableView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return } guard let self = self else { return }
self.homeTableView.es.stopLoadingMore()
self.homeViewModel.getList(false, self.classId) {[weak self] success, error in self.homeViewModel.getList(false, self.classId) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.homeTableView.es.stopLoadingMore()
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? [] self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false { if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData() self.homeTableView.es.noticeNoMoreData()
...@@ -131,6 +133,9 @@ extension YHServerHKLifeViewController : UITableViewDelegate,UITableViewDataSour ...@@ -131,6 +133,9 @@ extension YHServerHKLifeViewController : UITableViewDelegate,UITableViewDataSour
} }
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if sectionView.items.count == 1 {
return 0
}
return 48 return 48
} }
...@@ -154,6 +159,7 @@ extension YHServerHKLifeViewController : UITableViewDelegate,UITableViewDataSour ...@@ -154,6 +159,7 @@ extension YHServerHKLifeViewController : UITableViewDelegate,UITableViewDataSour
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell0 = tableView.dequeueReusableCell(withClass: YHServerHKLifeViewCell.self) let cell0 = tableView.dequeueReusableCell(withClass: YHServerHKLifeViewCell.self)
cell0.tableFootView.items = dataSouce cell0.tableFootView.items = dataSouce
cell0.tableFootView.myCollectView.es.removeRefreshFooter()
cell0.selectionStyle = .none cell0.selectionStyle = .none
return cell0 return cell0
} }
......
...@@ -44,13 +44,15 @@ extension YHServiceListViewController { ...@@ -44,13 +44,15 @@ extension YHServiceListViewController {
let model = item as YHHomeClassifyModel let model = item as YHHomeClassifyModel
if model.id == 1 { if model.id == 1 {
self.normalView.sectionView.items = model.children self.normalView.sectionView.items = model.children
let classifyID = model.children.first?.id ?? 0 if self.classId == 0 {
self.classId = classifyID let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in self.classId = classifyID
guard let self = self else { return } self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? [] guard let self = self else { return }
if self.homeViewModel.hasMoreForHomeNews == false { self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
self.normalView.homeTableView.es.noticeNoMoreData() if self.homeViewModel.hasMoreForHomeNews == false {
self.normalView.homeTableView.es.noticeNoMoreData()
}
} }
} }
} }
...@@ -104,6 +106,7 @@ extension YHServiceListViewController { ...@@ -104,6 +106,7 @@ extension YHServiceListViewController {
guard let self = self else { return } guard let self = self else { return }
self.homeViewModel.getList(false, self.classId) {[weak self] success, error in self.homeViewModel.getList(false, self.classId) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.normalView.homeTableView.es.stopLoadingMore()
self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? [] self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false { if self.homeViewModel.hasMoreForHomeNews == false {
self.normalView.homeTableView.es.noticeNoMoreData() self.normalView.homeTableView.es.noticeNoMoreData()
......
...@@ -13,6 +13,7 @@ class YHCommonAlertView: UIView { ...@@ -13,6 +13,7 @@ class YHCommonAlertView: UIView {
var agreeBlock: AgreeBlock? var agreeBlock: AgreeBlock?
var centerView: UIView! var centerView: UIView!
var titleLabel: UILabel! var titleLabel: UILabel!
var lineView: UIView!
var messageLabel: UILabel! var messageLabel: UILabel!
var agreeButton: UIButton! var agreeButton: UIButton!
var disAgressButton: UIButton! var disAgressButton: UIButton!
...@@ -149,6 +150,17 @@ class YHCommonAlertView: UIView { ...@@ -149,6 +150,17 @@ class YHCommonAlertView: UIView {
make.height.equalTo(45) make.height.equalTo(45)
} }
lineView = {
let line = UIView()
line.backgroundColor = UIColor(hex: 0xF0F0F0)
return line
}()
centerView.addSubview(lineView)
lineView.snp.makeConstraints { make in
make.left.right.equalTo(0)
make.height.equalTo(1)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
} }
@objc func agree() { @objc func agree() {
......
...@@ -92,14 +92,20 @@ extension YHHomeCollectionViewCell { ...@@ -92,14 +92,20 @@ extension YHHomeCollectionViewCell {
@objc func clickPlayButton() { @objc func clickPlayButton() {
guard let listModel = listModel else { return } guard let listModel = listModel else { return }
//"https://upload.cdn.galaxy-immi.com/sell/production/video/1638527500518.mp4"
if listModel.media_url.isEmpty == false,let url = URL(string: listModel.media_url) { if listModel.media_url.isEmpty == false,let url = URL(string: listModel.media_url) {
let player = AVPlayer(url:url) let player = AVPlayer(url:url)
player.isMuted = true
playerViewController.player = player playerViewController.player = player
self.parentViewController?.present(playerViewController, animated: true) { self.parentViewController?.present(playerViewController, animated: true) {
self.playerViewController.player!.play() // 开始播放视频 self.playerViewController.player!.play() // 开始播放视频
} }
DispatchQueue.main.async {
self.viewModel.getWebDetail(listModel.id) { success, error in
}
}
} }
} }
...@@ -178,9 +184,15 @@ extension YHHomeCollectionViewCell { ...@@ -178,9 +184,15 @@ extension YHHomeCollectionViewCell {
heartImageViewBtn.isSelected = listModel.is_like heartImageViewBtn.isSelected = listModel.is_like
if listModel.type == 1 { if listModel.type == 1 {
//视频
playButton.isHidden = false playButton.isHidden = false
let tap = UITapGestureRecognizer(target: self, action: #selector(tapView(gestureRecognizer:)))
contentView.addGestureRecognizer(tap)
} else { } else {
//资讯
playButton.isHidden = true playButton.isHidden = true
contentView.removeGestureRecognizers()
} }
} }
...@@ -194,6 +206,7 @@ extension YHHomeCollectionViewCell { ...@@ -194,6 +206,7 @@ extension YHHomeCollectionViewCell {
if success { if success {
YHHUD.flash(message: "已点赞") YHHUD.flash(message: "已点赞")
listModel.is_like = true listModel.is_like = true
listModel.like_count = listModel.like_count + 1
updataSubViews() updataSubViews()
} }
} }
...@@ -203,16 +216,20 @@ extension YHHomeCollectionViewCell { ...@@ -203,16 +216,20 @@ extension YHHomeCollectionViewCell {
if success { if success {
YHHUD.flash(message: "已取消点赞") YHHUD.flash(message: "已取消点赞")
listModel.is_like = false listModel.is_like = false
listModel.like_count = listModel.like_count - 1
updataSubViews() updataSubViews()
} }
} }
} }
NotificationCenter.default.post(name:YhConstant.YhNotification.refreshHomePageNotifiction, object: nil)
} else { } else {
let vc = UINavigationController(rootVC: YHPhoneLoginViewController()) let vc = UINavigationController(rootVC: YHPhoneLoginViewController())
vc.modalPresentationStyle = .custom vc.modalPresentationStyle = .custom
self.parentViewController?.navigationController?.present(vc, animated: true) self.parentViewController?.navigationController?.present(vc, animated: true)
} }
} }
@objc func tapView(gestureRecognizer:UITapGestureRecognizer) {
clickPlayButton()
}
} }
...@@ -58,6 +58,7 @@ class YHServerNoOrderView: UIView { ...@@ -58,6 +58,7 @@ class YHServerNoOrderView: UIView {
}() }()
tableHeadView = YHServerTableHeadView() tableHeadView = YHServerTableHeadView()
tableHeadView.titleLabel.text = "香港身份攻略"
tableHeadView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 365) tableHeadView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 365)
addSubview(homeTableView) addSubview(homeTableView)
homeTableView.tableHeaderView = tableHeadView homeTableView.tableHeaderView = tableHeadView
...@@ -70,7 +71,6 @@ class YHServerNoOrderView: UIView { ...@@ -70,7 +71,6 @@ class YHServerNoOrderView: UIView {
homeTableView.es.addInfiniteScrolling {[weak self] in homeTableView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return } guard let self = self else { return }
self.homeTableView.es.stopLoadingMore()
if let block = self.loadMoreBlock { if let block = self.loadMoreBlock {
block(YHClassifyModel()) block(YHClassifyModel())
} }
...@@ -90,6 +90,9 @@ extension YHServerNoOrderView : UITableViewDelegate,UITableViewDataSource { ...@@ -90,6 +90,9 @@ extension YHServerNoOrderView : UITableViewDelegate,UITableViewDataSource {
} }
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if sectionView.items.count == 1 {
return 0
}
return 48 return 48
} }
...@@ -113,6 +116,7 @@ extension YHServerNoOrderView : UITableViewDelegate,UITableViewDataSource { ...@@ -113,6 +116,7 @@ extension YHServerNoOrderView : UITableViewDelegate,UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell0 = tableView.dequeueReusableCell(withClass: YHServerHKLifeViewCell.self) let cell0 = tableView.dequeueReusableCell(withClass: YHServerHKLifeViewCell.self)
cell0.tableFootView.items = dataSouce cell0.tableFootView.items = dataSouce
cell0.tableFootView.myCollectView.es.removeRefreshFooter()
cell0.selectionStyle = .none cell0.selectionStyle = .none
return cell0 return cell0
} }
......
...@@ -14,7 +14,7 @@ class YHServiceBannerView: UIView { ...@@ -14,7 +14,7 @@ class YHServiceBannerView: UIView {
// 位置、大小、图片、文本 // 位置、大小、图片、文本
var dataArr: [YHBannerModel] = [] { var dataArr: [YHBannerModel] = [] {
didSet { didSet {
self.pageControl.numberOfPages = self.dataArr.count self.indicatorView.indicatorItems = self.dataArr.count
bannerView.reloadData() bannerView.reloadData()
} }
} }
...@@ -46,6 +46,10 @@ class YHServiceBannerView: UIView { ...@@ -46,6 +46,10 @@ class YHServiceBannerView: UIView {
return view return view
}() }()
lazy var indicatorView : YHHomeBannerIndicatorView = {
let view = YHHomeBannerIndicatorView()
return view
}()
} }
private extension YHServiceBannerView { private extension YHServiceBannerView {
...@@ -60,7 +64,13 @@ private extension YHServiceBannerView { ...@@ -60,7 +64,13 @@ private extension YHServiceBannerView {
make.left.bottom.right.equalToSuperview() make.left.bottom.right.equalToSuperview()
make.height.equalTo(25) make.height.equalTo(25)
} }
setupPageControl() // setupPageControl()
bannerView.addSubview(indicatorView)
indicatorView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.height.equalTo(2)
make.bottom.equalTo(-14)
}
bannerView.reloadData() bannerView.reloadData()
} }
...@@ -133,6 +143,11 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -133,6 +143,11 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
return return
} }
let model = dataArr[index] let model = dataArr[index]
if model.isLocalItemFlag {
return
}
if model.skip_url.isEmpty == false { if model.skip_url.isEmpty == false {
switch model.skip_type { switch model.skip_type {
case 1: //跳转H5 case 1: //跳转H5
...@@ -157,10 +172,10 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -157,10 +172,10 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
} }
func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) { func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
self.pageControl.currentPage = targetIndex self.indicatorView.curIndicatorIndex = targetIndex
} }
func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) { func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
self.pageControl.currentPage = pagerView.currentIndex self.indicatorView.curIndicatorIndex = pagerView.currentIndex
} }
} }
...@@ -79,11 +79,27 @@ extension YHServiceTableFootView: UICollectionViewDelegate, UICollectionViewData ...@@ -79,11 +79,27 @@ extension YHServiceTableFootView: UICollectionViewDelegate, UICollectionViewData
} }
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let model = items[indexPath.row] guard let model = items[indexPath.row] else { return }
let vc = YHHomeWebViewController() if model.type == 2 {
vc.url = "https://test-hkdiy-h5.galaxy-immi.com/articleDetail.html?id=\(model?.id ?? 0)" let vc = YHHomeWebViewController()
vc.id = model?.id ?? 0 vc.url = YHConfigManager.shared.h5Url + "?id=\(model.id)"
UIViewController.current?.navigationController?.pushViewController(vc) vc.id = model.id
vc.block = {[weak self] model in
guard let self = self else { return }
let arr = self.items
for (index, targetItem) in arr.enumerated() {
guard let target = targetItem else { return }
if target.id == model.id {
target.is_like = model.is_like
target.like_count = model.like_count
self.myCollectView.reloadItems(at: [IndexPath.SubSequence(item: index, section: 0)])
}
}
}
UIViewController.current?.navigationController?.pushViewController(vc)
} else if model.type == 1 {
printLog("直接播放视频")
}
} }
} }
......
...@@ -25,6 +25,9 @@ class YHInformationFillVC: YHBaseViewController { ...@@ -25,6 +25,9 @@ class YHInformationFillVC: YHBaseViewController {
bar.rightBtnClick = { bar.rightBtnClick = {
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
YHCommonAlertView.show("清除未读", "确定要清除所有未读提示吗?", "取消", "确认") {
}
} }
return bar return bar
}() }()
......
...@@ -10,7 +10,7 @@ import UIKit ...@@ -10,7 +10,7 @@ import UIKit
class YHMsgViewController: YHBaseViewController { class YHMsgViewController: YHBaseViewController {
var msgArr:[String] = ["","","",""] var msgArr:[String] = ["","",""]
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped) let tableView = UITableView(frame:.zero, style:.grouped)
...@@ -22,6 +22,7 @@ class YHMsgViewController: YHBaseViewController { ...@@ -22,6 +22,7 @@ class YHMsgViewController: YHBaseViewController {
tableView.dataSource = self tableView.dataSource = self
tableView.backgroundColor = .white tableView.backgroundColor = .white
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell") tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.backgroundView = emptyDataTipsView
tableView.register(YHMessageSessionCell.self, forCellReuseIdentifier: YHMessageSessionCell.cellReuseIdentifier) tableView.register(YHMessageSessionCell.self, forCellReuseIdentifier: YHMessageSessionCell.cellReuseIdentifier)
return tableView return tableView
}() }()
...@@ -40,9 +41,39 @@ class YHMsgViewController: YHBaseViewController { ...@@ -40,9 +41,39 @@ class YHMsgViewController: YHBaseViewController {
bar.rightBtnClick = { bar.rightBtnClick = {
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
YHCommonAlertView.show("清除未读", "确定要清除所有未读提示吗?", "取消", "确认") {
}
} }
return bar return bar
}() }()
lazy var emptyDataTipsView:UIView = {
let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 124))
view.isHidden = true
let imgView = UIImageView(image: UIImage(named: "msg_no_data"))
view.addSubview(imgView)
let label = UILabel()
label.textColor = UIColor(hex: 0x94A3B8)
label.font = UIFont.PFSC_R(ofSize: 14)
label.textAlignment = .center
label.text = "暂无新消息".local
view.addSubview(label)
imgView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(204)
make.width.height.equalTo(92)
make.centerX.equalTo(view)
}
label.snp.makeConstraints { make in
make.top.equalTo(imgView.snp.bottom).offset(12)
make.centerX.equalTo(view)
}
return view
}()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
......
...@@ -64,6 +64,12 @@ extension YHMyNotifySettingVC: UITableViewDelegate, UITableViewDataSource { ...@@ -64,6 +64,12 @@ extension YHMyNotifySettingVC: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let url = URL(string: UIApplication.openSettingsURLString)
if let url = url, UIApplication .shared.canOpenURL(url) {
UIApplication .shared.open(url, options: [:], completionHandler: {
(success) in
})
}
} }
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat { private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
......
...@@ -54,6 +54,11 @@ class YHMyPermissionSettingVC: YHBaseViewController { ...@@ -54,6 +54,11 @@ class YHMyPermissionSettingVC: YHBaseViewController {
setupUI() setupUI()
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestPermission()
}
func setupUI() { func setupUI() {
gk_navTitle = "权限设置".local gk_navTitle = "权限设置".local
view.backgroundColor = .white view.backgroundColor = .white
...@@ -63,7 +68,9 @@ class YHMyPermissionSettingVC: YHBaseViewController { ...@@ -63,7 +68,9 @@ class YHMyPermissionSettingVC: YHBaseViewController {
make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar) make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalToSuperview().offset(-k_Height_TabBar) make.bottom.equalToSuperview().offset(-k_Height_TabBar)
} }
}
func requestPermission() {
// 获取相册权限 // 获取相册权限
requestPhotoLibraryPermission { requestPhotoLibraryPermission {
[weak self] grant in [weak self] grant in
......
...@@ -40,6 +40,8 @@ struct PersonalModuleItem { ...@@ -40,6 +40,8 @@ struct PersonalModuleItem {
class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget { class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
let viewModel: YHMyLikeViewModel = YHMyLikeViewModel()
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame: CGRect.zero, style:.grouped) let tableView = UITableView(frame: CGRect.zero, style:.grouped)
if #available(iOS 11.0, *) { if #available(iOS 11.0, *) {
...@@ -61,7 +63,8 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget { ...@@ -61,7 +63,8 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
let version = "app版本号:" + UIDevice.appVersion() + "_" + UIDevice.appBuild() let version = "app版本号:" + UIDevice.appVersion() + "_" + UIDevice.appBuild()
return [PersonalModuleItem(icon: "mine_item_msg", title: "我的消息".local, type:.myMessage), return [
PersonalModuleItem(icon: "mine_item_msg", title: "我的消息".local, type:.myMessage),
PersonalModuleItem(icon: "mine_item_progress", title: "我的进度".local, type:.myProgress), PersonalModuleItem(icon: "mine_item_progress", title: "我的进度".local, type:.myProgress),
PersonalModuleItem(icon: "mine_item_scoreCenter", title: "积分中心".local, type:.scoreCenter), PersonalModuleItem(icon: "mine_item_scoreCenter", title: "积分中心".local, type:.scoreCenter),
PersonalModuleItem(icon: "mine_item_recommend", title: "推荐有礼".local, type:.recommend), PersonalModuleItem(icon: "mine_item_recommend", title: "推荐有礼".local, type:.recommend),
...@@ -129,7 +132,11 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget { ...@@ -129,7 +132,11 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
initView() initView()
return }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestLikeCollectionCount()
} }
@objc func clickBtn() { @objc func clickBtn() {
...@@ -159,51 +166,20 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget { ...@@ -159,51 +166,20 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
} }
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
} }
func openXLSXRemoteFile(urlString: String) { func requestLikeCollectionCount() {
guard let url = URL(string: urlString) else { return }
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let task = session.downloadTask(with: url) { (tempLocalUrl, response, error) in self.viewModel.getLikeCollectionRecentScanCountInfo {
if let tempLocalUrl = tempLocalUrl, error == nil { [weak self] success, error in
// 下载完成,尝试打开文件 guard let self = self else { return }
let fileManager = FileManager.default self.headerView.updateLikeCollectCount(self.viewModel.likeCollectCountInfo)
let destination = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(response?.suggestedFilename ?? UUID().uuidString)
try? fileManager.moveItem(at: tempLocalUrl, to: destination)
// 打开文件
self.openXLSXFile(at: destination)
} else {
print("Error downloading the file: \(error?.localizedDescription ?? "Unknown error")")
}
}
task.resume()
}
func openXLSXFile(at fileURL: URL) {
let controller = UIDocumentInteractionController(url: fileURL)
controller.delegate = self
DispatchQueue.main.async {
controller.presentPreview(animated: true)
} }
} }
} }
extension YHMyViewController: UIDocumentInteractionControllerDelegate {
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return self
}
}
extension YHMyViewController : UITableViewDelegate, UITableViewDataSource { extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
......
//
// YHCollectionModel.swift
// galaxy
//
// Created by edy on 2024/4/15.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
struct YHCollectionModel: SmartCodable {
var myCollectCount: Int = 0
var myLikeCount: Int = 0
var myViewCount: Int = 0
enum CodingKeys: String, CodingKey {
case myCollectCount = "my_collect_count"
case myLikeCount = "my_like_count"
case myViewCount = "my_view_count"
}
}
...@@ -11,6 +11,10 @@ import AttributedString ...@@ -11,6 +11,10 @@ import AttributedString
class YHUserInfoHeaderView: UIView { class YHUserInfoHeaderView: UIView {
static let likeTag = 9527
static let collectTag = 9528
static let scanTag = 9529
var settingBlock:(()->Void)? var settingBlock:(()->Void)?
var evaluateBlock:(()->Void)? var evaluateBlock:(()->Void)?
var avatarClickBlock:(()->Void)? var avatarClickBlock:(()->Void)?
...@@ -50,27 +54,72 @@ class YHUserInfoHeaderView: UIView { ...@@ -50,27 +54,72 @@ class YHUserInfoHeaderView: UIView {
return label return label
}() }()
private lazy var infoLabel:UILabel = { private lazy var likeLabel:UILabel = {
let label = UILabel() let label = UILabel()
label.text = "点赞 0 收藏 0 最近浏览 0".local label.text = "点赞 0".local
label.textColor = UIColor(hexString:"#949DB5") label.textColor = UIColor(hex: 0x949DB5)
label.textAlignment = NSTextAlignment.left label.textAlignment = NSTextAlignment.left
label.font = UIFont.PFSC_R(ofSize: 13) label.font = UIFont.PFSC_R(ofSize: 13)
label.isUserInteractionEnabled = true
let text1: ASAttributedString = .init("点赞 0 ", .font(UIFont.PFSC_R(ofSize: 13)), .foreground(UIColor(hex: 0x949DB5)), .action { label.tag = Self.likeTag
self.likeClick?() let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureRecognizer:)))
}) label.addGestureRecognizer(tap)
let text2: ASAttributedString = .init("收藏 0 ", .font(UIFont.PFSC_R(ofSize: 13)), .foreground(UIColor(hex: 0x949DB5)), .action { return label
self.collectClick?() }()
})
let text3: ASAttributedString = .init("最近浏览 0 ", .font(UIFont.PFSC_R(ofSize: 13)), .foreground(UIColor(hex: 0x949DB5)), .action { private lazy var collectLabel:UILabel = {
self.recentScanClick?() let label = UILabel()
}) label.text = "收藏 0".local
label.textColor = UIColor(hex: 0x949DB5)
label.attributed.text = text1 + text2 + text3 label.textAlignment = NSTextAlignment.left
label.font = UIFont.PFSC_R(ofSize: 13)
label.isUserInteractionEnabled = true
label.tag = Self.collectTag
let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureRecognizer:)))
label.addGestureRecognizer(tap)
return label
}()
private lazy var scanLabel:UILabel = {
let label = UILabel()
label.text = "最近浏览 0".local
label.textColor = UIColor(hex: 0x949DB5)
label.textAlignment = NSTextAlignment.left
label.font = UIFont.PFSC_R(ofSize: 13)
label.isUserInteractionEnabled = true
label.tag = Self.scanTag
let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureRecognizer:)))
label.addGestureRecognizer(tap)
return label return label
}() }()
private lazy var line1View:UIView = {
let line = UIView()
line.backgroundColor = UIColor(hex:0x92959D, alpha: 0.2)
return line
}()
private lazy var line2View:UIView = {
let line = UIView()
line.backgroundColor = UIColor(hex:0x92959D, alpha: 0.2)
return line
}()
@objc func tap(gestureRecognizer:UITapGestureRecognizer) {
if let view = gestureRecognizer.view {
if view.tag == Self.likeTag {
self.likeClick?()
} else if view.tag == Self.collectTag {
self.collectClick?()
} else if view.tag == Self.scanTag {
self.recentScanClick?()
}
}
}
private lazy var evaluateView:UIView = { private lazy var evaluateView:UIView = {
let view = UIView() let view = UIView()
return view return view
...@@ -129,17 +178,36 @@ class YHUserInfoHeaderView: UIView { ...@@ -129,17 +178,36 @@ class YHUserInfoHeaderView: UIView {
return view return view
} }
func updateLikeCollectCount(_ model: YHCollectionModel) {
let likeCount = showCount(model.myLikeCount)
let collectCount = showCount(model.myCollectCount)
let scanCount = showCount(model.myViewCount)
self.likeLabel.text = "点赞 \(likeCount)"
self.collectLabel.text = "收藏 \(collectCount)"
self.scanLabel.text = "最近浏览 \(scanCount)"
}
func showCount(_ count: Int)-> String {
return count < 10000 ? String(count) : String(format: "%.1fw", Double(count/10000))
}
private func createUI() { private func createUI() {
self.addSubview(bgImgView) self.addSubview(bgImgView)
self.addSubview(settingView) self.addSubview(settingView)
settingView.addSubview(settingBtn) settingView.addSubview(settingBtn)
self.addSubview(avarImgView) self.addSubview(avarImgView)
self.addSubview(userNameLabel) self.addSubview(userNameLabel)
self.addSubview(infoLabel)
self.addSubview(likeLabel)
self.addSubview(collectLabel)
self.addSubview(scanLabel)
self.addSubview(line1View)
self.addSubview(line2View)
self.addSubview(evaluateView) self.addSubview(evaluateView)
evaluateView.addSubview(evaluateBgImgView) evaluateView.addSubview(evaluateBgImgView)
evaluateView.addSubview(evaluateLabel) evaluateView.addSubview(evaluateLabel)
...@@ -177,18 +245,47 @@ class YHUserInfoHeaderView: UIView { ...@@ -177,18 +245,47 @@ class YHUserInfoHeaderView: UIView {
make.height.equalTo(25.0) make.height.equalTo(25.0)
} }
infoLabel.snp.makeConstraints { make in likeLabel.snp.makeConstraints { make in
make.left.equalTo(avarImgView) make.left.equalTo(avarImgView)
make.right.equalToSuperview().offset(-30) make.right.equalTo(line1View.snp.left).offset(-12)
make.height.equalTo(15.0) make.height.equalTo(15.0)
make.top.equalTo(userNameLabel.snp.bottom).offset(10) make.top.equalTo(userNameLabel.snp.bottom).offset(10)
} }
likeLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
likeLabel.setContentHuggingPriority(.required, for: .horizontal)
line1View.snp.makeConstraints { make in
make.centerY.equalTo(likeLabel)
make.size.equalTo(CGSize(width: 1, height: 12))
}
collectLabel.snp.makeConstraints { make in
make.left.equalTo(line1View.snp.right).offset(12)
make.right.equalTo(line2View.snp.left).offset(-12)
make.height.equalTo(15.0)
make.top.equalTo(likeLabel)
}
collectLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
collectLabel.setContentHuggingPriority(.required, for: .horizontal)
line2View.snp.makeConstraints { make in
make.centerY.equalTo(likeLabel)
make.size.equalTo(CGSize(width: 1, height: 12))
}
scanLabel.snp.makeConstraints { make in
make.left.equalTo(line2View.snp.right).offset(12)
make.right.equalToSuperview().offset(-31)
make.height.equalTo(15.0)
make.top.equalTo(likeLabel)
}
scanLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
evaluateView.snp.makeConstraints { make in evaluateView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(10) make.left.equalToSuperview().offset(10)
make.right.equalToSuperview().offset(-7) make.right.equalToSuperview().offset(-7)
make.height.equalTo(98) make.height.equalTo(98)
make.top.equalTo(infoLabel.snp.bottom).offset(17.0) make.top.equalTo(likeLabel.snp.bottom).offset(17.0)
} }
evaluateBgImgView.snp.makeConstraints { make in evaluateBgImgView.snp.makeConstraints { make in
......
...@@ -10,9 +10,9 @@ import UIKit ...@@ -10,9 +10,9 @@ import UIKit
class YHMyLikeViewModel: YHBaseViewModel { class YHMyLikeViewModel: YHBaseViewModel {
var arrHomeNewsData: [YHHomeListModel]? var arrHomeNewsData: [YHHomeListModel]?
var likeCollectCountInfo: YHCollectionModel = YHCollectionModel()
private var curPageIndex : Int = 1 private var curPageIndex : Int = 1
private var page_Size : Int = 10 private var page_Size : Int = 6
private var totalCount : Int = 0 private var totalCount : Int = 0
var hasMoreForHomeNews : Bool = true var hasMoreForHomeNews : Bool = true
} }
...@@ -32,6 +32,7 @@ extension YHMyLikeViewModel { ...@@ -32,6 +32,7 @@ extension YHMyLikeViewModel {
params = ["page": curPageIndex + 1, params = ["page": curPageIndex + 1,
"page_size": page_Size, "page_size": page_Size,
"operate_type": type] "operate_type": type]
curPageIndex = curPageIndex + 1
} }
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.user let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.user
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
...@@ -86,6 +87,7 @@ extension YHMyLikeViewModel { ...@@ -86,6 +87,7 @@ extension YHMyLikeViewModel {
} else { } else {
params = ["page": curPageIndex + 1, params = ["page": curPageIndex + 1,
"page_size": page_Size] "page_size": page_Size]
curPageIndex = curPageIndex + 1
} }
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.userLook let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.userLook
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
...@@ -128,4 +130,30 @@ extension YHMyLikeViewModel { ...@@ -128,4 +130,30 @@ extension YHMyLikeViewModel {
callBackBlock(false,err) callBackBlock(false,err)
} }
} }
// 获取点赞、收藏、最近浏览数量
func getLikeCollectionRecentScanCountInfo(callBack:((_ success: Bool,_ error:YHErrorModel?)->())?) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.likeCollect
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
let dic = json.data
guard let result = YHCollectionModel.deserialize(dict: dic as? Dictionary ) else {
let error = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBack?(false, error)
return
}
self.likeCollectCountInfo = result as YHCollectionModel
callBack?(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBack?(false, error)
}
} failBlock: { err in
callBack?(false,err)
}
}
} }
...@@ -32,6 +32,8 @@ class YHAllApiName { ...@@ -32,6 +32,8 @@ class YHAllApiName {
static let userLook = "infoflow/user/view" static let userLook = "infoflow/user/view"
//获取香港办事 //获取香港办事
static let hklist = "infoflow/tool/list" static let hklist = "infoflow/tool/list"
// 点赞、收藏、最近浏览数量
static let likeCollect = "infoflow/article/myArticleRecord"
} }
//order 模块 //order 模块
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "摄图网_501771221_家庭亲子户外露营玩耍(企业商用) 1@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "摄图网_501771221_家庭亲子户外露营玩耍(企业商用) 1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Group 3112@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Group 3112@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
"zh-Hans" : { "zh-Hans" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "无更多数据" "value" : "没有更多了~"
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment