MessagePlanetActivityController.swift 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. //
  2. // MessagePlanetActivityController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/6/11.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftyMediator
  10. import Kingfisher
  11. class MessagePlanetActivityController: BaseViewController {
  12. deinit {
  13. NXLLog("deinit")
  14. }
  15. override func didReceiveMemoryWarning() {
  16. super.didReceiveMemoryWarning()
  17. KingfisherManager.shared.cache.clearDiskCache()
  18. KingfisherManager.shared.cache.clearMemoryCache()
  19. }
  20. var messageShowTypes : String = ""
  21. var messageDataModels = Array<MessageDataModel>()
  22. override func viewDidLoad() {
  23. super.viewDidLoad()
  24. setupViews()
  25. setupLayouts()
  26. setupData()
  27. }
  28. override func setupViews() {
  29. navigationBar.title = "由你活动"
  30. view.backgroundColor = kf7f8faColor
  31. view.addSubview(tableView)
  32. view.insertSubview(navigationBar, aboveSubview: tableView)
  33. }
  34. override func setupLayouts() {
  35. tableView.snp.makeConstraints { (make) in
  36. make.top.equalToSuperview().offset(kNavBarTotalHeight)
  37. make.left.right.bottom.equalTo(0)
  38. }
  39. }
  40. override func setupData() {
  41. tableView.addHeader(withBeginRefresh: true, animation: true) {
  42. [weak self] (page) in
  43. self?.userMemberMessageList(page: page)
  44. }
  45. tableView.addAutoNormalFooter(withAutomaticallyRefresh: true, loadMoreBlock: {
  46. [weak self] (page) in
  47. self?.userMemberMessageList(page: page)
  48. })
  49. }
  50. lazy var tableView: UITableView = {
  51. let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.plain)
  52. tableView.separatorStyle = .none
  53. tableView.backgroundColor = kf7f8faColor
  54. tableView.dataSource = self
  55. tableView.delegate = self
  56. return tableView
  57. }()
  58. }
  59. extension MessagePlanetActivityController {
  60. /// 用户消息列表
  61. ///
  62. /// - Parameter page: 分页
  63. func userMemberMessageList(page:Int) {
  64. SwiftMoyaNetWorkServiceUser.shared().userMemberMessageListApi(messageShowTypes: self.messageShowTypes, page: page, completion: {
  65. [weak self] (messageListModel) -> (Void) in
  66. DIYEmptyView.emptyNoDataTableView(tableView: self?.tableView,imageStr: .ten,detailStr: .ten)
  67. let messageListModel = messageListModel as? MessageListModel
  68. if messageListModel?.pagination?.currentPage == 1{
  69. self?.messageDataModels.removeAll()
  70. self?.tableView.resetNoMoreData()
  71. }
  72. self?.messageDataModels = (self?.messageDataModels)! + (messageListModel?.data!)!
  73. self?.tableView.reloadData()
  74. MJRefreshManager.mjRefreshManagerNoHiddenFooter(tableView: self?.tableView,pagination: messageListModel?.pagination)
  75. }) {
  76. [weak self] (loadingStatus) in
  77. MJRefreshManager.mjRefreshManagerLoadingStatus(tableView: self?.tableView,loadingStatus: loadingStatus)
  78. }
  79. }
  80. }
  81. // MARK: - tableView dataSource && delegate
  82. extension MessagePlanetActivityController: UITableViewDataSource, UITableViewDelegate {
  83. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  84. return messageDataModels.isEmpty ? 0 : messageDataModels.count
  85. }
  86. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  87. let cell = MessageActivityTableCell.cellWith(tableView: tableView, indexPath: indexPath)
  88. cell.messageDataModel = messageDataModels[indexPath.row]
  89. return cell
  90. }
  91. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  92. let messageDataModel = messageDataModels[indexPath.row]
  93. switch messageDataModel.messageShowTypeEnum {
  94. case .user?:
  95. if UserModel.shared().getModel()?.uid != Int(messageDataModel.param?.activityUrl ?? "0") {
  96. Mediator.push(MineRouterModuleType.pushOtherPersonalCenter(uid: Int(messageDataModel.param?.activityUrl ?? "0") ?? 0))
  97. }
  98. break
  99. case .post?:
  100. if messageDataModel.param?.postTypeEnum == .video {
  101. Mediator.push(CommunityRouterModuleType.pushPostDetailVoide(postId: "\(messageDataModel.param?.activityUrl ?? "")", departType: .personal, topicId: 0))
  102. }else {
  103. Mediator.push(CommunityRouterModuleType.pushPostDetailContent(postId: "\(messageDataModel.param?.activityUrl ?? "")"))
  104. }
  105. break
  106. case .activity?:
  107. Mediator.push(H5RouterModuleType.pushWeb(URLString: kH5ActivityUrl + "id=\(messageDataModel.param?.activityUrl ?? "")" + "&" + "time=\(messageDataModel.param?.activityTime ?? "")"))
  108. break
  109. case .topic?:
  110. Mediator.push(CommunityRouterModuleType.pushFeaturedTopics(id: Int(messageDataModel.param?.activityUrl ?? "0") ?? 0))
  111. break
  112. default:
  113. break
  114. }
  115. }
  116. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  117. return 212
  118. }
  119. func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
  120. return 0.000001
  121. }
  122. func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  123. return 0.000001
  124. }
  125. func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
  126. return nil
  127. }
  128. func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  129. return nil
  130. }
  131. }