Kaynağa Gözat

登录注册完成

南鑫林 5 yıl önce
ebeveyn
işleme
02c099588b
15 değiştirilmiş dosya ile 483 ekleme ve 73 silme
  1. 32 12
      RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj
  2. 13 12
      RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+Window.swift
  3. 0 1
      RainbowPlanet/RainbowPlanet/Base/BaseViewController/BaseViewController.swift
  4. 8 0
      RainbowPlanet/RainbowPlanet/Modules/MineModule/PersonalCenter/UserPersonalCenter/ViewController/UserPersonalCenterViewController.swift
  5. 13 3
      RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/RegisterLogin/ViewController/RegisterLoginViewController.swift
  6. 7 6
      RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/TopicSelection/View/TopicSelectionCollectionViewCell.swift
  7. 67 13
      RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/TopicSelection/ViewController/TopicSelectionViewController.swift
  8. 0 13
      RainbowPlanet/RainbowPlanet/Service/Model/CommonModel/CommondModel.swift
  9. 56 0
      RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityTopicCategoryModel.swift
  10. 91 0
      RainbowPlanet/RainbowPlanet/Service/Model/UserModel/UserDetailModel.swift
  11. 12 2
      RainbowPlanet/RainbowPlanet/Service/Model/UserModel/UserModel.swift
  12. 60 0
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaNetWorkServiceCommunity.swift
  13. 92 0
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaServiceCommunityApi.swift
  14. 15 5
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaNetWorkServiceUser.swift
  15. 17 6
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaServiceUserApi.swift

+ 32 - 12
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -269,7 +269,6 @@
 		A7B4E72D228176060012914A /* ProductMallBarChartCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E72C228176060012914A /* ProductMallBarChartCollectionViewCell.swift */; };
 		A7B4E72F2281773F0012914A /* ProductFloorCenterTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E72E2281773F0012914A /* ProductFloorCenterTitleView.swift */; };
 		A7B4E7352281907A0012914A /* CMSModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E7342281907A0012914A /* CMSModel.swift */; };
-		A7B4E738228191CC0012914A /* CommondModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E737228191CC0012914A /* CommondModel.swift */; };
 		A7B4E73A228192D20012914A /* CMSTemplateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E739228192D10012914A /* CMSTemplateModel.swift */; };
 		A7B4E754228278320012914A /* ShoppingMallFloorTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E753228278320012914A /* ShoppingMallFloorTableViewCell.swift */; };
 		A7B4E756228281620012914A /* ShoppingMallSlidingLeftRightBgCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B4E755228281620012914A /* ShoppingMallSlidingLeftRightBgCollectionViewCell.swift */; };
@@ -346,6 +345,10 @@
 		A7D5F24D22BC720000F8E9AF /* WVJBModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F24C22BC720000F8E9AF /* WVJBModel.swift */; };
 		A7D5F25022BC7B3700F8E9AF /* WebViewJavascriptBridgeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F24F22BC7B3700F8E9AF /* WebViewJavascriptBridgeManager.swift */; };
 		A7D5F25522BF8E6B00F8E9AF /* WaterFallLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F25422BF8E6A00F8E9AF /* WaterFallLayout.m */; };
+		A7D5F25722C05BE900F8E9AF /* UserDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F25622C05BE900F8E9AF /* UserDetailModel.swift */; };
+		A7D5F25A22C05D1400F8E9AF /* SwiftMoyaServiceCommunityApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F25922C05D1400F8E9AF /* SwiftMoyaServiceCommunityApi.swift */; };
+		A7D5F25C22C05E0800F8E9AF /* SwiftMoyaNetWorkServiceCommunity.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F25B22C05E0800F8E9AF /* SwiftMoyaNetWorkServiceCommunity.swift */; };
+		A7D5F25F22C0614400F8E9AF /* CommunityTopicCategoryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D5F25E22C0614400F8E9AF /* CommunityTopicCategoryModel.swift */; };
 		A7DC467F22783A47001F3EFC /* EditExpressAddressTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7DC467E22783A47001F3EFC /* EditExpressAddressTableViewCell.swift */; };
 		A7DF50D622A4E8B400998908 /* OrderDetailProductTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7DF50D522A4E8B400998908 /* OrderDetailProductTableViewCell.swift */; };
 		A7DF50D822A4FAFC00998908 /* ProductDetailEvaluationImageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7DF50D722A4FAFC00998908 /* ProductDetailEvaluationImageCollectionViewCell.swift */; };
@@ -837,7 +840,6 @@
 		A7B4E72C228176060012914A /* ProductMallBarChartCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductMallBarChartCollectionViewCell.swift; sourceTree = "<group>"; };
 		A7B4E72E2281773F0012914A /* ProductFloorCenterTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductFloorCenterTitleView.swift; sourceTree = "<group>"; };
 		A7B4E7342281907A0012914A /* CMSModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CMSModel.swift; sourceTree = "<group>"; };
-		A7B4E737228191CC0012914A /* CommondModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommondModel.swift; sourceTree = "<group>"; };
 		A7B4E739228192D10012914A /* CMSTemplateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CMSTemplateModel.swift; sourceTree = "<group>"; };
 		A7B4E753228278320012914A /* ShoppingMallFloorTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShoppingMallFloorTableViewCell.swift; sourceTree = "<group>"; };
 		A7B4E755228281620012914A /* ShoppingMallSlidingLeftRightBgCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShoppingMallSlidingLeftRightBgCollectionViewCell.swift; sourceTree = "<group>"; };
@@ -915,6 +917,10 @@
 		A7D5F24F22BC7B3700F8E9AF /* WebViewJavascriptBridgeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewJavascriptBridgeManager.swift; sourceTree = "<group>"; };
 		A7D5F25322BF8E6A00F8E9AF /* WaterFallLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaterFallLayout.h; sourceTree = "<group>"; };
 		A7D5F25422BF8E6A00F8E9AF /* WaterFallLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaterFallLayout.m; sourceTree = "<group>"; };
+		A7D5F25622C05BE900F8E9AF /* UserDetailModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDetailModel.swift; sourceTree = "<group>"; };
+		A7D5F25922C05D1400F8E9AF /* SwiftMoyaServiceCommunityApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaServiceCommunityApi.swift; sourceTree = "<group>"; };
+		A7D5F25B22C05E0800F8E9AF /* SwiftMoyaNetWorkServiceCommunity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaNetWorkServiceCommunity.swift; sourceTree = "<group>"; };
+		A7D5F25E22C0614400F8E9AF /* CommunityTopicCategoryModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommunityTopicCategoryModel.swift; sourceTree = "<group>"; };
 		A7DC467E22783A47001F3EFC /* EditExpressAddressTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditExpressAddressTableViewCell.swift; sourceTree = "<group>"; };
 		A7DF50D522A4E8B400998908 /* OrderDetailProductTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderDetailProductTableViewCell.swift; sourceTree = "<group>"; };
 		A7DF50D722A4FAFC00998908 /* ProductDetailEvaluationImageCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductDetailEvaluationImageCollectionViewCell.swift; sourceTree = "<group>"; };
@@ -1702,6 +1708,7 @@
 		A71D2A612265756E00A55D16 /* SwiftMoyaServiceApi */ = {
 			isa = PBXGroup;
 			children = (
+				A7D5F25822C05CF500F8E9AF /* SwiftMoyaServiceCommunity */,
 				A71738A42289787C000AEA6A /* SwiftMoyaServiceShop */,
 				A7A98E29228015BA005306E9 /* SwiftMoyaServiceCMS */,
 				A7A98DFB227E84D0005306E9 /* SwiftMoyaServiceProduct */,
@@ -1749,6 +1756,7 @@
 			isa = PBXGroup;
 			children = (
 				A7284403224DBFBD00F82F30 /* UserModel.swift */,
+				A7D5F25622C05BE900F8E9AF /* UserDetailModel.swift */,
 				A7CC74E52270628B003C4F38 /* DeliveryMethodTypeModel.swift */,
 				A757C92D22744ACE00226355 /* AddressManagerListModel.swift */,
 				A79057012276C9770037F823 /* SetPasswordModel.swift */,
@@ -2079,10 +2087,10 @@
 		A738D203225AEAD000EEE860 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				A7D5F25D22C0612A00F8E9AF /* CommunityModel */,
 				A7D5F24B22BC71ED00F8E9AF /* WVJBModel */,
 				A72A73722233966800B21995 /* RootModel */,
 				A71738A922898651000AEA6A /* ShopModel */,
-				A7B4E736228190810012914A /* CommonModel */,
 				A7A98E00227E88E8005306E9 /* ProductModel */,
 				BD1DC6C7228D002200B89C57 /* OrderModel */,
 				A79057032276D5FE0037F823 /* ConfigModel */,
@@ -2974,14 +2982,6 @@
 			path = CMSModel;
 			sourceTree = "<group>";
 		};
-		A7B4E736228190810012914A /* CommonModel */ = {
-			isa = PBXGroup;
-			children = (
-				A7B4E737228191CC0012914A /* CommondModel.swift */,
-			);
-			path = CommonModel;
-			sourceTree = "<group>";
-		};
 		A7B4E752228276270012914A /* Floor */ = {
 			isa = PBXGroup;
 			children = (
@@ -3505,6 +3505,23 @@
 			path = WaterFallLayout;
 			sourceTree = "<group>";
 		};
+		A7D5F25822C05CF500F8E9AF /* SwiftMoyaServiceCommunity */ = {
+			isa = PBXGroup;
+			children = (
+				A7D5F25922C05D1400F8E9AF /* SwiftMoyaServiceCommunityApi.swift */,
+				A7D5F25B22C05E0800F8E9AF /* SwiftMoyaNetWorkServiceCommunity.swift */,
+			);
+			path = SwiftMoyaServiceCommunity;
+			sourceTree = "<group>";
+		};
+		A7D5F25D22C0612A00F8E9AF /* CommunityModel */ = {
+			isa = PBXGroup;
+			children = (
+				A7D5F25E22C0614400F8E9AF /* CommunityTopicCategoryModel.swift */,
+			);
+			path = CommunityModel;
+			sourceTree = "<group>";
+		};
 		A7DF50D922A556C300998908 /* BrowsePictures */ = {
 			isa = PBXGroup;
 			children = (
@@ -4748,7 +4765,7 @@
 				BD7AB83D228438020030646A /* OrderPayExpressInfoShowCell.swift in Sources */,
 				A72A72C422321DE000B21995 /* Extension+CAGradientLayer.swift in Sources */,
 				A7778CA72243A05400C7C47A /* IQKeyboardManagerSwiftManager.swift in Sources */,
-				A7B4E738228191CC0012914A /* CommondModel.swift in Sources */,
+				A7D5F25C22C05E0800F8E9AF /* SwiftMoyaNetWorkServiceCommunity.swift in Sources */,
 				BD7AB841228438C80030646A /* OrderPaySelfPickAddressCell.swift in Sources */,
 				A7C0FDF022B6538200BC1E86 /* CommunityBannerFSPagerViewCell.swift in Sources */,
 				BD01B20022BC677900CE9F36 /* PublishVideoRecorderController.swift in Sources */,
@@ -4812,6 +4829,7 @@
 				A77F2CCA223209F2001BD3F6 /* BaseTabbarViewController.swift in Sources */,
 				A7BF202B22B396F300396DB3 /* CardContentTitleTableViewCell.swift in Sources */,
 				A70B2C1D2286B52400B2449F /* ProductDetailViewController.swift in Sources */,
+				A7D5F25A22C05D1400F8E9AF /* SwiftMoyaServiceCommunityApi.swift in Sources */,
 				A7CC75332271ABB0003C4F38 /* AddressManagerViewController.swift in Sources */,
 				A7FF158C228C911C00A85748 /* OrderRefunddetailsViewController.swift in Sources */,
 				BD12B67D22B4EE6D00AEB10B /* KSMediaPickerItemModel.swift in Sources */,
@@ -4911,6 +4929,7 @@
 				A775CC00223774A300EBDCF8 /* ShoppingMallView.swift in Sources */,
 				A7FF1555228AC27600A85748 /* ProductAllCommentView.swift in Sources */,
 				A7CC7526227196A8003C4F38 /* AccountSecurityTableViewCell.swift in Sources */,
+				A7D5F25722C05BE900F8E9AF /* UserDetailModel.swift in Sources */,
 				BDF47D80228288F900941AB9 /* ShoppingCartAccountView.swift in Sources */,
 				A7284401224DBB7700F82F30 /* SwiftMoyaNetWorkServiceUser.swift in Sources */,
 				A7B4E728228160BA0012914A /* ProductRightSideleftPictureCollectionViewCell.swift in Sources */,
@@ -4949,6 +4968,7 @@
 				BDF47D872282C92200941AB9 /* ShoppingCartListTableViewHeader.swift in Sources */,
 				BD13B6E122BA03BC008BB323 /* PublishSelTopicCollectionCell.swift in Sources */,
 				A70B2C46228840B100B2449F /* ProductDetailHotSellTableViewCell.swift in Sources */,
+				A7D5F25F22C0614400F8E9AF /* CommunityTopicCategoryModel.swift in Sources */,
 				A7778CDF22461BAD00C7C47A /* PhoneCountryAreaSectionHeaderView.swift in Sources */,
 				A7A98E2D22801642005306E9 /* SwiftMoyaServiceCMSApi.swift in Sources */,
 				A70B2C402288312900B2449F /* ProductDetailSectionHeader.swift in Sources */,

+ 13 - 12
RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+Window.swift

@@ -30,18 +30,19 @@ extension AppDelegate {
         DeliveryMethodTypeModel.shared().setModel(model: deliveryMethodTypeModel)
         
         /// 判断初始化页面
-        if (UserModel.shared().getModel()?.token) != nil && ( UserModel.shared().getModel()?.gender != nil || UserModel.shared().getModel()?.gender == 0) {//设置性别话题
-            setSexViewController()
-            SwiftMoyaNetWorkServiceUser.shared().userRefreshApi { _ in }
-        }else if (UserModel.shared().getModel()?.token) != nil && ( UserModel.shared().getModel()?.gender != nil || UserModel.shared().getModel()?.gender == 1 || UserModel.shared().getModel()?.gender == 2) { //设置首页
-            setTabbarController()
-            SwiftMoyaNetWorkServiceUser.shared().userRefreshApi { _ in }
-        }
-//        else if (UserModel.shared().getModel()?.token) != nil && ( UserModel.shared().getModel()?.isFollow == nil || UserModel.shared().getModel()?.isFollow == 0) { //设置关注话题
-//            setTopicViewController()
-//            SwiftMoyaNetWorkServiceUser.shared().userRefreshApi { _ in }
-//        }
-        else {// 设置登录
+        if (UserModel.shared().getModel()?.token) != nil { //是否已经登录
+
+            if (UserModel.shared().getModel()?.gender == nil || UserModel.shared().getModel()?.gender == 0) {//设置性别
+                setSexViewController()
+            }else if (UserModel.shared().getModel()?.gender == 1 || UserModel.shared().getModel()?.gender == 2) && UserModel.shared().getModel()?.isFollowSuggestTopic == 0  { //设置话题
+                setTopicViewController()
+            }else if (UserModel.shared().getModel()?.gender == 1 || UserModel.shared().getModel()?.gender == 2) && UserModel.shared().getModel()?.isFollowSuggestTopic == 1 { //设置首页
+                setTabbarController()
+                SwiftMoyaNetWorkServiceUser.shared().userRefreshApi { _ in }
+            }else {// 设置登录
+                setLoginController()
+            }
+        }else {// 设置登录
             setLoginController()
         }
 

+ 0 - 1
RainbowPlanet/RainbowPlanet/Base/BaseViewController/BaseViewController.swift

@@ -27,7 +27,6 @@ class BaseViewController: UIViewController {
                 self.automaticallyAdjustsScrollViewInsets = true
             }
         }
-       let path = Bundle(for: type(of: self)).path(forResource: "", ofType: nil)
         setupNavigationBar()
     }
     

+ 8 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/PersonalCenter/UserPersonalCenter/ViewController/UserPersonalCenterViewController.swift

@@ -199,6 +199,14 @@ class UserPersonalCenterViewController: BaseViewController {
     
 }
 
+extension UserPersonalCenterViewController {
+    func userMemberDetailApi() {
+        SwiftMoyaNetWorkServiceUser.shared().userMemberDetailApi { (userDetailModel) -> (Void) in
+            
+        }
+    }
+}
+
 extension UserPersonalCenterViewController : JXSegmentedViewDelegate {
     //点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,而不关心具体是点击还是滚动选中的情况。
     func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {

+ 13 - 3
RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/RegisterLogin/ViewController/RegisterLoginViewController.swift

@@ -32,12 +32,22 @@ class RegisterLoginViewController: BaseViewController {
         let registerLoginView = RegisterLoginView()
         // 微信注册登录
         registerLoginView.weiXinLoginBlock = { [weak self] in
-            UMManager.shared().loginGetUserInfo(platformType: UMSocialPlatformType.wechatSession) { (UserModel) -> (Void) in
-                let wxLoginModel = UserModel
+            UMManager.shared().loginGetUserInfo(platformType: UMSocialPlatformType.wechatSession) { (userModel) -> (Void) in
+                let wxLoginModel = userModel
                 SwiftMoyaNetWorkServiceUser.shared().userWeiXinRegisterApi(open_id: wxLoginModel.open_id, union_id: wxLoginModel.union_id, avatar: wxLoginModel.avatar, username: wxLoginModel.username, gender: wxLoginModel.gender, completion: { (userModel) -> (Void) in
                     let userModel =  userModel as! UserModel
                     if (userModel.mobile != nil && userModel.mobile != "" ) {
-                        self?.navigationController?.pushViewController(LocationViewController(), animated: true)
+                        
+                        UserModel.shared().setModel(model: userModel)
+                        
+                        if(userModel.gender == nil || userModel.gender == 0) {//设置性别话题
+                            self?.present(GenderSelectionViewController(), animated: true, completion: {
+                                
+                            })
+                        }else {// 设置首页
+                            kAppDelegate.setTabbarController()
+                            self?.navigationController?.popToRootViewController(animated: false)
+                        }
                     }else {
                         let vc = BindPhoneNumberViewController()
                         vc.bindPhoneNumberVCType = .weixinlogin

+ 7 - 6
RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/TopicSelection/View/TopicSelectionCollectionViewCell.swift

@@ -49,9 +49,9 @@ class TopicSelectionCollectionViewCell: UICollectionViewCell {
             make.size.equalTo(22 * kScaleWidth)
         }
         titleLabel.snp.makeConstraints { (make) in
-            make.bottom.equalTo(5 * kScaleWidth)
-            make.left.equalTo(5 * kScreenWidth)
-            make.right.equalTo(-5 * kScreenWidth)
+            make.bottom.equalTo(-5 * kScaleWidth)
+            make.left.equalTo(5 * kScaleWidth)
+            make.right.equalTo(-5 * kScaleWidth)
         }
     }
     
@@ -77,7 +77,6 @@ class TopicSelectionCollectionViewCell: UICollectionViewCell {
     
     private lazy var titleLabel: UILabel = {
         let titleLabel = UILabel()
-        titleLabel.text = "生活方式"
         titleLabel.textColor = kffffffColor
         titleLabel.font = kScaleRegularFont14
         titleLabel.textAlignment = .center
@@ -85,9 +84,11 @@ class TopicSelectionCollectionViewCell: UICollectionViewCell {
         return titleLabel
     }()
     
-    var topicSelectionModel: TopicSelectionModel? {
+    var communityTopicModel: CommunityTopicModel? {
         didSet {
-            selectionButton.isSelected = topicSelectionModel?.isSelected ?? false
+            iconImageView.kf.setImage(with: kURLImage(name: communityTopicModel?.img ?? ""), placeholder: kImage(name: "pic_preload"))
+            titleLabel.text = communityTopicModel?.desc
+            selectionButton.isSelected = communityTopicModel?.isSelected ?? false
         }
     }
     

+ 67 - 13
RainbowPlanet/RainbowPlanet/Modules/RegisterLoginModule/TopicSelection/ViewController/TopicSelectionViewController.swift

@@ -12,7 +12,7 @@ class TopicSelectionViewController: BaseViewController {
     
     var indexPathDict = Dictionary<Int, Any>()
     
-    var TopicSelectionModels = Array<TopicSelectionModel>()
+    var communityTopicModels = Array<CommunityTopicModel>()
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -54,10 +54,14 @@ class TopicSelectionViewController: BaseViewController {
     }
     
     override func setupData() {
-        for _ in 0...11 {
-            TopicSelectionModels.append(TopicSelectionModel())
+        
+        communityTopicCategoryApi(page:1)
+        // 上啦加载
+        collectionView.addFooterWithWithHeader(withAutomaticallyRefresh: false) {
+            [weak self] (page) in
+            self?.communityTopicCategoryApi(page:page)
         }
-        collectionView.reloadData()
+
     }
     
     private lazy var titleLable: UILabel = {
@@ -107,6 +111,57 @@ class TopicSelectionViewController: BaseViewController {
         goButton.masksToBounds = true
         goButton.rx.tap.subscribe(onNext: {
             [weak self] (data) in
+            self?.communityMemberFollowTopicApi()
+        }).disposed(by: disposeBag)
+        return goButton
+    }()
+}
+
+extension TopicSelectionViewController {
+    
+    /// 话题组
+    ///
+    /// - Parameters:
+    ///   - isSuggest: 是否推荐
+    ///   - page: 分页
+    func communityTopicCategoryApi(page:Int) {
+        SwiftMoyaNetWorkServiceCommunity.shared().communityTopicCategoryApi(isSuggest: 1, page: page) {   [weak self] (communityTopicCategoryModel) -> (Void) in
+            let communityTCopicCategoryModel = communityTopicCategoryModel as? CommunityTopicCategoryModel
+            if communityTCopicCategoryModel?.pagination?.currentPage ?? 1  <= communityTCopicCategoryModel?.pagination?.totalPages ?? 1 {
+                if communityTCopicCategoryModel?.pagination?.currentPage == 1{
+                    self?.communityTopicModels.removeAll()
+                }
+                self?.communityTopicModels = (self?.communityTopicModels)! + (communityTCopicCategoryModel?.data!)!
+                self?.collectionView.reloadData()
+                if  self?.communityTopicModels.count ?? 0 <= communityTCopicCategoryModel?.pagination?.perPage ?? 0 {
+                    self?.collectionView.isHiddenFooter(true)
+                }
+            }else {
+                self?.collectionView.endFooterNoMoreData()
+            }
+        }
+    }
+    
+    
+    /// 关注话题组
+    ///
+    /// - Parameter topicGroupIds: 关注话题组ids
+    func communityMemberFollowTopicApi() {
+        
+        var topicGroupIdArray = Array<String>()
+        if indexPathDict.count != 0 {
+            for dic in indexPathDict {
+                let communityTopicModel = dic.value as! CommunityTopicModel
+                topicGroupIdArray.append("\(communityTopicModel.id ?? 0)")
+            }
+        }
+        let topicGroupIds = topicGroupIdArray.joined(separator: ",")
+        
+        SwiftMoyaNetWorkServiceCommunity.shared().communityMemberFollowTopicApi(topicGroupIds: topicGroupIds) {
+            [weak self] (data) -> (Void) in
+            let userModel = UserModel.shared().getModel()
+            userModel?.isFollowSuggestTopic = 1
+            UserModel.shared().setModel(model: userModel!)
             if self?.presentingViewController != nil {
                 self?.dismiss(animated: false, completion: {
                     kAppDelegate.setTabbarController()
@@ -114,33 +169,32 @@ class TopicSelectionViewController: BaseViewController {
             } else {
                 kAppDelegate.setTabbarController()
             }
-        }).disposed(by: disposeBag)
-        return goButton
-    }()
+        }
+    }
 }
 
 extension TopicSelectionViewController: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
     func numberOfSections(in collectionView: UICollectionView) -> Int {
         
-        return 1
+        return communityTopicModels.isEmpty ? 0 : 1
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return TopicSelectionModels.count
+        return communityTopicModels.isEmpty ? 0 : communityTopicModels.count
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = TopicSelectionCollectionViewCell.cellWith(collectionView: collectionView, indexPath: indexPath)
-        cell.topicSelectionModel = TopicSelectionModels[indexPath.row]
+        cell.communityTopicModel = communityTopicModels[indexPath.row]
         return cell
         
     }
     
     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
         let cell = collectionView.cellForItem(at: indexPath) as! TopicSelectionCollectionViewCell
-        cell.topicSelectionModel?.isSelected = !(cell.topicSelectionModel?.isSelected ?? false)
-        if cell.topicSelectionModel?.isSelected ?? false {
-            indexPathDict.updateValue(indexPath, forKey: indexPath.row)
+        cell.communityTopicModel?.isSelected = !(cell.communityTopicModel?.isSelected ?? false)
+        if cell.communityTopicModel?.isSelected ?? false {
+            indexPathDict.updateValue(cell.communityTopicModel as Any, forKey: indexPath.row)
         }else {
             indexPathDict.removeValue(forKey: indexPath.row)
         }

+ 0 - 13
RainbowPlanet/RainbowPlanet/Service/Model/CommonModel/CommondModel.swift

@@ -1,13 +0,0 @@
-//
-//  CommondModel.swift
-//  RainbowPlanet
-//
-//  Created by 南鑫林 on 2019/5/7.
-//  Copyright © 2019 南鑫林. All rights reserved.
-//
-
-import UIKit
-
-class CommondModel: NSObject {
-
-}

+ 56 - 0
RainbowPlanet/RainbowPlanet/Service/Model/CommunityModel/CommunityTopicCategoryModel.swift

@@ -0,0 +1,56 @@
+//
+//	CommunityTopicCategoryModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class CommunityTopicCategoryModel : NSObject, Mappable{
+
+	var data : [CommunityTopicModel]?
+	var pagination : PaginationModel?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return CommunityTopicCategoryModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		data <- map["data"]
+		pagination <- map["pagination"]
+		
+	}
+}
+
+class CommunityTopicModel : NSObject, Mappable{
+    
+    var desc : String?
+    var id : Int?
+    var img : String?
+    var isSuggest : Int?
+    var name : String?
+    var isSelected : Bool = false
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return CommunityTopicModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        desc <- map["desc"]
+        id <- map["id"]
+        img <- map["img"]
+        isSuggest <- map["is_suggest"]
+        name <- map["name"]
+        
+    }
+    
+}
+

+ 91 - 0
RainbowPlanet/RainbowPlanet/Service/Model/UserModel/UserDetailModel.swift

@@ -0,0 +1,91 @@
+//
+//	UserDetailModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class UserDetailModel : NSObject, Mappable{
+
+	var activityDegree : Int?
+	var avatar : String?
+	var backgroundImg : String?
+	var behaviorData : String?
+	var cityId : String?
+	var cityName : String?
+	var collectCount : String?
+	var commentCount : String?
+	var createdAt : String?
+	var fansCount : String?
+	var followCount : String?
+	var gender : Int?
+	var inviteCode : String?
+	var inviteUid : Int?
+	var labelName : AnyObject?
+	var memberStatus : Int?
+	var mobile : String?
+	var openId : AnyObject?
+	var postCount : String?
+	var praiseCount : String?
+	var qualityDegree : Int?
+	var rainbowBean : Int?
+	var remark : String?
+	var shareCount : String?
+	var signature : String?
+	var snsData : String?
+	var snsStatus : Int?
+	var strength : Int?
+	var totalBean : Int?
+	var type : Int?
+	var uid : Int?
+	var unionId : AnyObject?
+	var updatedAt : String?
+	var username : String?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return UserDetailModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		activityDegree <- map["activity_degree"]
+		avatar <- map["avatar"]
+		backgroundImg <- map["background_img"]
+		behaviorData <- map["behavior_data"]
+		cityId <- map["city_id"]
+		cityName <- map["city_name"]
+		collectCount <- map["collect_count"]
+		commentCount <- map["comment_count"]
+		createdAt <- map["created_at"]
+		fansCount <- map["fans_count"]
+		followCount <- map["follow_count"]
+		gender <- map["gender"]
+		inviteCode <- map["invite_code"]
+		inviteUid <- map["invite_uid"]
+		labelName <- map["label_name"]
+		memberStatus <- map["member_status"]
+		mobile <- map["mobile"]
+		openId <- map["open_id"]
+		postCount <- map["post_count"]
+		praiseCount <- map["praise_count"]
+		qualityDegree <- map["quality_degree"]
+		rainbowBean <- map["rainbow_bean"]
+		remark <- map["remark"]
+		shareCount <- map["share_count"]
+		signature <- map["signature"]
+		snsData <- map["sns_data"]
+		snsStatus <- map["sns_status"]
+		strength <- map["strength"]
+		totalBean <- map["total_bean"]
+		type <- map["type"]
+		uid <- map["uid"]
+		unionId <- map["union_id"]
+		updatedAt <- map["updated_at"]
+		username <- map["username"]
+		
+	}
+}

+ 12 - 2
RainbowPlanet/RainbowPlanet/Service/Model/UserModel/UserModel.swift

@@ -27,7 +27,8 @@ class UserModel : NSObject, NSCoding, Mappable{
     var uid : Int?
     var unionId : String?
     var username : String?
-    var isFollow : Int?
+    var isFollowSuggestTopic : Int?
+    var isNewMember : Int?
 
 
 	class func newInstance(map: Map) -> Mappable?{
@@ -47,7 +48,8 @@ class UserModel : NSObject, NSCoding, Mappable{
         tokenTtl <- map["token_ttl"]
         uid <- map["uid"]
         unionId <- map["union_id"]
-        username <- map["username"]
+        isFollowSuggestTopic <- map["is_follow_suggest_topic"]
+        isNewMember <- map["is_new_member"]
 		
 	}
 
@@ -68,6 +70,8 @@ class UserModel : NSObject, NSCoding, Mappable{
         uid = aDecoder.decodeObject(forKey: "uid") as? Int
         unionId = aDecoder.decodeObject(forKey: "union_id") as? String
         username = aDecoder.decodeObject(forKey: "username") as? String
+        isFollowSuggestTopic = aDecoder.decodeObject(forKey: "is_follow_suggest_topic") as? Int
+        isNewMember = aDecoder.decodeObject(forKey: "is_new_member") as? Int
 
 	}
 
@@ -110,6 +114,12 @@ class UserModel : NSObject, NSCoding, Mappable{
         if username != nil{
             aCoder.encode(username, forKey: "username")
         }
+        if isFollowSuggestTopic != nil{
+            aCoder.encode(isFollowSuggestTopic, forKey: "is_follow_suggest_topic")
+        }
+        if isNewMember != nil{
+            aCoder.encode(isNewMember, forKey: "is_new_member")
+        }
 
 	}
 

+ 60 - 0
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaNetWorkServiceCommunity.swift

@@ -0,0 +1,60 @@
+//
+//  SwiftMoyaNetWorkServiceCommunity.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/6/24.
+//  Copyright © 2019 RainbowPlanet. All rights reserved.
+//
+
+import Foundation
+import Moya
+import SwiftyJSON
+import ObjectMapper
+
+public class SwiftMoyaNetWorkServiceCommunity: NSObject {
+    
+    private static let sharedInstance = SwiftMoyaNetWorkServiceCommunity()
+    
+    private override init() {} // 私有化init方法
+    
+    public class func shared() -> SwiftMoyaNetWorkServiceCommunity {
+        return sharedInstance
+    }
+    
+    /// 数据回调
+    typealias apiCallBack = (Any) -> (Void)
+    
+    // MARK: - 话题组列表
+    /// 话题组列表
+    ///
+    /// - Parameters:
+    ///   - isSuggest: 是否推荐
+    ///   - completion: 回调
+    func communityTopicCategoryApi(isSuggest:Int = 0,page:Int = 1,completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        parameters.updateValue(isSuggest, forKey: "is_suggest")
+        parameters.updateValue(page, forKey: "page")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared.requestObject(CommunityTopicCategoryModel.self,target: MultiTarget(SwiftMoyaServiceCommunityApi.communityTopicCategory(parameters: parameters))) { (communityTopicCategoryModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(communityTopicCategoryModel)
+        }
+    }
+    
+    // MARK: - 关注推荐话题
+    /// 关注推荐话题
+    ///
+    /// - Parameters:
+    ///   - topic_group_ids: 话题组
+    ///   - completion: 回调
+    func communityMemberFollowTopicApi(topicGroupIds:String = "",completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        parameters.updateValue(topicGroupIds, forKey: "topic_group_ids")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceCommunityApi.communityMemberFollowTopic(parameters: parameters))) { (data) in
+            SwiftProgressHUD.shared().hide()
+            completion("")
+        }
+    }
+        
+}

+ 92 - 0
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCommunity/SwiftMoyaServiceCommunityApi.swift

@@ -0,0 +1,92 @@
+//
+//  SwiftMoyaServiceCommunityApi.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/6/24.
+//  Copyright © 2019 RainbowPlanet. All rights reserved.
+//
+
+import Foundation
+import Moya
+
+// MARK: - 话题组列表
+/// 话题组列表
+public let kCommunityTopicCategoryApi = "/community/topicCategory"
+
+// MARK: - 关注推荐话题
+/// 关注推荐话题
+public let kCommunityMemberFollowTopicApi = "/community/memberFollowTopic"
+
+public enum SwiftMoyaServiceCommunityApi {
+    case communityTopicCategory(parameters:Dictionary<String, Any>)
+    case communityMemberFollowTopic(parameters:Dictionary<String, Any>)
+}
+
+extension SwiftMoyaServiceCommunityApi: TargetType {
+    
+    public var baseURL: URL {
+        switch self {
+        case .communityTopicCategory,
+             .communityMemberFollowTopic
+            :
+            return URL(string: kApiDataPrefix())!
+        }
+    }
+    
+    public var path: String {
+        switch self {
+        case .communityTopicCategory:
+            return kCommunityTopicCategoryApi
+        case .communityMemberFollowTopic:
+            return kCommunityMemberFollowTopicApi
+        }
+    }
+    
+    public var method: Moya.Method {
+        switch self {
+        case .communityMemberFollowTopic
+            :
+            return .post
+        case .communityTopicCategory
+            :
+            return .get
+            
+        }
+    }
+    
+    // MARK: - 请求任务事件(这里附带上参数)
+    public var task: Task {
+        switch self {
+        case .communityTopicCategory(var parameters),
+             .communityMemberFollowTopic(var parameters)
+            :
+            let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
+            parameters.updateValue(sign, forKey: "sign")
+            return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+        }
+    }
+    
+    
+    // MARK: - 是否执行Alamofire验证
+    public var validate: Bool {
+        return false
+    }
+    
+    // MARK: - 这个就是做单元测试模拟的数据,只会在单元测试文件中有作用
+    public var sampleData: Data {
+        return "{}".data(using: String.Encoding.utf8)!
+    }
+    
+    // MARK: - 请求头
+    public var headers: [String : String]? {
+        //同task,具体选择看后台 有application/x-www-form-urlencoded 、application/json
+        switch self {
+        case .communityTopicCategory,
+             .communityMemberFollowTopic
+            :
+            return (headerParameters(headerType: .tokenHeader) as! [String : String])
+        }
+    }
+    
+}
+

+ 15 - 5
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaNetWorkServiceUser.swift

@@ -44,9 +44,6 @@ public class SwiftMoyaNetWorkServiceUser: NSObject {
         SwiftProgressHUD.shared().showWait()
         SwiftMoyaNetWorkManager.shared.requestObject(UserModel.self,target: MultiTarget(SwiftMoyaServiceUserApi.userWeiXinRegister(parameters: parameters))) { (userModel) in
             let userModel = userModel as! UserModel
-            if userModel.mobile != nil || userModel.mobile != "" {
-                UserModel.shared().setModel(model: userModel)
-            }
             SwiftProgressHUD.shared().hide()
             completion(userModel as Any)
         }
@@ -538,9 +535,9 @@ public class SwiftMoyaNetWorkServiceUser: NSObject {
     ///   - completion: 回调
     func userGenderApi(gender:Int = 0,completion: @escaping apiCallBack) {
         var parameters = Dictionary<String,Any>()
-        parameters.updateValue(gender, forKey: "deliver_type")
+        parameters.updateValue(gender, forKey: "gender")
         SwiftProgressHUD.shared().showWait()
-        SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userSetDeliverType(parameters: parameters))) { (data) in
+        SwiftMoyaNetWorkManager.shared.requestAny(target: MultiTarget(SwiftMoyaServiceUserApi.userMemberUpdateGender(parameters: parameters))) { (data) in
             // 设置成功更新本地存储数据
             let model = UserModel.shared().getModel()
             model?.gender = gender
@@ -549,5 +546,18 @@ public class SwiftMoyaNetWorkServiceUser: NSObject {
             completion("")
         }
     }
+    
+    // MARK: - 用户信息详情
+    /// 用户信息详情
+    ///
+    /// - Parameter completion: 回调UserDetailModel
+    func userMemberDetailApi(completion: @escaping apiCallBack) {
+        let parameters = Dictionary<String,Any>()
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared.requestObject(UserDetailModel.self, target: MultiTarget(SwiftMoyaServiceUserApi.userMemberDetail(parameters: parameters))) { (userDetailModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(userDetailModel)
+        }
+    }
 
 }

+ 17 - 6
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceUser/SwiftMoyaServiceUserApi.swift

@@ -99,7 +99,11 @@ public let kUserSetDeliverTypeApi = "/user/setDeliverType"
 
 // MARK: - 设置用户性别
 /// 设置用户性别
-public let kUserMemberUpdateGenderApi = "user/v2/member/updateGender"
+public let kUserMemberUpdateGenderApi = "/user/v2/member/updateGender"
+
+// MARK: - 用户详情
+/// 用户详情
+public let kUserMemberDetailApi = "/user/v2/member"
 
 /// 用户
 ///
@@ -149,6 +153,7 @@ public enum SwiftMoyaServiceUserApi {
     case userAddSelfAddress(parameters:Dictionary<String, Any>)
     case userSetDeliverType(parameters:Dictionary<String, Any>)
     case userMemberUpdateGender(parameters:Dictionary<String, Any>)
+    case userMemberDetail(parameters:Dictionary<String, Any>)
     
 }
 
@@ -178,7 +183,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userSetExpreesContactsDefault,
              .userAddSelfAddress,
              .userSetDeliverType,
-             .userMemberUpdateGender
+             .userMemberUpdateGender,
+             .userMemberDetail
             :
             return URL(string: kApiDataPrefix())!
         }
@@ -232,6 +238,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              return kUserSetDeliverTypeApi
         case .userMemberUpdateGender:
             return kUserMemberUpdateGenderApi
+        case .userMemberDetail:
+            return kUserMemberDetailApi
         }
     }
 
@@ -254,14 +262,15 @@ extension SwiftMoyaServiceUserApi: TargetType {
             return .post
         case .userAddressIsDefault,
              .userSetDeliverType,
-             .userSetExpreesContactsDefault
+             .userSetExpreesContactsDefault,
+             .userMemberUpdateGender
             :
             return .put
         case .userSelfAddressList,
              .userExpreesContactsList,
              .userDefaultExpress,
              .userDefaultContact,
-             .userMemberUpdateGender
+             .userMemberDetail
             :
             return .get
         case .userAddressDelete,
@@ -298,7 +307,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userSetExpreesContactsDefault(var parameters),
              .userAddSelfAddress(var parameters),
              .userSetDeliverType(var parameters),
-             .userMemberUpdateGender(var parameters)
+             .userMemberUpdateGender(var parameters),
+             .userMemberDetail(var parameters)
             :
             let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
             parameters.updateValue(sign, forKey: "sign")
@@ -343,7 +353,8 @@ extension SwiftMoyaServiceUserApi: TargetType {
              .userSetExpreesContactsDefault,
              .userAddSelfAddress,
              .userSetDeliverType,
-             .userMemberUpdateGender
+             .userMemberUpdateGender,
+             .userMemberDetail
             :
             return (headerParameters(headerType: .tokenHeader) as! [String : String])
         case .userLogout,