Commit f283f018 authored by Steven杜宇's avatar Steven杜宇

// 消息分页

parent 125383a2
...@@ -15,6 +15,8 @@ class YHMessageDetailListVC: YHBaseViewController { ...@@ -15,6 +15,8 @@ class YHMessageDetailListVC: YHBaseViewController {
// 滑动过程中出现在屏幕上的未读消息集合 // 滑动过程中出现在屏幕上的未读消息集合
var visibleUnreadMsgIdSet = Set<String>() var visibleUnreadMsgIdSet = Set<String>()
var visibleUnreadMsgArr = [YHDetailMessageModel]() var visibleUnreadMsgArr = [YHDetailMessageModel]()
var currentPage = 1
var isLastPage = false
lazy var viewModel = { lazy var viewModel = {
let model = YHMsgViewModel() let model = YHMsgViewModel()
...@@ -60,6 +62,9 @@ class YHMessageDetailListVC: YHBaseViewController { ...@@ -60,6 +62,9 @@ class YHMessageDetailListVC: YHBaseViewController {
tableView.backgroundView = emptyDataTipsView tableView.backgroundView = emptyDataTipsView
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell") tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHDetailMessageCell.self, forCellReuseIdentifier: YHDetailMessageCell.cellReuseIdentifier) tableView.register(YHDetailMessageCell.self, forCellReuseIdentifier: YHDetailMessageCell.cellReuseIdentifier)
tableView.es.addInfiniteScrolling {
self.getMsgList(more: true)
}
return tableView return tableView
}() }()
...@@ -74,11 +79,11 @@ class YHMessageDetailListVC: YHBaseViewController { ...@@ -74,11 +79,11 @@ class YHMessageDetailListVC: YHBaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
getMsgList()
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
getMsgList()
} }
func setupUI() { func setupUI() {
...@@ -99,13 +104,30 @@ class YHMessageDetailListVC: YHBaseViewController { ...@@ -99,13 +104,30 @@ class YHMessageDetailListVC: YHBaseViewController {
} }
} }
func getMsgList() { func getMsgList(more:Bool = false) {
self.viewModel.getMsgDetailList(type: self.type) {
[weak self] success, error in if isLastPage {
tableView.es.stopLoadingMore()
return
}
if more {
currentPage += 1
} else {
currentPage = 1
}
self.viewModel.getMsgDetailList(type: self.type, page:currentPage) {
[weak self] success, isLastPage in
guard let self = self else { return } guard let self = self else { return }
msgArr.removeAll() msgArr.removeAll()
msgArr.append(contentsOf: self.viewModel.msgDetailList) msgArr.append(contentsOf: self.viewModel.msgDetailList)
emptyDataTipsView.isHidden = msgArr.count > 0 emptyDataTipsView.isHidden = msgArr.count > 0
self.isLastPage = isLastPage
tableView.es.stopLoadingMore()
if isLastPage {
tableView.es.noticeNoMoreData()
}
self.tableView.reloadData { self.tableView.reloadData {
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
import UIKit import UIKit
import SmartCodable import SmartCodable
let kMsgPageSize = 20
class YHMsgViewModel: NSObject { class YHMsgViewModel: NSObject {
var msgList: YHMsgListModel = YHMsgListModel() var msgList: YHMsgListModel = YHMsgListModel()
...@@ -47,48 +49,56 @@ class YHMsgViewModel: NSObject { ...@@ -47,48 +49,56 @@ class YHMsgViewModel: NSObject {
} }
} }
func getMsgDetailList(type:Int, _ callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) { func getMsgDetailList(type:Int, page:Int, _ callBackBlock:@escaping (_ success: Bool, _ isLastPage:Bool)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Message.msgDetaiListApi let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Message.msgDetaiListApi
let params = ["type": type] let params = ["type": type,
"page": page,
"pageSize": kMsgPageSize]
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in
let dic = json.data let dic = json.data
guard let dic = dic as? [String: Any], let totalPage = dic["page_count"] as? Int, let arrDict = dic["list"] as? [Any] else {
callBackBlock(false, false)
return
}
// printLog("model 是 ==> \(json)") // printLog("model 是 ==> \(json)")
if json.code == 200 { if json.code == 200 {
DispatchQueue.global().async { DispatchQueue.global().async {
guard let arr = [YHDetailMessageModel].deserialize(array: dic as? [Any]) else { guard let arr = [YHDetailMessageModel].deserialize(array: arrDict) else {
DispatchQueue.main.async { DispatchQueue.main.async {
let error = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description()) let error = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
self.msgDetailList = [] self.msgDetailList = []
callBackBlock(false, error) callBackBlock(false, false)
} }
return return
} }
DispatchQueue.main.async { DispatchQueue.main.async {
self.msgDetailList.removeAll() if page == 1 {
self.msgDetailList.removeAll()
}
for item in arr { for item in arr {
if let item = item { if let item = item {
self.msgDetailList.append(item) self.msgDetailList.append(item)
} }
} }
callBackBlock(true, nil) let currentPage = (self.msgDetailList.count+kMsgPageSize-1)/kMsgPageSize
callBackBlock(true, currentPage == totalPage)
} }
} }
} else { } else {
self.msgDetailList = [] self.msgDetailList = []
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, false)
} }
} failBlock: { error in } failBlock: { error in
self.msgDetailList = [] self.msgDetailList = []
callBackBlock(false, error) callBackBlock(false, false)
} }
} }
......
...@@ -277,7 +277,7 @@ class YHAllApiName { ...@@ -277,7 +277,7 @@ class YHAllApiName {
// 获取未读消息列表 // 获取未读消息列表
static let unreadMsgListApi = "infoflow/unread-message" static let unreadMsgListApi = "infoflow/unread-message"
// 具体业务消息列表 // 具体业务消息列表
static let msgDetaiListApi = "infoflow/message/list" static let msgDetaiListApi = "infoflow/message/list/v2"
// 标记消息已读 // 标记消息已读
static let readMsgApi = "infoflow/read-push" static let readMsgApi = "infoflow/read-push"
// 获取未读消息总数 // 获取未读消息总数
......
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