SearchUserListViewController.swift 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. //
  2. // SearchUserListViewController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/6/19.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import JXSegmentedView
  10. import SwiftyMediator
  11. class SearchUserListViewController: BaseViewController {
  12. deinit {
  13. if observe != nil {
  14. NotificationCenter.default.removeObserver(observe!)
  15. }
  16. }
  17. weak var observe : NSObjectProtocol?
  18. var keyWord : String = ""
  19. var searchMemberModels = Array<SearchMemberModel>()
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22. setupViews()
  23. setupLayouts()
  24. setupData()
  25. }
  26. override func setupViews() {
  27. navigationBar.isHidden = true
  28. view.backgroundColor = kf7f8faColor
  29. view.addSubview(tableView)
  30. }
  31. override func setupLayouts() {
  32. tableView.snp.makeConstraints { (make) in
  33. make.top.equalTo(5)
  34. make.left.equalTo(0)
  35. make.right.equalTo(0)
  36. make.bottom.equalTo(0)
  37. }
  38. }
  39. override func setupData() {
  40. tableView.addHeader(withBeginRefresh: true, animation: true) {
  41. [weak self] (page) in
  42. self?.userMemberSearchMemberApi(page: page)
  43. }
  44. tableView.addFooter(withAutomaticallyRefresh: false) {
  45. [weak self] (page) in
  46. self?.userMemberSearchMemberApi(page: page)
  47. }
  48. observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("followApi"), object: nil, queue: OperationQueue.main) { [weak self] (notification) in
  49. let followStatusModel = notification.object as? FollowStatusModel
  50. if !(self?.searchMemberModels.isEmpty ?? true) {
  51. for searchMemberModel in (self?.searchMemberModels)! {
  52. if searchMemberModel.uid == followStatusModel?.uid {
  53. searchMemberModel.followStatus = followStatusModel?.isFollowStatus
  54. }
  55. }
  56. self?.tableView.reloadData()
  57. }
  58. }
  59. }
  60. lazy var tableView: UITableView = {
  61. let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.plain)
  62. tableView.backgroundColor = UIColor.white
  63. tableView.separatorStyle = .none
  64. tableView.rowHeight = 81
  65. tableView.dataSource = self
  66. tableView.delegate = self
  67. return tableView
  68. }()
  69. }
  70. extension SearchUserListViewController {
  71. /// 搜索用户
  72. ///
  73. /// - Parameter page: 分页
  74. func userMemberSearchMemberApi(page:Int) {
  75. SwiftMoyaNetWorkServiceUser.shared().userMemberSearchMemberApi(userName: keyWord,page:page, completion: { [weak self] (searchMemberListModel) -> (Void) in
  76. DIYEmptyView.emptyNoDataActionTableView(tableView: self?.tableView, imageStr: .eight, detailStr: .eight, btnTitleStr: .five, btnClickBlock: {
  77. Mediator.push(CommunityRouterModuleType.pushFindFriends)
  78. })
  79. let searchMemberListModel = searchMemberListModel as? SearchMemberListModel
  80. if searchMemberListModel?.pagination?.currentPage ?? 1 <= searchMemberListModel?.pagination?.totalPages ?? 1 {
  81. if searchMemberListModel?.pagination?.currentPage == 1{
  82. self?.searchMemberModels.removeAll()
  83. self?.tableView.resetNoMoreData()
  84. }
  85. self?.searchMemberModels = (self?.searchMemberModels)! + (searchMemberListModel?.data)!
  86. self?.tableView.reloadData()
  87. MJRefreshManager.hiddenHeaderWithFooter(tableView: self?.tableView, currentPage: searchMemberListModel?.pagination?.currentPage, totalPages: searchMemberListModel?.pagination?.totalPages)
  88. }else {
  89. MJRefreshManager.hiddenFooterNoMoreData(tableView: self?.tableView)
  90. }
  91. }) {
  92. [weak self] (loadingStatus) in
  93. MJRefreshManager.hiddenHeaderWithFooterNONetWork(tableView: self?.tableView)
  94. }
  95. }
  96. /// 关注
  97. func userFollow(followUid:Int,completion: @escaping (Int) -> Void) {
  98. SwiftMoyaNetWorkServiceUser.shared().userFollowApi(followUid: followUid) {(followStatusModel) -> (Void) in
  99. let followStatusModel = followStatusModel as? FollowStatusModel
  100. completion(followStatusModel?.isFollowStatus ?? 0)
  101. }
  102. }
  103. /// 取消关注
  104. func userCancelFollow(followUid:Int,completion: @escaping (Int) -> Void) {
  105. SwiftMoyaNetWorkServiceUser.shared().userCancelFollowApi(followUid: followUid) {
  106. (followStatusModel) -> (Void) in
  107. let followStatusModel = followStatusModel as? FollowStatusModel
  108. completion(followStatusModel?.isFollowStatus ?? 0)
  109. }
  110. }
  111. }
  112. extension SearchUserListViewController :UITableViewDataSource,UITableViewDelegate {
  113. func numberOfSections(in tableView: UITableView) -> Int {
  114. return searchMemberModels.isEmpty ? 0 : 1
  115. }
  116. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  117. return searchMemberModels.isEmpty ? 0 : searchMemberModels.count
  118. }
  119. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  120. let cell = SearchUserLitTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  121. cell.searchMemberModel = searchMemberModels[indexPath.row]
  122. cell.followButtonClosure = {
  123. [weak self] in
  124. if cell.searchMemberModel?.followStatus == 0 { //加关注
  125. self?.userFollow(followUid: cell.searchMemberModel?.uid ?? 0, completion: { (isFollow) -> Void in
  126. cell.searchMemberModel?.followStatus = isFollow
  127. self?.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
  128. })
  129. }else { //取消关注
  130. self?.userCancelFollow(followUid: cell.searchMemberModel?.uid ?? 0, completion: { (isFollow) -> Void in
  131. cell.searchMemberModel?.followStatus = isFollow
  132. self?.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
  133. })
  134. }
  135. }
  136. return cell
  137. }
  138. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  139. let searchMemberModel = searchMemberModels[indexPath.row]
  140. NotificationCenter.default.post(name: NSNotification.Name("OtherPersonalCenter"), object: searchMemberModel.uid)
  141. }
  142. }
  143. extension SearchUserListViewController : JXSegmentedListContainerViewListDelegate {
  144. func listView() -> UIView {
  145. return view
  146. }
  147. }