MessageMainViewController.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. //
  2. // MessageMainViewController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/6/10.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import Lottie
  10. import ESTabBarController_swift
  11. class MessageMainViewController: BaseViewController {
  12. override func didReceiveMemoryWarning() {
  13. super.didReceiveMemoryWarning()
  14. }
  15. deinit {
  16. NXLLog("deinit")
  17. if observe != nil {
  18. NotificationCenter.default.removeObserver(observe!)
  19. }
  20. }
  21. weak var observe : NSObjectProtocol?
  22. var messageIndexModel : MessageIndexModel?
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25. setupViews()
  26. setupData()
  27. }
  28. override func setupViews() {
  29. navigationBar.title = "消息"
  30. view.backgroundColor = kf7f8faColor
  31. view.addSubview(collectionView)
  32. view.insertSubview(navigationBar, aboveSubview: collectionView)
  33. }
  34. override func setupData() {
  35. // 查看全部热门视频
  36. observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("MessageMainViewController"), object: nil, queue: OperationQueue.main) {
  37. [weak self] notification in
  38. self?.messageIndexModel = notification.object as? MessageIndexModel
  39. self?.collectionView.reloadData()
  40. self?.setTabBarItemBadge()
  41. }
  42. collectionView.addHeader(withBeginRefresh: true, animation: true) {
  43. [weak self] (page) in
  44. self?.userMemberMessageIndexApi()
  45. }
  46. observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("MessageModuleTop"), object: nil, queue: OperationQueue.main, using: {
  47. [weak self] (notification) in
  48. if self?.collectionView.contentOffset == CGPoint(x: 0, y: 0) {
  49. self?.collectionView.mj_header.beginRefreshing()
  50. }else {
  51. self?.collectionView.scrollToTop()
  52. }
  53. })
  54. }
  55. lazy var collectionView: UICollectionView = {
  56. let collectionView = UICollectionView.init(frame: CGRect(x: 0, y: kNavBarTotalHeight, width: kScreenWidth, height: kScreenHeight - kNavBarTotalHeight), collectionViewLayout: collectionViewLayout)
  57. collectionView.backgroundColor = kf7f8faColor
  58. collectionView.delegate = self;
  59. collectionView.dataSource = self;
  60. collectionView.showsVerticalScrollIndicator = false
  61. collectionView.showsHorizontalScrollIndicator = false
  62. return collectionView
  63. }()
  64. private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
  65. let collectionViewLayout = UICollectionViewFlowLayout.init()
  66. collectionViewLayout.minimumLineSpacing = 0
  67. collectionViewLayout.minimumInteritemSpacing = 0
  68. return collectionViewLayout
  69. }()
  70. }
  71. extension MessageMainViewController {
  72. /// 用户消息首页
  73. func userMemberMessageIndexApi() {
  74. SwiftMoyaNetWorkServiceUser.shared().userMemberMessageIndexApi(completion: {
  75. [weak self] (messageIndexModel) -> (Void) in
  76. self?.messageIndexModel = messageIndexModel as? MessageIndexModel
  77. self?.collectionView.reloadData()
  78. self?.setTabBarItemBadge()
  79. MJRefreshManager.mjRefreshManager(collectionView: self?.collectionView)
  80. }) {
  81. [weak self] loadingStauts in
  82. MJRefreshManager.mjRefreshManagerLoadingStatus(collectionView: self?.collectionView, loadingStatus: loadingStauts)
  83. }
  84. }
  85. /// 用户消息阅读
  86. func userMemberReadMessageApi(messageShowTypes:String,completion: @escaping () -> Void){
  87. SwiftMoyaNetWorkServiceUser.shared().userMemberReadMessageApi(messageShowTypes: messageShowTypes) { (data) -> (Void) in
  88. completion()
  89. }
  90. }
  91. }
  92. extension MessageMainViewController {
  93. /// push到消息控制器
  94. ///
  95. /// - Parameters:
  96. /// - messageVCType: 类型
  97. /// - messageShowTypes: key
  98. func pushMessageListController(messageVCType:MessageListVCType,messageShowTypes:String) {
  99. let vc = MessageListController()
  100. vc.messageVCType = messageVCType
  101. vc.messageShowTypes = messageShowTypes
  102. self.navigationController?.pushViewController(vc, animated: true)
  103. self.setTabBarItemBadge()
  104. }
  105. }
  106. extension MessageMainViewController: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
  107. func numberOfSections(in collectionView: UICollectionView) -> Int {
  108. return 2
  109. }
  110. func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  111. switch section {
  112. case 0:
  113. return 3
  114. default:
  115. return 2
  116. }
  117. }
  118. func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
  119. switch indexPath.section {
  120. case 0:
  121. let cell = MessageHomeOneCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
  122. if self.messageIndexModel != nil {
  123. switch indexPath.row {
  124. case 0:// 评论和@
  125. cell.messageModel = (self.messageIndexModel?.comment)!
  126. case 1:// 赞与互动
  127. cell.messageModel = (self.messageIndexModel?.praise)!
  128. default: //关注通知
  129. cell.messageModel = (self.messageIndexModel?.follow)!
  130. }
  131. }
  132. return cell
  133. default:
  134. let cell = MessageHomeTwoCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
  135. if self.messageIndexModel != nil {
  136. switch indexPath.row {
  137. case 0:// 星球通知
  138. cell.messageModel = (self.messageIndexModel?.notification)!
  139. default:// 星球活动
  140. cell.messageModel = (self.messageIndexModel?.activity)!
  141. }
  142. }
  143. return cell
  144. }
  145. }
  146. func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
  147. switch indexPath.section {
  148. case 0:
  149. switch indexPath.row {
  150. case 0:// 评论和@
  151. if self.messageIndexModel?.comment?.isYes == 1 {
  152. userMemberReadMessageApi(messageShowTypes: self.messageIndexModel?.comment?.key ?? "") {
  153. [weak self] in
  154. self?.messageIndexModel?.comment?.isYes = 0
  155. collectionView.reloadItems(at: [indexPath])
  156. self?.pushMessageListController(messageVCType: .comment, messageShowTypes: self?.messageIndexModel?.comment?.key ?? "")
  157. self?.setTabBarItemBadge()
  158. }
  159. }else {
  160. self.pushMessageListController(messageVCType: .comment, messageShowTypes: self.messageIndexModel?.comment?.key ?? "")
  161. }
  162. case 1:// 赞与互动
  163. if self.messageIndexModel?.praise?.isYes == 1 {
  164. userMemberReadMessageApi(messageShowTypes: self.messageIndexModel?.praise?.key ?? "") {
  165. [weak self] in
  166. self?.messageIndexModel?.praise?.isYes = 0
  167. collectionView.reloadItems(at: [indexPath])
  168. self?.pushMessageListController(messageVCType: .praise, messageShowTypes: self?.messageIndexModel?.praise?.key ?? "")
  169. self?.setTabBarItemBadge()
  170. }
  171. }else {
  172. self.pushMessageListController(messageVCType: .praise, messageShowTypes: self.messageIndexModel?.praise?.key ?? "")
  173. }
  174. default: //关注通知
  175. if self.messageIndexModel?.follow?.isYes == 1 {
  176. userMemberReadMessageApi(messageShowTypes: self.messageIndexModel?.follow?.key ?? "") {
  177. [weak self] in
  178. self?.messageIndexModel?.follow?.isYes = 0
  179. collectionView.reloadItems(at: [indexPath])
  180. self?.pushMessageListController(messageVCType: .follow, messageShowTypes: self?.messageIndexModel?.follow?.key ?? "")
  181. self?.setTabBarItemBadge()
  182. }
  183. }else {
  184. pushMessageListController(messageVCType: .follow, messageShowTypes: self.messageIndexModel?.follow?.key ?? "")
  185. }
  186. }
  187. default:
  188. switch indexPath.row {
  189. case 0:// 星球通知
  190. if self.messageIndexModel?.notification?.isYes == 1 {
  191. userMemberReadMessageApi(messageShowTypes: self.messageIndexModel?.notification?.key ?? "") {
  192. [weak self] in
  193. self?.messageIndexModel?.notification?.isYes = 0
  194. collectionView.reloadItems(at: [indexPath])
  195. let vc = MessagePlanetNotiController()
  196. vc.messageShowTypes = self?.messageIndexModel?.notification?.key ?? ""
  197. self?.navigationController?.pushViewController(vc, animated: true)
  198. self?.setTabBarItemBadge()
  199. }
  200. }else {
  201. let vc = MessagePlanetNotiController()
  202. vc.messageShowTypes = self.messageIndexModel?.notification?.key ?? ""
  203. self.navigationController?.pushViewController(vc, animated: true)
  204. self.setTabBarItemBadge()
  205. }
  206. default:// 星球活动
  207. if self.messageIndexModel?.activity?.isYes == 1 {
  208. userMemberReadMessageApi(messageShowTypes: self.messageIndexModel?.activity?.key ?? "") {
  209. [weak self] in
  210. self?.messageIndexModel?.activity?.isYes = 0
  211. collectionView.reloadItems(at: [indexPath])
  212. let vc = MessagePlanetActivityController()
  213. vc.messageShowTypes = self?.messageIndexModel?.activity?.key ?? ""
  214. self?.navigationController?.pushViewController(vc, animated: true)
  215. self?.setTabBarItemBadge()
  216. }
  217. }else {
  218. let vc = MessagePlanetActivityController()
  219. vc.messageShowTypes = self.messageIndexModel?.activity?.key ?? ""
  220. self.navigationController?.pushViewController(vc, animated: true)
  221. self.setTabBarItemBadge()
  222. }
  223. }
  224. }
  225. }
  226. func setTabBarItemBadge() {
  227. if self.messageIndexModel?.activity?.isYes == 1 || self.messageIndexModel?.follow?.isYes == 1 || self.messageIndexModel?.notification?.isYes == 1 || self.messageIndexModel?.praise?.isYes == 1 || self.messageIndexModel?.comment?.isYes == 1{
  228. let tabBarItem = self.tabBarItem as? ESTabBarItem
  229. tabBarItem?.contentView?.badgeColor = kFE352BColor
  230. tabBarItem?.contentView?.badgeValue = ""
  231. tabBarItem?.contentView?.badgeOffset = UIOffset(horizontal: 0, vertical: -22)
  232. }else {
  233. let tabBarItem = self.tabBarItem as? ESTabBarItem
  234. tabBarItem?.contentView?.badgeValue = nil
  235. }
  236. }
  237. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  238. switch indexPath.section {
  239. case 0:
  240. return CGSize(width:(kScreenWidth)/3, height:104)
  241. default:
  242. return CGSize(width:kScreenWidth, height:70)
  243. }
  244. }
  245. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
  246. return UIEdgeInsets(top:0, left: 0, bottom: 0, right: 0)
  247. }
  248. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
  249. return CGSize(width: kScreenWidth, height: 10)
  250. }
  251. }