Przeglądaj źródła

话题组 && 话题列表 数据获取展示

Chris 5 lat temu
rodzic
commit
8112e34739

+ 1 - 1
RainbowPlanet/RainbowPlanet/Model/CommunityModel/CommunityTopicCategoryModel.swift

@@ -40,7 +40,7 @@ class CommunityTopicModel : NSObject, Mappable{
         return CommunityTopicModel()
     }
     required init?(map: Map){}
-    private override init(){}
+    override init(){}
     
     func mapping(map: Map)
     {

+ 4 - 0
RainbowPlanet/RainbowPlanet/Model/ConfigModel/ConfigModel.swift

@@ -11,6 +11,8 @@ class ConfigModel : NSObject, Mappable{
     
     static let shared : ConfigModel = ConfigModel()
     
+    var sharePostBean : Int?
+    var suggestImg: String?
     var findFriendImg : String?
     var orderExpiredTime : String?
     var virus : VirusModel?
@@ -27,6 +29,8 @@ class ConfigModel : NSObject, Mappable{
     
     func mapping(map: Map)
     {
+        sharePostBean <- map["share_post_bean"]
+        suggestImg <- map["suggest_img"]
         findFriendImg <- map["find_friend_img"]
         orderExpiredTime <- map["order_expired_time"]
         virus <- map["virus"]

+ 78 - 1
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishAddTopic/Controller/PublishAddTopicController.swift

@@ -13,6 +13,14 @@ import Photos
 
 class PublishAddTopicController: BaseViewController {
     
+    // 话题组のModelArr
+    var communityTopicModels = Array<CommunityTopicModel>()
+    
+    // 话题组下子话题のModelArr
+    var topicListModels = Array<CommunityTopicDataModel>()
+    
+    
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         setupViews()
@@ -39,6 +47,13 @@ class PublishAddTopicController: BaseViewController {
     
     override func setupData() {
         
+        communityTopicCategoryApi(page:1)
+        
+//        // 上啦加载
+//        tableView.addFooterWithWithHeader(withAutomaticallyRefresh: false) {
+//            [weak self] (page) in
+//            self?.communityTopicCategoryApi(page:page)
+//        }
     }
     
     lazy var tableView: UITableView = {
@@ -67,7 +82,7 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
         case 0:
             return 1
         case 1:
-            return 6
+            return topicListModels.count
         default:
             return 1
         }
@@ -77,9 +92,21 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
         switch indexPath.section {
         case 0:
             let picCell = PublishTopicTypeCell.cellWith(tableView: tableView, indexPath: indexPath)
+            picCell.topicModels = communityTopicModels
+            picCell.chooseTopicBlock = {
+                [weak self] (topicId, indexRow) in
+                if indexRow == 0 {
+                    // 推荐
+                    self?.communityTopicsApi(isSuggest: 1, categoryId: topicId, page: 1)
+                } else {
+                    // 其他
+                    self?.communityTopicsApi(isSuggest: 0, categoryId: topicId, page: 1)
+                }
+            }
             return picCell
         case 1:
             let titleCell = PublishTopicItemCell.cellWith(tableView: tableView, indexPath: indexPath)
+            titleCell.subTopicModel = topicListModels[indexPath.row]
             return titleCell
         default:
             return UITableViewCell()
@@ -126,3 +153,53 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
     }
     
 }
+
+// MARK: -
+extension PublishAddTopicController {
+    
+    /// 话题组
+    ///
+    /// - Parameters:
+    ///   - isSuggest: 是否推荐
+    ///   - page: 分页
+    func communityTopicCategoryApi(page:Int) {
+        SwiftMoyaNetWorkServiceCommunity.shared().communityTopicCategoryApi(isSuggest: 0, page: page) {   [weak self] (communityTopicCategoryModel) -> (Void) in
+            let topicCategoryModel = communityTopicCategoryModel as? CommunityTopicCategoryModel
+            if topicCategoryModel?.pagination?.currentPage ?? 1  <= topicCategoryModel?.pagination?.totalPages ?? 1 {
+                if topicCategoryModel?.pagination?.currentPage == 1{
+                    self?.communityTopicModels.removeAll()
+                }
+                self?.communityTopicModels = (self?.communityTopicModels)! + (topicCategoryModel?.data!)!
+                self?.tableView.reloadData()
+                if  self?.communityTopicModels.count ?? 0 >= topicCategoryModel?.pagination?.total ?? 0 {
+//                    self?.collectionView.isHiddenFooter(true)
+                }
+            }else {
+//                self?.collectionView.endFooterNoMoreData()
+            }
+        }
+    }
+    
+    /// 话题列表
+    ///
+    /// - Parameter page: 分页
+    func communityTopicsApi(isSuggest:Int, categoryId:Int, page:Int) {
+        SwiftMoyaNetWorkServiceCommunity.shared().communityTopicsApi(categoryId: categoryId, isSuggest: isSuggest, name: "", page: page) {
+            [weak self] (communityTopicsModel) -> (Void) in
+            let communityTopicsModel = communityTopicsModel as? CommunityTopicsModel
+            if communityTopicsModel?.pagination?.currentPage ?? 1  <= communityTopicsModel?.pagination?.totalPages ?? 1 {
+                if communityTopicsModel?.pagination?.currentPage == 1{
+                    self?.topicListModels.removeAll()
+                }
+                self?.topicListModels = (self?.topicListModels)! + (communityTopicsModel?.data!)!
+                self?.tableView.reloadData()
+                if  self?.topicListModels.count ?? 0 >= communityTopicsModel?.pagination?.total ?? 0 {
+                    self?.tableView.isHiddenFooter(true)
+                }
+            }else {
+                self?.tableView.endFooterNoMoreData()
+            }
+        }
+    }
+    
+}

+ 7 - 2
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishAddTopic/View/PublishTopicItemCell.swift

@@ -10,6 +10,13 @@ import UIKit
 
 class PublishTopicItemCell: UITableViewCell {
     
+    var subTopicModel: CommunityTopicDataModel? {
+        didSet {
+            titleLabel.text = self.subTopicModel?.name
+            joinLabel.text = "\(self.subTopicModel?.followCount ?? 0)人参与"
+        }
+    }
+    
     class func cellWith(tableView:UITableView,indexPath:IndexPath) -> PublishTopicItemCell {
         let ID = "PublishTopicItemCell"
         tableView.register(PublishTopicItemCell.self, forCellReuseIdentifier: ID)
@@ -67,7 +74,6 @@ class PublishTopicItemCell: UITableViewCell {
     
     private lazy var titleLabel: UILabel = {
         let titleLabel = UILabel()
-        titleLabel.text = "电影里教会我的事"
         titleLabel.textColor = k333333Color
         titleLabel.font = kRegularFont15
         titleLabel.textAlignment = .left
@@ -76,7 +82,6 @@ class PublishTopicItemCell: UITableViewCell {
     
     private lazy var joinLabel: UILabel = {
         let joinLabel = UILabel()
-        joinLabel.text = "3000人参与"
         joinLabel.textColor = kDDDDDDColor
         joinLabel.font = kRegularFont12
         joinLabel.textAlignment = .left

+ 20 - 8
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishAddTopic/View/PublishTopicTypeCell.swift

@@ -10,13 +10,23 @@ import UIKit
 
 class PublishTopicTypeCell: UITableViewCell {
     
-    typealias ChoosePicBlock = () -> Void
-    var choosePicBlock : ChoosePicBlock?
+    typealias ChooseTopicBlock = (_ topicId: Int, _ indexRow: Int) -> Void
+    var chooseTopicBlock : ChooseTopicBlock?
     
-    var imgCount: Int = 0
-    var goodsImageArr: Array<UIImage>? {
+    var topicCount: Int = 0
+    // 话题组のModelArr
+    var topicModels: Array<CommunityTopicModel>? {
         didSet {
-            imgCount = self.goodsImageArr?.count ?? 0
+            // 首个Item(推荐)为本地添加
+            let configModel = ConfigModel.shared.object()
+            let recommendMdl: CommunityTopicModel = CommunityTopicModel()
+            recommendMdl.name = "推荐"
+            recommendMdl.img = configModel?.suggestImg
+            recommendMdl.id = 0
+            self.topicModels?.insert(recommendMdl, at: 0)
+            
+            topicCount = self.topicModels?.count ?? 0
+            collectionView.reloadData()
         }
     }
     
@@ -84,11 +94,12 @@ extension PublishTopicTypeCell: UICollectionViewDelegateFlowLayout,UICollectionV
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return 6
+        return topicCount
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = PublishTopicTypeItemCollectionCell.cellWith(collectionView: collectionView, indexPath: indexPath)
+        cell.topicModel = topicModels?[indexPath.row]
         return cell
     }
     
@@ -101,8 +112,9 @@ extension PublishTopicTypeCell: UICollectionViewDelegateFlowLayout,UICollectionV
     }
     
     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-        if let choosePicBlock = self.choosePicBlock {
-            choosePicBlock()
+        if let chooseTopicBlock = self.chooseTopicBlock {
+            let tModel: CommunityTopicModel = topicModels![indexPath.row]
+            chooseTopicBlock(tModel.id ?? 0, indexPath.row)
         }
     }
     

+ 3 - 11
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishAddTopic/View/PublishTopicTypeItemCollectionCell.swift

@@ -13,17 +13,10 @@ class PublishTopicTypeItemCollectionCell: UICollectionViewCell {
     
     let disposeBag = DisposeBag()
     
-    var showImage: UIImage? {
+    var topicModel: CommunityTopicModel? {
         didSet {
-            if self.showImage != nil {
-                picImageView.image = self.showImage
-            }
-        }
-    }
-    
-    var productSearchModel: ProductSearchModel? {
-        didSet {
-            picImageView.kf.setImage(with: kURLImage(name: productSearchModel?.img ?? "pic_preload"), placeholder: kImage(name: "pic_preload"))
+            titleLabel.text = self.topicModel?.name
+            picImageView.kf.setImage(with: kURLImage(name: self.topicModel?.img ?? ""), placeholder: kImage(name: "pic_preload"))
         }
     }
     
@@ -89,7 +82,6 @@ class PublishTopicTypeItemCollectionCell: UICollectionViewCell {
     
     private lazy var titleLabel: UILabel = {
         let titleLabel = UILabel()
-        titleLabel.text = "文艺电影"
         titleLabel.textColor = kffffffColor
         titleLabel.font = kMediumFont14
         titleLabel.textAlignment = .center