瀏覽代碼

推荐列表完成

南鑫林 5 年之前
父節點
當前提交
d70f727943
共有 31 個文件被更改,包括 1022 次插入1250 次删除
  1. 13 5
      RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj
  2. 47 0
      RainbowPlanet/RainbowPlanet/Macro/Common.swift
  3. 46 0
      RainbowPlanet/RainbowPlanet/Macro/EnumMacro.swift
  4. 6 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/Banner/CommunityBannerFSPagerViewCell.swift
  5. 29 20
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/Banner/CommunityBannerTableViewCell.swift
  6. 9 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/Action/CardContentActionTableViewCell.swift
  7. 7 1
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/Comment/CardContentCommnetTableViewCell.swift
  8. 17 4
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListContentTableViewCell.swift
  9. 6 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListFooterView.swift
  10. 13 3
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListTableViewCell.swift
  11. 18 1
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoCollectionViewCell.swift
  12. 5 4
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoCollectionViewLayout.swift
  13. 5 5
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoModel.swift
  14. 18 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoTableViewCell.swift
  15. 24 6
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/TitleContent/CardContentTitleTableViewCell.swift
  16. 9 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/User/CardContentUserTableViewCell.swift
  17. 8 2
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/FeaturedTopics/FeaturedTopicsCollectionViewCell.swift
  18. 10 2
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/FeaturedTopics/FeaturedTopicsTableViewCell.swift
  19. 9 1
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/PopularVideo/PopularVideoCollectionViewCell.swift
  20. 10 2
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/PopularVideo/PopularVideoTableViewCell.swift
  21. 9 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/RecommendFollow/CommunityRecommendFollowCollectionViewCell.swift
  22. 9 16
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/RecommendFollow/CommunityRecommendFollowTableViewCell.swift
  23. 75 42
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Follow/CommunityFollowViewController.swift
  24. 5 0
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Main/CommunityViewController.swift
  25. 210 1087
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Recommend/CommunityRecommnendViewController.swift
  26. 30 30
      RainbowPlanet/RainbowPlanet/Modules/CommunityModule/CommunityFeaturedTopics/ViewController/CommunityFeaturedTopicsViewController.swift
  27. 88 0
      RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityFollowFeedModel.swift
  28. 226 0
      RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityRecommendFeedModel.swift
  29. 32 12
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaNetWorkServiceCommunity.swift
  30. 28 4
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaServiceCommunityApi.swift
  31. 1 3
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/ApiMacro.swift

+ 13 - 5
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -276,6 +276,8 @@
 		A7AA9F5A22C5FB1E0086498B /* SwiftMoyaNetWorkServiceVirus.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7AA9F5922C5FB1E0086498B /* SwiftMoyaNetWorkServiceVirus.swift */; };
 		A7AA9F5D22C5FD710086498B /* VirueRecordAddParameterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7AA9F5C22C5FD710086498B /* VirueRecordAddParameterModel.swift */; };
 		A7AA9F6322C62B270086498B /* CommunityRecommnendViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7AA9F6222C62B270086498B /* CommunityRecommnendViewController.swift */; };
+		A7AA9F6522C63DCD0086498B /* CommunityFollowFeedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7AA9F6422C63DCD0086498B /* CommunityFollowFeedModel.swift */; };
+		A7AA9F6722C640F10086498B /* CommunityRecommendFeedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7AA9F6622C640F10086498B /* CommunityRecommendFeedModel.swift */; };
 		A7B4E71F228131720012914A /* ProductSlidingLeftRightCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E71E228131720012914A /* ProductSlidingLeftRightCollectionViewCell.swift */; };
 		A7B4E721228151F40012914A /* ProductFloorTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E720228151F40012914A /* ProductFloorTitleView.swift */; };
 		A7B4E723228154750012914A /* ProductFloorBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E722228154750012914A /* ProductFloorBannerView.swift */; };
@@ -935,6 +937,8 @@
 		A7AA9F5922C5FB1E0086498B /* SwiftMoyaNetWorkServiceVirus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaNetWorkServiceVirus.swift; sourceTree = "<group>"; };
 		A7AA9F5C22C5FD710086498B /* VirueRecordAddParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirueRecordAddParameterModel.swift; sourceTree = "<group>"; };
 		A7AA9F6222C62B270086498B /* CommunityRecommnendViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommunityRecommnendViewController.swift; sourceTree = "<group>"; };
+		A7AA9F6422C63DCD0086498B /* CommunityFollowFeedModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommunityFollowFeedModel.swift; sourceTree = "<group>"; };
+		A7AA9F6622C640F10086498B /* CommunityRecommendFeedModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommunityRecommendFeedModel.swift; sourceTree = "<group>"; };
 		A7B4E71E228131720012914A /* ProductSlidingLeftRightCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductSlidingLeftRightCollectionViewCell.swift; sourceTree = "<group>"; };
 		A7B4E720228151F40012914A /* ProductFloorTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductFloorTitleView.swift; sourceTree = "<group>"; };
 		A7B4E722228154750012914A /* ProductFloorBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductFloorBannerView.swift; sourceTree = "<group>"; };
@@ -2369,10 +2373,10 @@
 		A738D203225AEAD000EEE860 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				A72A73722233966800B21995 /* RootModel */,
 				A7AA9F5B22C5FCE50086498B /* VirusModel */,
 				A7D5F25D22C0612A00F8E9AF /* CommunityModel */,
 				A7D5F24B22BC71ED00F8E9AF /* WVJBModel */,
-				A72A73722233966800B21995 /* RootModel */,
 				A71738A922898651000AEA6A /* ShopModel */,
 				A7A98E00227E88E8005306E9 /* ProductModel */,
 				A79057032276D5FE0037F823 /* ConfigModel */,
@@ -3806,6 +3810,8 @@
 				A72623D222C1FFD100AEF875 /* CommunityPostMyModel.swift */,
 				A72623EA22C4B91900AEF875 /* CommunityPostsModel.swift */,
 				A72623E822C4AFF200AEF875 /* CommunityTopicsModel.swift */,
+				A7AA9F6422C63DCD0086498B /* CommunityFollowFeedModel.swift */,
+				A7AA9F6622C640F10086498B /* CommunityRecommendFeedModel.swift */,
 			);
 			path = CommunityModel;
 			sourceTree = "<group>";
@@ -3930,12 +3936,12 @@
 		A7F2D6C422B0DBCB0093000B /* Cell */ = {
 			isa = PBXGroup;
 			children = (
+				A7C0FDEC22B650FA00BC1E86 /* Banner */,
+				A7F2D6C922B0E2FE0093000B /* RecommendFollow */,
 				A7C0FDF622B6670900BC1E86 /* PopularVideo */,
 				A7C0FDF122B65DAD00BC1E86 /* FeaturedTopics */,
-				A7C0FDEC22B650FA00BC1E86 /* Banner */,
 				A7F2D6D522B1ED100093000B /* CardContent */,
 				A7F2D6CC22B0FEF60093000B /* FollowStatus */,
-				A7F2D6C922B0E2FE0093000B /* RecommendFollow */,
 			);
 			path = Cell;
 			sourceTree = "<group>";
@@ -3960,12 +3966,12 @@
 		A7F2D6D522B1ED100093000B /* CardContent */ = {
 			isa = PBXGroup;
 			children = (
+				A7F2D6DA22B2524A0093000B /* User */,
+				A7F2D6DB22B252520093000B /* PicVideo */,
 				A7C0FDE522B4A36F00BC1E86 /* CommentList */,
 				A7BF203222B47D6200396DB3 /* Action */,
 				A7BF202F22B47CA000396DB3 /* Comment */,
 				A7BF202822B396D100396DB3 /* TitleContent */,
-				A7F2D6DB22B252520093000B /* PicVideo */,
-				A7F2D6DA22B2524A0093000B /* User */,
 			);
 			path = CardContent;
 			sourceTree = "<group>";
@@ -5719,6 +5725,7 @@
 				A7DC467F22783A47001F3EFC /* EditExpressAddressTableViewCell.swift in Sources */,
 				A7A98E4522804C63005306E9 /* ShoppingMallSepcialCollectionViewCell.swift in Sources */,
 				BD61230422C36C6900D3F513 /* AlivcBeautySettingUIDefine.m in Sources */,
+				A7AA9F6722C640F10086498B /* CommunityRecommendFeedModel.swift in Sources */,
 				A7931E0022AF827600297D0A /* ESTabBarController.swift in Sources */,
 				A7824B082271F53A00ABA381 /* EditSetDefaultTableViewCell.swift in Sources */,
 				A77F2CC3223203BA001BD3F6 /* AppDelegate+Window.swift in Sources */,
@@ -5838,6 +5845,7 @@
 				A72A72AA22321DE000B21995 /* Log.swift in Sources */,
 				BD6122ED22C367E900D3F513 /* AliAssetImageGenerator.m in Sources */,
 				BD61226A22C3595B00D3F513 /* AlivcEditUIConfig.m in Sources */,
+				A7AA9F6522C63DCD0086498B /* CommunityFollowFeedModel.swift in Sources */,
 				A72A72B622321DE000B21995 /* Extension+NSRange.swift in Sources */,
 				BD0E678522A4C23B00B980BA /* ShoppingCartOrderPayFreightCell.swift in Sources */,
 				A72623D522C2646200AEF875 /* MessageIndexModel.swift in Sources */,

+ 47 - 0
RainbowPlanet/RainbowPlanet/Macro/Common.swift

@@ -240,8 +240,55 @@ func priceConversionNone(price:Int) -> String {
     return String(format: "¥ %.2f", price)
 }
 
+
+/// 复制
+///
+/// - Parameter string: 复制的内容
 func commonCopy(string:String) {
     let pasteboard = UIPasteboard.general
     pasteboard.string = string
     SwiftProgressHUD.shared().showText("复制成功")
 }
+
+
+/// 获取图片
+///
+/// - Returns: 返回Sting
+func getImageWidthheightStr(imgStr:String) -> String {
+    var imgStr1 = imgStr.suffix(from: (imgStr.lastIndex(of: "*"))!)
+    NXLLog(imgStr1)
+    imgStr1 = (imgStr1.suffix(imgStr1.count - 1))
+    NXLLog(imgStr1)
+    imgStr1 = imgStr1.prefix(upTo:(imgStr1.firstIndex(of: "."))!)
+    NXLLog(imgStr1)
+    return String(imgStr1)
+}
+
+/// 获取图片的宽
+///
+/// - Parameter imgStr: 图片链接
+/// - Returns: 宽
+func getImageWidth(imgStr:String) -> CGFloat {
+    let imageStr = getImageWidthheightStr(imgStr: imgStr)
+    let widthStr = imageStr.prefix(upTo:(imageStr.firstIndex(of: "_"))!)
+    NXLLog(widthStr)
+    let width = Double(widthStr)
+    let widthFloat = CGFloat(width ?? 0)
+    NXLLog(widthFloat)
+    return widthFloat/2
+}
+/// 获取图片的高
+///
+/// - Parameter imgStr: 图片链接
+/// - Returns: 宽
+func getImageHeight(imgStr:String) -> CGFloat {
+    let imageStr = getImageWidthheightStr(imgStr: imgStr)
+    let widthStr = imageStr.prefix(upTo:(imageStr.firstIndex(of: "_"))!)
+    NXLLog(widthStr)
+    let heightStr = imageStr.suffix(imageStr.count - widthStr.count - 1)
+    NXLLog(heightStr)
+    let height = Double(heightStr)
+    let heightFloat = CGFloat(height ?? 0)
+    NXLLog(heightFloat)
+    return heightFloat/2
+}

+ 46 - 0
RainbowPlanet/RainbowPlanet/Macro/EnumMacro.swift

@@ -8,6 +8,7 @@
 
 import Foundation
 
+// MARK: - 跳转方式
 /// 跳转方式
 ///
 /// - none: 默认
@@ -17,6 +18,7 @@ enum JumpModeType {
     case push
 }
 
+// MARK: - 搜索类型
 /// 搜索类型
 ///
 /// - content: 内容
@@ -30,6 +32,7 @@ enum SearchType : Int {
     case product = 3
 }
 
+// MARK: - 消息说明 / 消息类型
 /// 消息说明 / 消息类型
 ///
 /// - star: 星球活动消息
@@ -40,6 +43,7 @@ enum MessageType : Int {
 }
 
 
+// MARK: - 消息展示类型
 /// 消息展示类型
 ///
 /// - onlyShow: 星球活动消息
@@ -72,6 +76,7 @@ enum MessageShowType : Int {
 }
 
 
+// MARK: - virus类型
 /// virus类型
 ///
 /// - comment: 评价
@@ -93,6 +98,7 @@ enum BehaviorFlagType : String {
     case register = "register"
 }
 
+// MARK: - 关注类型
 /// 关注类型
 ///
 /// - futureFollow: 未关注
@@ -104,6 +110,7 @@ enum FollowType : Int {
     case mutualFollow = 2
 }
 
+// MARK: - 用户状态类型
 /// 用户状态类型
 ///
 /// - follow: 关注
@@ -119,3 +126,42 @@ enum FollowUserStatus {
     case collection
 }
 
+// MARK: - 个人中心内容
+/// 个人中心内容
+///
+/// - create: 发布
+/// - collect: 收藏
+/// - share: 分享
+enum CommunityPostMyType : String{
+    case create = "create"
+    case collect = "collect"
+    case share = "share"
+}
+
+// MARK: - 推荐feed流
+/// 推荐feed流
+///
+/// - banner: banner
+/// - user: 用户推荐
+/// - video: 视频推荐
+/// - topic: 精选话题
+/// - post: 内容
+enum CommunityPostSuggestCType : String {
+    case banner = "banner"
+    case user = "user"
+    case video = "video"
+    case topic = "topic"
+    case post = "post"
+}
+
+
+/// 贴子类型
+///
+/// - image: 图片
+/// - video: 视频
+/// - html: 富文本
+enum PostType : String{
+    case image = "image"
+    case video = "video"
+    case html = "html"
+}

+ 6 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/Banner/CommunityBannerFSPagerViewCell.swift

@@ -52,4 +52,10 @@ class CommunityBannerFSPagerViewCell: FSPagerViewCell {
         bgImageView.image = kImage(name: "pic_preload")
         return bgImageView
     }()
+    
+    var communityRecommendTypeDataModel : CommunityRecommendTypeDataModel? {
+        didSet {
+            bgImageView.kf.setImage(with: kURLImage(name: communityRecommendTypeDataModel?.image ?? ""), placeholder: kImage(name: "pic_preload"))
+        }
+    }
 }

+ 29 - 20
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/Banner/CommunityBannerTableViewCell.swift

@@ -11,7 +11,7 @@ import FSPagerView
 
 class CommunityBannerTableViewCell: UITableViewCell {
 
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CommunityBannerTableViewCell {
         let ID = "CommunityBannerTableViewCell"
         tableView.register(CommunityBannerTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : CommunityBannerTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CommunityBannerTableViewCell
@@ -47,24 +47,7 @@ class CommunityBannerTableViewCell: UITableViewCell {
         pagerView.snp.makeConstraints { (make) in
             make.edges.equalToSuperview()
         }
-        let pageControlWidth = 3 * kScaleValue(value: 5) +  CGFloat(3 - 1) * kScaleValue(value: 5)
         
-        pageControl.snp.remakeConstraints { (make) in
-            make.bottom.equalTo(-10)
-            make.height.equalTo(5)
-            make.centerX.equalToSuperview()
-            make.width.equalTo(pageControlWidth)
-        }
-        pageControl.numberOfPages = 3
-        if  pageControl.numberOfPages > 1 {
-            pageControl.isHidden = false
-            pagerView.automaticSlidingInterval = 5.0
-            pagerView.isInfinite = true
-        }else {
-            pageControl.isHidden = true
-            pagerView.automaticSlidingInterval = 0.0
-            pagerView.isInfinite = false
-        }
     }
     
     private lazy var pagerView: FSPagerView = {
@@ -88,21 +71,47 @@ class CommunityBannerTableViewCell: UITableViewCell {
         }
         return pageControl
     }()
+    
+    var communityRecommendTypeDataModels: Array<CommunityRecommendTypeDataModel>? {
+        didSet {
+            let pageControlSizeWidth = CGFloat(CGFloat(communityRecommendTypeDataModels?.count ?? 0) * kScaleValue(value: 5))
+            let pageControlSpacingWidth = CGFloat(CGFloat((communityRecommendTypeDataModels?.count ?? 0) - 1) * kScaleValue(value: 5))
+            let pageControlWidth = pageControlSizeWidth +  pageControlSpacingWidth
+            
+            pageControl.snp.remakeConstraints { (make) in
+                make.bottom.equalTo(-10)
+                make.height.equalTo(5)
+                make.centerX.equalToSuperview()
+                make.width.equalTo(pageControlWidth)
+            }
+            pageControl.numberOfPages = (communityRecommendTypeDataModels?.count ?? 0)
+            if  pageControl.numberOfPages > 1 {
+                pageControl.isHidden = false
+                pagerView.automaticSlidingInterval = 5.0
+                pagerView.isInfinite = true
+            }else {
+                pageControl.isHidden = true
+                pagerView.automaticSlidingInterval = 0.0
+                pagerView.isInfinite = false
+            }
+        }
+    }
 
 }
 
 extension CommunityBannerTableViewCell:FSPagerViewDataSource,FSPagerViewDelegate {
     func numberOfItems(in pagerView: FSPagerView) -> Int {
-        return 3
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : communityRecommendTypeDataModels?.count ?? 0
     }
     func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
         let cell  = CommunityBannerFSPagerViewCell.cellWith(collectionView: pagerView, index: index)
+        cell.communityRecommendTypeDataModel = communityRecommendTypeDataModels?[index]
         return cell
     }
     
     func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
         pagerView.deselectItem(at: index, animated: true)
-        
+        NotificationCenter.default.post(name: NSNotification.Name("CommunityBannerClosure"), object: communityRecommendTypeDataModels?[index])
     }
     
     func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {

+ 9 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/Action/CardContentActionTableViewCell.swift

@@ -151,4 +151,13 @@ class CardContentActionTableViewCell: UITableViewCell {
         lineLabel.backgroundColor = kf1f1f1Color
         return lineLabel
     }()
+    
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            skittlesButton.setTitle("\(communityRecommendDataModel?.willCollectBean ?? 0)彩虹豆待收获", for: UIControl.State.normal)
+            skittlesButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5)
+            praiseButton.setTitle("\(communityRecommendDataModel?.praiseCount ?? 0)", for: UIControl.State.normal)
+            praiseButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 7)
+        }
+    }
 }

+ 7 - 1
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/Comment/CardContentCommnetTableViewCell.swift

@@ -58,7 +58,7 @@ class CardContentCommnetTableViewCell: UITableViewCell {
     
     private lazy var avatarButton: UIButton = {
         let avatarButton = UIButton()
-        avatarButton.setImage(kImage(name: "pic_preload"), for: UIControl.State.normal)
+        avatarButton.setImage(kImage(name: "defaul_tavatar"), for: UIControl.State.normal)
         avatarButton.cornerRadius = 14
         avatarButton.masksToBounds = true
         avatarButton.rx.tap.subscribe(onNext: {
@@ -84,4 +84,10 @@ class CardContentCommnetTableViewCell: UITableViewCell {
         return addCommnetButton
     }()
     
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            avatarButton.kf.setImage(with: kURLImage(name: communityRecommendDataModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
+        }
+    }
+    
 }

+ 17 - 4
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListContentTableViewCell.swift

@@ -10,7 +10,7 @@ import UIKit
 
 class CardContentCommentListContentTableViewCell: UITableViewCell {
 
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CardContentCommentListContentTableViewCell {
         let ID = "CardContentCommentListContentTableViewCell"
         tableView.register(CardContentCommentListContentTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : CardContentCommentListContentTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CardContentCommentListContentTableViewCell
@@ -48,13 +48,26 @@ class CardContentCommentListContentTableViewCell: UITableViewCell {
         }
     }
     
-    private lazy var commentLabel: UILabel = {
-        let commentLabel = UILabel()
-        commentLabel.text = "Monster:😁厨艺真的很厉害啊,照片拍的也很好看,鸡蛋看着好新鲜"
+    private lazy var commentLabel: FMLinkLabel = {
+        let commentLabel = FMLinkLabel()
         commentLabel.numberOfLines = 0
         commentLabel.textColor = k333333Color
         commentLabel.font = kRegularFont14
         return commentLabel
     }()
+    
+    var communityRecommendCommentModel: CommunityRecommendCommentModel? {
+        didSet {
+            let nameStr = "\(communityRecommendCommentModel?.username ?? ""):"
+            let contentStr = "\(communityRecommendCommentModel?.content ?? "")"
+            commentLabel.text =  nameStr + contentStr
+            if nameStr != "" {
+                self.commentLabel.addClickText(nameStr, attributeds: [NSAttributedString.Key.font:kBoldFont14], transmitBody: nil) {
+                    (data) in
+                   
+                }
+            }
+        }
+    }
 
 }

+ 6 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListFooterView.swift

@@ -31,5 +31,11 @@ class CardContentCommentListFooterView: BaseView {
         allCommentLabel.font = kRegularFont13
         return allCommentLabel
     }()
+    
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            allCommentLabel.text = "共\(communityRecommendDataModel?.commentCount ?? 0)条评论"
+        }
+    }
 
 }

+ 13 - 3
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/CommentList/CardContentCommentListTableViewCell.swift

@@ -52,7 +52,6 @@ class CardContentCommentListTableViewCell: UITableViewCell {
         tableView.separatorStyle = .none
         tableView.backgroundColor = .white
         tableView.tableHeaderView = headerView
-        tableView.tableFooterView = footerView
         tableView.dataSource = self
         tableView.delegate = self
         tableView.isScrollEnabled = false
@@ -83,19 +82,30 @@ class CardContentCommentListTableViewCell: UITableViewCell {
         }
         
     }
+    
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            if communityRecommendDataModel?.commentCount ?? 0 > 2 {
+                footerView.communityRecommendDataModel = communityRecommendDataModel
+                tableView.tableFooterView = footerView
+            }
+            reloadData()
+        }
+    }
 }
 
 extension CardContentCommentListTableViewCell : UITableViewDelegate,UITableViewDataSource {
     func numberOfSections(in tableView: UITableView) -> Int {
-        return 1
+        return communityRecommendDataModel?.comment?.isEmpty ?? true ? 0 : 1
     }
     
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 2
+        return communityRecommendDataModel?.comment?.isEmpty ?? true ? 0 : communityRecommendDataModel?.comment?.count ?? 0
     }
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = CardContentCommentListContentTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+        cell.communityRecommendCommentModel = communityRecommendDataModel?.comment?[indexPath.row]
         return cell
     }
     

+ 18 - 1
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoCollectionViewCell.swift

@@ -53,7 +53,7 @@ class CardContentPicVideoCollectionViewCell: UICollectionViewCell {
     
     private lazy var iconImageView: UIImageView = {
         let iconImageView = UIImageView.init(image: kImage(name: "pic_preload"))
-        iconImageView.contentMode = .scaleAspectFit
+        iconImageView.contentMode = .scaleAspectFill
         return iconImageView
     }()
     
@@ -62,5 +62,22 @@ class CardContentPicVideoCollectionViewCell: UICollectionViewCell {
         return pauseImageView
     }()
     
+    var imgStr: String? {
+        didSet {
+            iconImageView.kf.setImage(with: kURLImage(name: imgStr ?? ""), placeholder: kImage(name: "pic_preload"))
+        }
+    }
+    
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            if PostType(rawValue: communityRecommendDataModel?.type ?? "image") == .video {
+                pauseImageView.isHidden = false
+            }else {
+                pauseImageView.isHidden = true
+
+            }
+        }
+    }
+    
     
 }

+ 5 - 4
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoCollectionViewLayout.swift

@@ -50,7 +50,7 @@ class CardContentPicVideoCollectionViewLayout: UICollectionViewLayout {
         
         let spacing : CGFloat = 1
         
-        if cardContentPicVideoModel?.picAndVideo == 0 { //图片
+        if cardContentPicVideoModel?.postType == .image || cardContentPicVideoModel?.postType == .html { //图片
             switch cardContentPicVideoModel?.number {
             case 1:
                 if cardContentPicVideoModel?.width ?? 0 < cardContentPicVideoModel?.height ?? 0 { //图片宽度小于图片高度
@@ -58,10 +58,11 @@ class CardContentPicVideoCollectionViewLayout: UICollectionViewLayout {
                         return CGRect(x: 0, y: 0, width: (cardContentPicVideoModel?.width ?? 0) * kScaleWidth, height: 347 * kScaleWidth)
 
                     }else {
-                        return CGRect(x: 0, y: 0, width: (cardContentPicVideoModel?.width ?? 0) * kScaleWidth, height: 232 * kScaleWidth)
+                        let scale = (cardContentPicVideoModel?.width ?? 0) / (cardContentPicVideoModel?.height ?? 0)
+                        return CGRect(x: 0, y: 0, width: (280 * kScaleWidth) * scale, height: 280 * kScaleWidth)
                     }
                 }else if cardContentPicVideoModel?.width ?? 0 == cardContentPicVideoModel?.height ?? 0 { //图片宽度等于图片高度
-                    return CGRect(x: 0, y: 0, width: 232 * kScaleWidth, height: 232 * kScaleWidth)
+                    return CGRect(x: 0, y: 0, width: 280 * kScaleWidth, height: 280 * kScaleWidth)
 
                 }else{ //图片宽度大于图片高度
                     if (cardContentPicVideoModel?.width ?? 0) / (cardContentPicVideoModel?.height ?? 0) > 2 {
@@ -72,7 +73,7 @@ class CardContentPicVideoCollectionViewLayout: UICollectionViewLayout {
                     }else {
                         let height = (232 * (cardContentPicVideoModel?.height ?? 0))
                         let width = (cardContentPicVideoModel?.width ?? 0)
-                        return CGRect(x: 0, y: 0, width: 232 * kScaleWidth, height: (height / width) * kScaleWidth)
+                        return CGRect(x: 0, y: 0, width: 280 * kScaleWidth, height: (height / width) * kScaleWidth)
                     }
                 }
             case 2:

+ 5 - 5
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoModel.swift

@@ -12,27 +12,27 @@ class CardContentPicVideoModel: NSObject {
     
     var width : CGFloat = 0
     var height : CGFloat = 0
-    var picAndVideo : Int = 0
+    var postType : PostType = .image
     var number : Int = 0
     
     func collectionViewHeight() -> CGFloat {
         
-        if picAndVideo == 0 { //图片
+        if postType == .image || postType == .html { //图片
             switch number {
             case 1:
                 if width < height { //图片宽度大于图片高度
                     if height / width > 2 {
                         return 347 * kScaleWidth
                     }else {
-                        return 232 * kScaleWidth
+                        return 280 * kScaleWidth
                     }
                 }else if width == height { //图片宽度等于图片高度
-                    return 232 * kScaleWidth
+                    return 280 * kScaleWidth
                 }else{
                      if width / height > 2 {
                         return ((347 * height) / width) * kScaleWidth
                      }else {
-                        return ((232 * height) / width) * kScaleWidth
+                        return ((280 * height) / width) * kScaleWidth
                     }
                 }
             case 2:

+ 18 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/PicVideo/CardContentPicVideoTableViewCell.swift

@@ -59,6 +59,22 @@ class CardContentPicVideoTableViewCell: UITableViewCell {
         return collectionViewLayout
     }()
     
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            let cardContentPicVideoModel = CardContentPicVideoModel()
+            cardContentPicVideoModel.number = communityRecommendDataModel?.imgs?.count ?? 1
+            let imgStr = communityRecommendDataModel?.img
+            if communityRecommendDataModel?.imgs?.count ?? 0 == 1 {
+                if communityRecommendDataModel?.img != "" || communityRecommendDataModel?.img != nil {
+                    cardContentPicVideoModel.width = getImageWidth(imgStr: (imgStr)!)
+                    cardContentPicVideoModel.height = getImageHeight(imgStr: (imgStr)!)
+                }
+            }
+            cardContentPicVideoModel.postType = PostType(rawValue: communityRecommendDataModel?.type ?? "image")!
+            self.cardContentPicVideoModel = cardContentPicVideoModel
+        }
+    }
+    
     var cardContentPicVideoModel: CardContentPicVideoModel? {
         didSet {
             collectionViewLayout.cardContentPicVideoModel = cardContentPicVideoModel
@@ -85,6 +101,8 @@ extension CardContentPicVideoTableViewCell: UICollectionViewDelegateFlowLayout,U
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = CardContentPicVideoCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
+        cell.imgStr = communityRecommendDataModel?.imgs?[indexPath.row]
+        cell.communityRecommendDataModel = communityRecommendDataModel
         return cell
     }
     

+ 24 - 6
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/TitleContent/CardContentTitleTableViewCell.swift

@@ -79,13 +79,31 @@ class CardContentTitleTableViewCell: UITableViewCell {
         return subtitleLabel
     }()
     
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            if (communityRecommendDataModel?.title == "" || communityRecommendDataModel?.title == nil) {
+                if communityRecommendDataModel?.content?.count ?? 0 >= 46 {
+                    cardContentTitleTableViewCellType = .noTitleMoreThan
+                }else {
+                    cardContentTitleTableViewCellType = .noTitleNoMoreThan
+                }
+            }else {
+                if communityRecommendDataModel?.content?.count ?? 0 >= 46 {
+                    cardContentTitleTableViewCellType = .titleMoreThan
+                }else {
+                    cardContentTitleTableViewCellType = .titleNoMoreThan
+                }
+            }
+        }
+    }
+    
     
     var cardContentTitleTableViewCellType: CardContentTitleTableViewCellType? {
         didSet {
             switch cardContentTitleTableViewCellType {
             case .noTitleMoreThan?:
                 titleLabel.isHidden = true
-                var str = " 在1962年,白人至上运动在美国又一次掀起小高潮,黑人邮政员维克写了这么一本小册黑人邮政员维克写了这么一本小册"
+                var str = (communityRecommendDataModel?.content)!
 
                 if str.count >= 46 {
                     str = String(str.prefix(46) + "...更多")
@@ -105,7 +123,7 @@ class CardContentTitleTableViewCell: UITableViewCell {
                 break
             case .noTitleNoMoreThan?:
                 titleLabel.isHidden = true
-                subtitleLabel.text = "在1962年,"
+                subtitleLabel.text = communityRecommendDataModel?.content
                 subtitleLabel.snp_remakeConstraints { (make) in
                     make.top.bottom.equalToSuperview()
                     make.left.equalTo(14)
@@ -114,8 +132,8 @@ class CardContentTitleTableViewCell: UITableViewCell {
                 break
             case .titleMoreThan?:
                 titleLabel.isHidden = false
-                titleLabel.text = "在1962年,白人至上运动在美国又一次掀起小高"
-                var str = " 在1962年,白人至上运动在美国又一次掀起小高潮,黑人邮政员维克写了这么一本小册黑人邮政员维克写了这么一本小册"
+                titleLabel.text = communityRecommendDataModel?.title
+                var str = (communityRecommendDataModel?.content)!
                 if str.count >= 46 {
                     str = String(str.prefix(46) + "...更多")
                     let str1 = str.suffix(2)
@@ -142,8 +160,8 @@ class CardContentTitleTableViewCell: UITableViewCell {
                 break
             case .titleNoMoreThan?:
                 titleLabel.isHidden = false
-                titleLabel.text = "在1962年,白人至上运动在美国又一次掀起小高"
-                subtitleLabel.text = "在1962年"
+                titleLabel.text = communityRecommendDataModel?.title
+                subtitleLabel.text = communityRecommendDataModel?.content
                 titleLabel.snp_remakeConstraints { (make) in
                     make.top.equalToSuperview()
                     make.leading.equalTo(14)

+ 9 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/CardContent/User/CardContentUserTableViewCell.swift

@@ -135,6 +135,15 @@ class CardContentUserTableViewCell: UITableViewCell {
         return setButton
     }()
     
+    var communityRecommendDataModel: CommunityRecommendDataModel? {
+        didSet {
+            avatarButton.kf.setImage(with: kURLImage(name: communityRecommendDataModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
+            titleButton.setTitle(communityRecommendDataModel?.username, for: UIControl.State.normal)
+            timeLabel.text = communityRecommendDataModel?.createdAt
+            followType = FollowType(rawValue: communityRecommendDataModel?.isFollow ?? 0)
+        }
+    }
+    
     var followType: FollowType! {
         didSet {
             switch followType {

+ 8 - 2
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/FeaturedTopics/FeaturedTopicsCollectionViewCell.swift

@@ -88,11 +88,17 @@ class FeaturedTopicsCollectionViewCell: UICollectionViewCell {
     
     private lazy var numberPeopleLable: UILabel = {
         let numberPeopleLable = UILabel()
-        numberPeopleLable.text = "8888人参与"
+        numberPeopleLable.text = "0人参与"
         numberPeopleLable.textColor = k999999Color
         numberPeopleLable.font = kRegularFont12
         return numberPeopleLable
     }()
     
-    
+    var communityRecommendTypeDataModel : CommunityRecommendTypeDataModel? {
+        didSet {
+            picImageView.kf.setImage(with: kURLImage(name: communityRecommendTypeDataModel?.img ?? ""), placeholder: kImage(name: "pic_preload"))
+            topicLabel.text = communityRecommendTypeDataModel?.name
+            numberPeopleLable.text = "\(communityRecommendTypeDataModel?.followCount ?? "0")人参与"
+        }
+    }
 }

+ 10 - 2
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/FeaturedTopics/FeaturedTopicsTableViewCell.swift

@@ -62,21 +62,29 @@ class FeaturedTopicsTableViewCell: UITableViewCell {
         collectionViewLayout.scrollDirection = .horizontal
         return collectionViewLayout
     }()
+    
+    var communityRecommendTypeDataModels: Array<CommunityRecommendTypeDataModel>? {
+        didSet {
+            collectionView.reloadData()
+        }
+    }
 
 }
 
 extension FeaturedTopicsTableViewCell: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
     func numberOfSections(in collectionView: UICollectionView) -> Int {
         
-        return 1
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : 1
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return 5
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : communityRecommendTypeDataModels?.count ?? 0
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = FeaturedTopicsCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
+        cell.communityRecommendTypeDataModel = communityRecommendTypeDataModels?[indexPath.row]
+
         return cell
         
     }

+ 9 - 1
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/PopularVideo/PopularVideoCollectionViewCell.swift

@@ -67,7 +67,7 @@ class PopularVideoCollectionViewCell: UICollectionViewCell {
     
     private lazy var avatarImageView : UIImageView = {
         let avatarImageView = UIImageView()
-        avatarImageView.image = kImage(name: "pic_preload")
+        avatarImageView.image = kImage(name: "defaul_tavatar")
         avatarImageView.cornerRadius = 27
         avatarImageView.masksToBounds = true
         return avatarImageView
@@ -81,4 +81,12 @@ class PopularVideoCollectionViewCell: UICollectionViewCell {
         return nameLabel
     }()
     
+    var communityRecommendTypeDataModel : CommunityRecommendTypeDataModel? {
+        didSet {
+            picImageView.kf.setImage(with: kURLImage(name: communityRecommendTypeDataModel?.img ?? ""), placeholder: kImage(name: "pic_preload"))
+            avatarImageView.kf.setImage(with: kURLImage(name: communityRecommendTypeDataModel?.avatar ?? ""), placeholder: kImage(name: "defaul_tavatar"))
+            nameLabel.text = communityRecommendTypeDataModel?.userName
+        }
+    }
+    
 }

+ 10 - 2
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/PopularVideo/PopularVideoTableViewCell.swift

@@ -62,19 +62,27 @@ class PopularVideoTableViewCell: UITableViewCell {
         return collectionViewLayout
     }()
     
+    var communityRecommendTypeDataModels: Array<CommunityRecommendTypeDataModel>? {
+        didSet {
+            collectionView.reloadData()
+        }
+    }
+    
 }
 
 extension PopularVideoTableViewCell: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
     func numberOfSections(in collectionView: UICollectionView) -> Int {
-        return 1
+        
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : 1
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return 5
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : communityRecommendTypeDataModels?.count ?? 0
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = PopularVideoCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
+        cell.communityRecommendTypeDataModel = communityRecommendTypeDataModels?[indexPath.row]
         return cell
         
     }

+ 9 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/RecommendFollow/CommunityRecommendFollowCollectionViewCell.swift

@@ -127,6 +127,15 @@ class CommunityRecommendFollowCollectionViewCell: UICollectionViewCell {
         return followButton
     }()
     
+    var communityRecommendTypeDataModel : CommunityRecommendTypeDataModel? {
+        didSet {
+            avatarButton.kf.setImage(with: kURLImage(name: communityRecommendTypeDataModel?.avatar ?? ""), for: UIControl.State.normal, placeholder: kImage(name: "defaul_tavatar"))
+            titleButton.setTitle(communityRecommendTypeDataModel?.userName, for: UIControl.State.normal)
+            topicLabel.text = "#\(communityRecommendTypeDataModel?.topicName ?? "")"
+            followType = FollowType(rawValue: communityRecommendTypeDataModel?.followStatus ?? 0)
+        }
+    }
+    
     var followType: FollowType! {
         didSet {
             switch followType {

+ 9 - 16
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/View/Cell/RecommendFollow/CommunityRecommendFollowTableViewCell.swift

@@ -67,36 +67,29 @@ class CommunityRecommendFollowTableViewCell: UITableViewCell {
     func followData(indexPath: IndexPath) {
         collectionView.reloadItems(at: [indexPath])
     }
+    
+    var communityRecommendTypeDataModels: Array<CommunityRecommendTypeDataModel>? {
+        didSet {
+            collectionView.reloadData()
+        }
+    }
 
 }
 
 extension CommunityRecommendFollowTableViewCell: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
     func numberOfSections(in collectionView: UICollectionView) -> Int {
         
-        return 1
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : 1
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return 20
+        return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : communityRecommendTypeDataModels?.count ?? 0
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         
         let cell = CommunityRecommendFollowCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
-        //关注状态
-        cell.followClosure = {
-            [weak self] in
-            self?.followData(indexPath: indexPath)
-        }
-        if indexPath.row % 3 == 0 {
-            cell.followType = .futureFollow
-        }
-        if indexPath.row % 3 == 1 {
-            cell.followType = .alreadyFollow
-        }
-        if indexPath.row % 3 == 2 {
-            cell.followType = .mutualFollow
-        }
+        cell.communityRecommendTypeDataModel = communityRecommendTypeDataModels?[indexPath.row]
         return cell
         
     }

+ 75 - 42
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Follow/CommunityFollowViewController.swift

@@ -12,6 +12,7 @@ import JXSegmentedView
 class CommunityFollowViewController: UIViewController {
     
     var cellHeightsDictionary = Dictionary<IndexPath, Any>()
+    var communityFollowDataModels = Array<CommunityFollowDataModel>()
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -23,7 +24,6 @@ class CommunityFollowViewController: UIViewController {
     func setupViews() {
         view.backgroundColor = kf7f8faColor
         view.addSubview(tableView)
-        tableView.tableHeaderView = followTableHeaderView
     }
     
     func setupLayouts() {
@@ -31,17 +31,6 @@ class CommunityFollowViewController: UIViewController {
             make.top.left.right.equalToSuperview()
             make.height.equalTo(kScreenHeight-48-kNavBarTotalHeight-kTabBarTotalHeight)
         }
-        tableView.reloadData()
-    }
-    
-    func setupData() {
-        //下拉刷新
-        tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) { (page) in
-            
-        }
-        tableView.addFooterWithWithHeader(withAutomaticallyRefresh: false) { (page) in
-            
-        }
     }
     
     private lazy var tableView: UITableView = {
@@ -58,6 +47,18 @@ class CommunityFollowViewController: UIViewController {
         return followTableHeaderView
     }()
     
+    func setupData() {
+        //下拉刷新
+        tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) {
+            [weak self] (page) in
+            self?.communityFollowFeedApi(page: page)
+        }
+        tableView.addFooterWithWithHeader(withAutomaticallyRefresh: false) {
+            [weak self] (page) in
+            self?.communityFollowFeedApi(page: page)
+        }
+    }
+    
     /// 关注接口
     func followData(indexPath: IndexPath) {
         tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
@@ -65,9 +66,38 @@ class CommunityFollowViewController: UIViewController {
 
 }
 
+extension CommunityFollowViewController {
+    
+    /// 关注feed流
+    ///
+    /// - Parameter page: 分页
+    func communityFollowFeedApi(page:Int) {
+        SwiftMoyaNetWorkServiceCommunity.shared().communityFollowFeedApi {
+            [weak self] (communityFollowFeedModel) -> (Void) in
+            let communityFollowFeedModel = communityFollowFeedModel as? CommunityFollowFeedModel
+            if communityFollowFeedModel?.pagination?.currentPage ?? 1  <= communityFollowFeedModel?.pagination?.totalPages ?? 1 {
+                if communityFollowFeedModel?.pagination?.currentPage == 1{
+                    self?.communityFollowDataModels.removeAll()
+                }
+                self?.communityFollowDataModels = (self?.communityFollowDataModels)! + (communityFollowFeedModel?.data!)!
+                if (self?.communityFollowDataModels.isEmpty)! {
+                    self?.tableView.tableHeaderView = self?.followTableHeaderView
+                }
+                self?.tableView.reloadData()
+                if  self?.communityFollowDataModels.count ?? 0 >= communityFollowFeedModel?.pagination?.total ?? 0 {
+                    self?.tableView.isHiddenFooter(true)
+                }
+            }else {
+                self?.tableView.endFooterNoMoreData()
+            }
+        }
+    }
+}
+
 extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSource {
     func numberOfSections(in tableView: UITableView) -> Int {
         return 23
+//        return communityFollowDataModels.isEmpty ? 0 : communityFollowDataModels.count
     }
     
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
@@ -76,6 +106,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
         }else {
             return 1
         }
+//        return 1
     }
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
@@ -146,7 +177,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 200
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -198,7 +229,8 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
+
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -250,8 +282,9 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 200
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
-                cardContentPicVideoModel.picAndVideo = 0
+
                 return cell
             case 2:
                 let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
@@ -303,7 +336,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -354,7 +387,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -405,7 +438,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 2
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -456,7 +489,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 3
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -507,7 +540,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 4
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -558,7 +591,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 5
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -609,7 +642,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 6
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -660,7 +693,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 7
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -711,7 +744,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 8
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -762,7 +795,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 9
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -813,7 +846,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -864,7 +897,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 cell.cardContentPicVideoModel = cardContentPicVideoModel
                 return cell
             case 2:
@@ -934,7 +967,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 200
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -956,7 +989,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -978,7 +1011,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 200
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1000,7 +1033,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1022,7 +1055,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1044,7 +1077,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 2
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1066,7 +1099,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 3
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1088,7 +1121,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 4
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1110,7 +1143,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 5
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1132,7 +1165,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 6
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1154,7 +1187,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 7
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1176,7 +1209,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 8
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1198,7 +1231,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 9
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1220,7 +1253,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 9
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1242,7 +1275,7 @@ extension CommunityFollowViewController : UITableViewDelegate,UITableViewDataSou
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension

+ 5 - 0
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Main/CommunityViewController.swift

@@ -98,6 +98,11 @@ class CommunityViewController: BaseViewController {
             
         }
         
+        // banner跳转
+        observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("CommunityBannerClosure"), object: nil, queue: OperationQueue.main) {(notification) in
+            
+        }
+        
         // 精选话题
         observe = NotificationCenter.default.addObserver(forName: NSNotification.Name("CommunityFeaturedTopics"), object: nil, queue: OperationQueue.main) {[weak self] (notification) in
             let vc = CommunityFeaturedTopicsViewController()

File diff suppressed because it is too large
+ 210 - 1087
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/Community/ViewController/Recommend/CommunityRecommnendViewController.swift


+ 30 - 30
RainbowPlanet/RainbowPlanet/Modules/CommunityModule/CommunityFeaturedTopics/ViewController/CommunityFeaturedTopicsViewController.swift

@@ -205,7 +205,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 100
             cardContentPicVideoModel.height = 200
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -257,7 +257,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 100
             cardContentPicVideoModel.height = 300
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -310,7 +310,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.width = 200
             cardContentPicVideoModel.height = 200
             cell.cardContentPicVideoModel = cardContentPicVideoModel
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             return cell
             case 2:
             let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
@@ -362,7 +362,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 200
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -413,7 +413,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -464,7 +464,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 2
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -515,7 +515,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 3
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -566,7 +566,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 4
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -617,7 +617,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 5
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -668,7 +668,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 6
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -719,7 +719,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 7
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -770,7 +770,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 8
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -821,7 +821,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 9
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 0
+            cardContentPicVideoModel.postType = .image
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -872,7 +872,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 100
             cardContentPicVideoModel.height = 300
-            cardContentPicVideoModel.picAndVideo = 1
+            cardContentPicVideoModel.postType = .video
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -923,7 +923,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
             cardContentPicVideoModel.number = 1
             cardContentPicVideoModel.width = 300
             cardContentPicVideoModel.height = 100
-            cardContentPicVideoModel.picAndVideo = 1
+            cardContentPicVideoModel.postType = .video
             cell.cardContentPicVideoModel = cardContentPicVideoModel
             return cell
             case 2:
@@ -973,7 +973,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 200
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -995,7 +995,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1017,7 +1017,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 200
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1039,7 +1039,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 200
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1061,7 +1061,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1083,7 +1083,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 2
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1105,7 +1105,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 3
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1127,7 +1127,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 4
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1149,7 +1149,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 5
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1171,7 +1171,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 6
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1193,7 +1193,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 7
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1215,7 +1215,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 8
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1237,7 +1237,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 9
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 0
+                cardContentPicVideoModel.postType = .image
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1259,7 +1259,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 9
                 cardContentPicVideoModel.width = 100
                 cardContentPicVideoModel.height = 300
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension
@@ -1281,7 +1281,7 @@ extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableVie
                 cardContentPicVideoModel.number = 1
                 cardContentPicVideoModel.width = 300
                 cardContentPicVideoModel.height = 100
-                cardContentPicVideoModel.picAndVideo = 1
+                cardContentPicVideoModel.postType = .video
                 return cardContentPicVideoModel.collectionViewHeight() + 20
             case 2:
                 return UITableView.automaticDimension

+ 88 - 0
RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityFollowFeedModel.swift

@@ -0,0 +1,88 @@
+//
+//	CommunityFollowFeedModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class CommunityFollowFeedModel : NSObject, Mappable{
+
+	var data : [CommunityFollowDataModel]?
+	var pagination : PaginationModel?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return CommunityFollowFeedModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		data <- map["data"]
+		pagination <- map["pagination"]
+		
+	}
+
+}
+
+class CommunityFollowDataModel : NSObject, Mappable{
+    
+    var content : CommunityFollowContentModel?
+    var createdAt : String?
+    var followAvatar : String?
+    var followUid : Int?
+    var followUsername : String?
+    var id : Int?
+    var relateData : AnyObject?
+    var relateId : Int?
+    var type : String?
+    var uid : Int?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityFollowDataModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        content <- map["content"]
+        createdAt <- map["created_at"]
+        followAvatar <- map["follow_avatar"]
+        followUid <- map["follow_uid"]
+        followUsername <- map["follow_username"]
+        id <- map["id"]
+        relateData <- map["relate_data"]
+        relateId <- map["relate_id"]
+        type <- map["type"]
+        uid <- map["uid"]
+        
+    }
+    
+}
+
+class CommunityFollowContentModel : NSObject, Mappable{
+    
+    var beans : Int?
+    var postDesc : String?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityFollowContentModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        beans <- map["beans"]
+        postDesc <- map["post_desc"]
+        
+    }
+    
+}
+
+

+ 226 - 0
RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityRecommendFeedModel.swift

@@ -0,0 +1,226 @@
+//
+//	CommunityRecommendFeedModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class CommunityRecommendFeedModel : NSObject, Mappable{
+
+	var data : [CommunityRecommendDataModel]?
+	var pagination : PaginationModel?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return CommunityRecommendFeedModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		data <- map["data"]
+		pagination <- map["pagination"]
+		
+	}
+
+}
+
+class CommunityRecommendDataModel : NSObject, Mappable{
+    
+    var followCount : Int?
+    var id : Int?
+    var img : String?
+    var name : String?
+    var avatar : String?
+    var comment : [CommunityRecommendCommentModel]?
+    var commentCount : Int?
+    var content : String?
+    var createdAt : String?
+    var data : [CommunityRecommendTypeDataModel]?
+    var imgs : [String]?
+    var isCollect : Int?
+    var isDislike : Int?
+    var isFollow : Int?
+    var isLike : Int?
+    var location : String?
+    var praiseCount : Int?
+    var pv : Int?
+    var showType : String?
+    var title : String?
+    var topic : [CommunityRecommendTopicModel]?
+    var type : String?
+    var uid : Int?
+    var username : String?
+    var video : String?
+    var willCollectBean : Int?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityRecommendDataModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        followCount <- map["follow_count"]
+        id <- map["id"]
+        img <- map["img"]
+        name <- map["name"]
+        avatar <- map["avatar"]
+        comment <- map["comment"]
+        commentCount <- map["comment_count"]
+        content <- map["content"]
+        createdAt <- map["created_at"]
+        data <- map["data"]
+        imgs <- map["imgs"]
+        isCollect <- map["is_collect"]
+        isDislike <- map["is_dislike"]
+        isFollow <- map["is_follow"]
+        isLike <- map["is_like"]
+        location <- map["location"]
+        praiseCount <- map["praise_count"]
+        pv <- map["pv"]
+        showType <- map["show_type"]
+        title <- map["title"]
+        topic <- map["topic"]
+        type <- map["type"]
+        uid <- map["uid"]
+        username <- map["username"]
+        video <- map["video"]
+        willCollectBean <- map["will_collect_bean"]
+        
+    }
+    
+}
+
+class CommunityRecommendTypeDataModel : NSObject, Mappable{
+    
+    // banner
+    var image : String?
+    var linkContentId : Int?
+    var type : Int?
+    
+    // 推荐关注/推荐视频 公共
+    var uid : Int?
+    var userName : String?
+    var avatar : String?
+    
+    // 推荐关注
+    var topicName : String?
+    var followStatus : Int?
+    
+    // 推荐视频 / 推荐话题
+    var id : Int?
+    var img : String?
+    
+    // 推荐话题
+    var name : String?
+    var followCount : String?
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityRecommendTypeDataModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        // banner
+        image <- map["image"]
+        linkContentId <- map["link_content_id"]
+        type <- map["type"]
+        
+        // 推荐关注/推荐视频 公共
+        uid <- map["uid"]
+        userName <- map["username"]
+        avatar <- map["avatar"]
+        
+        // 推荐关注
+        topicName <- map["topic_name"]
+        followStatus <- map["follow_status"]
+        
+        // 推荐视频 / 推荐话题
+        id <- map["id"]
+        img <- map["img"]
+        
+        // 推荐话题
+        name <- map["name"]
+        followCount <- map["follow_count"]
+        
+    }
+}
+
+class CommunityRecommendTopicModel: NSObject, Mappable{
+    
+    var id : Int?
+    var name : String?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityRecommendTopicModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        id <- map["id"]
+        name <- map["name"]
+        
+    }
+    
+}
+
+
+class CommunityRecommendCommentModel : NSObject , Mappable{
+    
+    var content : String?
+    var id : Int?
+    var reply : [CommunityRecommendReplyModel]?
+    var replyCount : Int?
+    var username : String?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityRecommendCommentModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        content <- map["content"]
+        id <- map["id"]
+        reply <- map["reply"]
+        replyCount <- map["reply_count"]
+        username <- map["username"]
+        
+    }
+    
+}
+
+class CommunityRecommendReplyModel : NSObject, Mappable{
+    
+    var content : String?
+    var replyUsername : String?
+    var username : String?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityRecommendReplyModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        content <- map["content"]
+        replyUsername <- map["reply_username"]
+        username <- map["username"]
+        
+    }
+    
+}

+ 32 - 12
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaNetWorkServiceCommunity.swift

@@ -11,18 +11,6 @@ import Moya
 import SwiftyJSON
 import ObjectMapper
 
-
-/// 个人中心内容
-///
-/// - create: 发布
-/// - collect: 收藏
-/// - share: <#share description#>
-enum CommunityPostMyType : String{
-    case create = "create"
-    case collect = "collect"
-    case share = "share"
-}
-
 public class SwiftMoyaNetWorkServiceCommunity: NSObject {
     
     private static let sharedInstance = SwiftMoyaNetWorkServiceCommunity()
@@ -127,5 +115,37 @@ public class SwiftMoyaNetWorkServiceCommunity: NSObject {
             completion(communityPostsModel)
         }
     }
+    
+    // MARK: - 多关注页面feed流
+    /// 多关注页面feed流
+    ///
+    /// - Parameters:
+    ///   - page: 多关注页面feed流
+    ///   - completion: 回调
+    func communityFollowFeedApi(page:Int = 1,completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        parameters.updateValue(page, forKey: "page")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared.requestObject(CommunityFollowFeedModel.self, target: MultiTarget(SwiftMoyaServiceCommunityApi.communityFollowFeed(parameters: parameters))) {  (communityFollowFeedModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(communityFollowFeedModel)
+        }
+    }
+    
+    
+    ///  推荐
+    ///
+    /// - Parameters:
+    ///   - page: 多关注页面feed流
+    ///   - completion: completion description
+    func communityPostSuggestApi(page:Int = 1,completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        parameters.updateValue(page, forKey: "page")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared.requestObject(CommunityRecommendFeedModel.self, target: MultiTarget(SwiftMoyaServiceCommunityApi.communityPostSuggest(parameters: parameters))) {  (communityRecommendFeedModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(communityRecommendFeedModel)
+        }
+    }
         
 }

+ 28 - 4
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaServiceCommunityApi.swift

@@ -29,6 +29,14 @@ public let kCommunityTopicsApi = "/community/topic"
 /// 内容列表
 public let kCommunityPostsApi = "/community/post"
 
+// MARK: - 关注页面feed流
+/// 关注页面feed流
+public let kCommunityFollowFeedApi = "/community/feed"
+
+// MARK: - 推荐内容
+/// 推荐内容
+public let kCommunityPostSuggestApi = "/community/post/suggest"
+
 
 /// 社区
 ///
@@ -37,12 +45,16 @@ public let kCommunityPostsApi = "/community/post"
 /// - communityPostMy: 个人中心内容
 /// - communityTopics: 话题列表
 /// - communityPosts: 内容列表
+/// - communityFeed: 关注页面feed流
+/// - communityPostSuggest: 关注页面feed流
 public enum SwiftMoyaServiceCommunityApi {
     case communityTopicCategory(parameters:Dictionary<String, Any>)
     case communityMemberFollowTopic(parameters:Dictionary<String, Any>)
     case communityPostMy(parameters:Dictionary<String, Any>)
     case communityTopics(parameters:Dictionary<String, Any>)
     case communityPosts(parameters:Dictionary<String, Any>)
+    case communityFollowFeed(parameters:Dictionary<String, Any>)
+    case communityPostSuggest(parameters:Dictionary<String, Any>)
 }
 
 extension SwiftMoyaServiceCommunityApi: TargetType {
@@ -53,7 +65,9 @@ extension SwiftMoyaServiceCommunityApi: TargetType {
              .communityMemberFollowTopic,
              .communityPostMy,
              .communityTopics,
-             .communityPosts
+             .communityPosts,
+             .communityFollowFeed,
+             .communityPostSuggest
             :
             return URL(string: kApiDataPrefix())!
         }
@@ -71,6 +85,10 @@ extension SwiftMoyaServiceCommunityApi: TargetType {
             return kCommunityTopicsApi
         case .communityPosts:
             return kCommunityPostsApi
+        case .communityFollowFeed:
+            return kCommunityFollowFeedApi
+        case .communityPostSuggest:
+            return kCommunityPostSuggestApi
         }
     }
     
@@ -82,7 +100,9 @@ extension SwiftMoyaServiceCommunityApi: TargetType {
         case .communityTopicCategory,
              .communityPostMy,
              .communityTopics,
-             .communityPosts
+             .communityPosts,
+             .communityFollowFeed,
+             .communityPostSuggest
             :
             return .get
             
@@ -96,7 +116,9 @@ extension SwiftMoyaServiceCommunityApi: TargetType {
              .communityMemberFollowTopic(var parameters),
              .communityPostMy(var parameters),
              .communityTopics(var parameters),
-             .communityPosts(var parameters)
+             .communityPosts(var parameters),
+             .communityFollowFeed(var parameters),
+             .communityPostSuggest(var parameters)
             :
             let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
             parameters.updateValue(sign, forKey: "sign")
@@ -123,7 +145,9 @@ extension SwiftMoyaServiceCommunityApi: TargetType {
              .communityMemberFollowTopic,
              .communityPostMy,
              .communityTopics,
-             .communityPosts
+             .communityPosts,
+             .communityFollowFeed,
+             .communityPostSuggest
             :
             return (headerParameters(headerType: .tokenHeader) as! [String : String])
         }

+ 1 - 3
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/ApiMacro.swift

@@ -13,7 +13,6 @@ let kDevelopSever = true
 let kBetaSever = false
 let kProductSever = false
 
-
 // MARK: - 数据服务器
 public func kApiDataPrefix() -> String {
     if kVirusPersonalService /** 接口前缀-开发服务器*/ {
@@ -50,7 +49,6 @@ public func kApiVirusPrefix() -> String {
     }
 }
 
-
 let kH5PersonalService = true
 let kH5DevelopSever = false
 let kH5BetaSever = false
@@ -61,7 +59,7 @@ public func kApiH5Prefix() -> String {
     if kH5PersonalService /** 接口前缀-开发服务器*/ {
         return "http://192.168.23.129:8820"
     }else if kH5DevelopSever /** 接口前缀-开发服务器*/ {
-        return "https://h5.dev.caihongxingqiu.com"
+        return "http://h5.dev.caihongxingqiu.com"
     } else if kH5BetaSever /** 接口前缀-测试服务器*/{
         return ""
     }else if kH5ProductSever /** 接口前缀-生产服务器*/ {