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

// 消息分页

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