Преглед на файлове

1.【IOS】专题展示方式为左右滑动的商品点击进入后的详情页不是对应的商品
2.APP01-21 - 【IOS】专题展示方式为左右滑动的商品点击进入后的详情页不是对应的商品
3.【IOS】首页团购banner数据没有取完整
已修复

南鑫林 преди 6 години
родител
ревизия
81edf00a54

+ 4 - 0
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -214,6 +214,7 @@
 		A79057022276C9770037F823 /* SetPasswordModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A79057012276C9770037F823 /* SetPasswordModel.swift */; };
 		A79057062276EA3D0037F823 /* OpenCityListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A79057052276EA3D0037F823 /* OpenCityListModel.swift */; };
 		A7A17E5F22A0CEF200B7A77E /* SwiftMoyaNetWorkManagerTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A17E5E22A0CEF200B7A77E /* SwiftMoyaNetWorkManagerTools.swift */; };
+		A7A17E6322A102B700B7A77E /* BaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A17E6222A102B700B7A77E /* BaseModel.swift */; };
 		A7A98DFD227E84F4005306E9 /* SwiftMoyaServiceProductApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A98DFC227E84F4005306E9 /* SwiftMoyaServiceProductApi.swift */; };
 		A7A98DFF227E8501005306E9 /* SwiftMoyaNetWorkServiceProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A98DFE227E8501005306E9 /* SwiftMoyaNetWorkServiceProduct.swift */; };
 		A7A98E02227E8900005306E9 /* ProductSearchListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A98E01227E8900005306E9 /* ProductSearchListModel.swift */; };
@@ -615,6 +616,7 @@
 		A79057012276C9770037F823 /* SetPasswordModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetPasswordModel.swift; sourceTree = "<group>"; };
 		A79057052276EA3D0037F823 /* OpenCityListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenCityListModel.swift; sourceTree = "<group>"; };
 		A7A17E5E22A0CEF200B7A77E /* SwiftMoyaNetWorkManagerTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaNetWorkManagerTools.swift; sourceTree = "<group>"; };
+		A7A17E6222A102B700B7A77E /* BaseModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseModel.swift; sourceTree = "<group>"; };
 		A7A59A7722363CCB00417FA4 /* RainbowPlanet.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RainbowPlanet.entitlements; sourceTree = "<group>"; };
 		A7A98DFC227E84F4005306E9 /* SwiftMoyaServiceProductApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaServiceProductApi.swift; sourceTree = "<group>"; };
 		A7A98DFE227E8501005306E9 /* SwiftMoyaNetWorkServiceProduct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftMoyaNetWorkServiceProduct.swift; sourceTree = "<group>"; };
@@ -1669,6 +1671,7 @@
 			isa = PBXGroup;
 			children = (
 				A7284A512252EE9A000BAEC4 /* RootModel.swift */,
+				A7A17E6222A102B700B7A77E /* BaseModel.swift */,
 				A728443F224DFACD00F82F30 /* InfoModel.swift */,
 				A7284A532252FB5C000BAEC4 /* PaginationModel.swift */,
 			);
@@ -3397,6 +3400,7 @@
 				BD1DC6C5228CFD0B00B89C57 /* SwiftMoyaNetWorkServiceOrder.swift in Sources */,
 				BD7AB83D228438020030646A /* OrderPayExpressInfoShowCell.swift in Sources */,
 				A72A72C422321DE000B21995 /* Extension+CAGradientLayer.swift in Sources */,
+				A7A17E6322A102B700B7A77E /* BaseModel.swift in Sources */,
 				A7778CA72243A05400C7C47A /* IQKeyboardManagerSwiftManager.swift in Sources */,
 				A7B4E738228191CC0012914A /* CommondModel.swift in Sources */,
 				BD7AB841228438C80030646A /* OrderPaySelfPickAddressCell.swift in Sources */,

+ 2 - 0
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderButtonTableViewCell.swift

@@ -111,6 +111,7 @@ class OrderButtonTableViewCell: UITableViewCell {
                     twoButton.isHidden = true
                 }else {
                     setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    twoButton.isHidden = true
                 }
                 
                 break
@@ -133,6 +134,7 @@ class OrderButtonTableViewCell: UITableViewCell {
                         
                     }else {
                         setButton(isHidden: false, button: oneButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                        twoButton.isHidden = true
                     }
                 }else {//维权
                     setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)

+ 64 - 40
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailBottomView.swift

@@ -88,37 +88,39 @@ class OrderDetailBottomView: BaseView {
         didSet {
             switch orderModel?.status {
                 case 0: //待付款
-                    leftButton.isHidden = false
                     leftButton.setTitle("取消订单", for: UIControl.State.normal)
                     leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-                    
-                    setButton(isHidden: false, button: oneButton, title: "去付款", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: oneButton, title: "去付款", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setIsButtonHidden(leftHidden: false, oneHidden: false, twoHidden: true, threeHidden: true)
 
                 case 1://待发货
                     if orderModel?.feedbackStatus == 0 {
-                        leftButton.isHidden = false
                         leftButton.setTitle("申请退款", for: UIControl.State.normal)
                         leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-                        setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                        setButton(button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                        setIsButtonHidden(leftHidden: false, oneHidden: false, twoHidden: true, threeHidden: true)
 
                     }else {
-                        setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                        setButton(isHidden: false, button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                        setButton(button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                        setButton(button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                        setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
                     }
 
                     break
                 case 2: //待收货
                     
                 if orderModel?.feedbackStatus == 0 {
-                    leftButton.isHidden = false
                     leftButton.setTitle("申请退款", for: UIControl.State.normal)
                     leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-                    setButton(isHidden: false, button: oneButton, title: "确认收货", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: twoButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "确认收货", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: twoButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: false, oneHidden: false, twoHidden: false, threeHidden: true)
+
                 }else {
-                    setButton(isHidden: false, button: oneButton, title: "确认收货", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: twoButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: threeButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "确认收货", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: twoButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: threeButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: false)
                                     
                 }
 
@@ -128,70 +130,92 @@ class OrderDetailBottomView: BaseView {
                     leftButton.isHidden = false
                     leftButton.setTitle("申请退款", for: UIControl.State.normal)
                     leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-                    setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: oneButton, title: "再次购买", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setIsButtonHidden(leftHidden: false, oneHidden: false, twoHidden: true, threeHidden: true)
+
                 }else {
-                    setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
+
                 }
                 case 4://待自提
                 if orderModel?.feedbackStatus == 0 {
-                    leftButton.isHidden = false
                     leftButton.setTitle("申请退款", for: UIControl.State.normal)
                     leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-                    setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: false, oneHidden: false, twoHidden: true, threeHidden: true)
+
                     
                 }else {
-                    setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: threeButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: threeButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
+
                 }
                 case 5: //已自提
-                    
                     if orderModel?.feedbackStatus == 0 {
-                        leftButton.isHidden = false
-                        leftButton.setTitle("申请退款", for: UIControl.State.normal)
-                        leftButton.setTitleColor(k333333Color, for: UIControl.State.normal)
                         
                         if orderModel?.isComment == 0 {
-                            setButton(isHidden: false, button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                            setButton(isHidden: false, button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setButton(button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                            setButton(button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
+
                         }else {
-                            setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setButton(button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: true, threeHidden: true)
+
                         }
                     }else {
                         if orderModel?.isComment == 0 {
-                            setButton(isHidden: false, button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                            setButton(isHidden: false, button: twoButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                            setButton(isHidden: false, button: threeButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setButton( button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                            setButton( button: twoButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                            setButton(button: threeButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: false)
+
                         }else {
-                            setButton(isHidden: false, button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                            setButton(isHidden: false, button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setButton(button: oneButton, title: "退款详情", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                            setButton(button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                            setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
+
                         }
                         
                     }
                 case 6: //已完成
                 if orderModel?.isComment == 0 {
-                    setButton(isHidden: false, button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
-                    setButton(isHidden: false, button: threeButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "去评价", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: twoButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: threeButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: false)
+
                 }else {
-                    setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
-                    setButton(isHidden: false, button: twoButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setButton(button: oneButton, title: "再次购买", titleColor: kffffffColor, backgroundColor: kFFA42FColor, borderColor: kFFA42FColor)
+                    setButton(button: twoButton, title: "查看物流", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: kbfbfbfColor)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: false, threeHidden: true)
+
                 }
                 case 7: //已关闭
-                    setButton(isHidden: false, button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: k333333Color)
+                    setButton(button: oneButton, title: "再次购买", titleColor: k333333Color, backgroundColor: UIColor.white, borderColor: k333333Color)
+                    setIsButtonHidden(leftHidden: true, oneHidden: false, twoHidden: true, threeHidden: true)
                 default:
                     break
             }
         }
     }
     
-    func setButton(isHidden:Bool,button:UIButton,title:String,titleColor:UIColor,backgroundColor:UIColor,borderColor:UIColor) {
-        button.isHidden = isHidden
+    func setButton(button:UIButton,title:String,titleColor:UIColor,backgroundColor:UIColor,borderColor:UIColor) {
         button.setTitle(title, for: UIControl.State.normal)
         button.setTitleColor(titleColor, for: UIControl.State.normal)
         button.backgroundColor = backgroundColor
         button.layer.borderColor = borderColor.cgColor
         button.layer.borderWidth = 1
     }
+    
+    func setIsButtonHidden(leftHidden:Bool,oneHidden:Bool,twoHidden:Bool,threeHidden:Bool) {
+        leftButton.isHidden = leftHidden
+        oneButton.isHidden = oneHidden
+        twoButton.isHidden = twoHidden
+        threeButton.isHidden = threeHidden
+    }
 
 }

+ 6 - 1
RainbowPlanet/RainbowPlanet/Modules/ShoppingMallModule/ShoppingMall/View/ShoppingMallBanner/ShoppingMallBannerTableViewCell.swift

@@ -26,6 +26,11 @@ class ShoppingMallBannerTableViewCell: UITableViewCell {
     var cmsRuleModels : Array<CMSRuleModel>? {
         didSet {
             if !(cmsRuleModels?.isEmpty ?? true) {
+                if cmsRuleModels?.count ?? 0 > 1 {
+                    pagerView.isInfinite = true
+                }else{
+                    pagerView.isInfinite = false
+                }
                 pagerView.reloadData()
             }
         }
@@ -84,7 +89,7 @@ class ShoppingMallBannerTableViewCell: UITableViewCell {
 extension ShoppingMallBannerTableViewCell:FSPagerViewDataSource,FSPagerViewDelegate {
     func numberOfItems(in pagerView: FSPagerView) -> Int {
         if !(cmsRuleModels?.isEmpty ?? true) {
-            return 1
+            return cmsRuleModels?.count ?? 0
         }else {
             return 0
         }

+ 1 - 1
RainbowPlanet/RainbowPlanet/Modules/ShoppingMallModule/ShoppingMall/View/ShoppingMallFloor/FloorCell/ShoppingMallSlidingLeftRight/ShoppingMallSlidingLeftRightBgCollectionViewCell.swift

@@ -116,7 +116,7 @@ extension ShoppingMallSlidingLeftRightBgCollectionViewCell: UICollectionViewDele
     }
     
     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-        let productModel = productModels?[indexPath.section]
+        let productModel = productModels?[indexPath.row]
         NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ProductDetailVC"), object: productModel)
     }
     

+ 31 - 0
RainbowPlanet/RainbowPlanet/Service/Model/RootModel/BaseModel.swift

@@ -0,0 +1,31 @@
+//
+//	BaseModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import RealmSwift
+
+class BaseModel: Object {
+    
+    dynamic var code: Int = 0
+    dynamic var data: String!
+    dynamic var msg: String!
+    
+    
+    /**
+     * Instantiate the instance using the passed dictionary values to set the properties values
+     */
+    class func fromDictionary(dictionary: [String:Any]) -> BaseModel    {
+        let this = BaseModel()
+        if let codeValue = dictionary["code"] as? Int{
+            this.code = codeValue
+        }
+        if let dataValue = dictionary["data"] as? String{
+            this.data = dataValue
+        }
+        if let msgValue = dictionary["msg"] as? String{
+            this.msg = msgValue
+        }
+        return this
+    }
+    
+}

+ 0 - 1
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/SwiftMoyaNetWorkManager.swift

@@ -18,7 +18,6 @@ import Result
 public class SwiftMoyaNetWorkManager: NSObject {
 
     private let disposeBag = DisposeBag()
-    private var dataBaseName : String = "RainbowPlanet"
     
     static let shared : SwiftMoyaNetWorkManager = SwiftMoyaNetWorkManager()
 

+ 304 - 0
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/SwiftRXMoyaReamlObjectSwiftJsonNetWorkManager.swift

@@ -7,3 +7,307 @@
 //
 
 import Foundation
+import Alamofire
+import Moya
+import SwiftyJSON
+import RealmSwift
+import RxSwift
+import Result
+
+public class SwiftRXMoyaReamlObjectSwiftJsonNetWorkManager: NSObject {
+    
+    private let disposeBag = DisposeBag()
+    
+    static let shared : SwiftRXMoyaReamlObjectSwiftJsonNetWorkManager = SwiftRXMoyaReamlObjectSwiftJsonNetWorkManager()
+    
+    /// 成功回调 任意类型
+    typealias successCallAnyback = (_ T: Any) -> Void
+    /// 成功回调带泛型 对象
+    typealias successCallObjectBack = (_ T: Object) -> Void
+    /// 成功回调带泛型 数组
+    typealias successCallArrayObjectback = (_ T: [Object]) -> Void
+    
+    /// 失败回调
+    typealias falseCallback = () -> Void
+    var falseCallback : falseCallback?
+    
+    // MARK: 泛型网络请求返回任意类型
+    /// 泛型网络请求返回任意类型
+    ///
+    /// - Parameters:
+    ///   - target: 请求地址加参数
+    ///   - completion: 返回对象
+    func requestAny(target: MultiTarget,completion: @escaping successCallAnyback) -> Void {
+        //判断是否链接网络
+        if !isNetworkConnect{
+            if let falseCallback = self.falseCallback  {
+                falseCallback()
+            }
+            return
+        }
+        
+        provider.rx
+            .request(target)
+            .mapAny()
+            .subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
+            .observeOn(MainScheduler.instance)
+            .subscribe(onSuccess: { [weak self] element in
+                
+                guard let element = element else {
+                    if let falseCallback = self?.falseCallback  {
+                        falseCallback()
+                    }
+                    return
+                }
+                completion(element)
+            }) {
+                [weak self] (error) in
+                if let falseCallback = self?.falseCallback  {
+                    falseCallback()
+                }
+                SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
+            }
+            .disposed(by: disposeBag)
+    }
+    
+    // MARK: 泛型网络请求返回对象
+    /// 泛型网络请求返回对象
+    ///
+    /// - Parameters:
+    ///   - type: 泛型
+    ///   - target: 请求地址加参数
+    ///   - completion: 返回对象
+    func requestObject<T: Object>(_ type: T.Type ,target: MultiTarget,completion: @escaping successCallObjectBack) -> Void {
+        //判断是否链接网络
+        if !isNetworkConnect{
+            if let falseCallback = self.falseCallback  {
+                falseCallback()
+            }
+            return
+        }
+        
+        provider.rx
+            .request(target)
+            .mapObject(T.self)
+            .subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
+            .observeOn(MainScheduler.instance)
+            .subscribe(onSuccess: { [weak self] element in
+                
+                guard let element = element else {
+                    if let falseCallback = self?.falseCallback  {
+                        falseCallback()
+                    }
+                    return
+                }
+                completion(element)
+            }) {
+                [weak self] (error) in
+                if let falseCallback = self?.falseCallback  {
+                    falseCallback()
+                }
+                SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
+            }
+            .disposed(by: disposeBag)
+    }
+    
+    // MARK: 泛型网络请求返回数组对象
+    /// 泛型网络请求返回数组对象
+    ///
+    /// - Parameters:
+    ///   - type: 泛型
+    ///   - target: 请求地址加参数
+    ///   - completion: 返回对象数组
+    func requestArrayObject<T: Object>(_ type: T.Type ,target: MultiTarget,completion: @escaping successCallArrayObjectback) -> Void {
+        //判断是否链接网络
+        if !isNetworkConnect{
+            if let falseCallback = self.falseCallback  {
+                falseCallback()
+            }
+            return
+        }
+        
+        provider.rx
+            .request(target)
+            .mapArrayObject(T.self)
+            .subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
+            .observeOn(MainScheduler.instance)
+            .subscribe(onSuccess: { [weak self] element in
+                
+                guard let element = element else {
+                    if let falseCallback = self?.falseCallback  {
+                        falseCallback()
+                    }
+                    return
+                }
+                completion(element)
+            }) {
+                [weak self] (error) in
+                if let falseCallback = self?.falseCallback  {
+                    falseCallback()
+                }
+                SwiftProgressHUD.shared().showError("网络链接失败,请检查网络")
+            }
+            .disposed(by: disposeBag)
+    }
+    
+    // MARK: 取消所有请求
+    /// 取消所有请求
+    func cancelAllRequest() {
+        provider.manager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
+            dataTasks.forEach { $0.cancel() }
+            uploadTasks.forEach { $0.cancel() }
+            downloadTasks.forEach { $0.cancel() }
+        }
+    }
+    
+    // MARK: 取消指定请求
+    /// 取消指定请求
+    ///
+    /// - Parameter url: 指定的网络请求地址
+    func cancelDesignationRequest(url:String) {
+        provider.manager.session.getTasksWithCompletionHandler {
+            (sessionDataTask, uploadData, downloadData) in
+            sessionDataTask.forEach {
+                //只取消指定url的请求
+                if ($0.originalRequest?.url?.absoluteString == url) {
+                    $0.cancel()
+                }
+            }
+        }
+    }
+    
+}
+
+// MARK: - 泛型
+extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Response {
+    
+    // MARK: 泛型任意值
+    func mapAny() -> Single<Any?> {
+        return flatMap { response -> Single<Any?> in
+            do {
+                let json = try JSON(response.mapJSON())
+                if response.statusCode == 200 {
+                    NXLLog("\nurl=\(String(describing: response.request!.url!))\nstatusCode=\(response.statusCode)\njson=\n\(json.description)");
+                    
+                    let baseModel = BaseModel.fromDictionary(dictionary: json.dictionary ?? Dictionary())
+                    if baseModel.code  == 0 {
+//                        let object = try JSON(data: baseModel.data).object
+                        return Single<Any?>.just(nil)
+                    }else if baseModel.code  == 1 {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!")
+                        return Single<Any?>.just(nil)
+                    }else {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!")
+                        return Single<Any?>.just(nil)
+                    }
+                }else if response.statusCode == 401 {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
+                    let infoModel = InfoModel(JSONString: json.description)
+                    SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
+                    kAppDelegate.setLoginController()
+                    return Single<Any?>.just(nil)
+                }else {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
+                    SwiftProgressHUD.shared().showText(response.description)
+                    
+                    return Single<Any?>.just(nil)
+                }
+                
+            } catch {
+                let url = String(describing: response.request!.url!)
+                NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
+                SwiftProgressHUD.shared().showText(response.description)
+                return Single<Any?>.just(nil)
+            }
+        }
+    }
+    
+    // MARK: 泛型返回对象
+    func mapObject<T: Object>(_ type: T.Type) -> Single<T?> {
+        return flatMap { response -> Single<T?> in
+            do {
+                let json = try JSON(response.mapJSON())
+                if response.statusCode == 200 {
+                    NXLLog("\nurl=\(String(describing: response.request!.url!))\nstatusCode=\(response.statusCode)\njson=\n\(json.description)");
+                    
+                    let baseModel = BaseModel.fromDictionary(dictionary: json.dictionary ?? Dictionary())
+                    if baseModel.code  == 0 {
+//                        let object = try JSON(data: baseModel.data).object as! T
+                        return Single<T?>.just(nil)
+                    }else if baseModel.code  == 1 {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!")
+                        return Single<T?>.just(nil)
+                    }else {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!")
+                        return Single<T?>.just(nil)
+                    }
+                }else if response.statusCode == 401 {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
+                    let infoModel = InfoModel(JSONString: json.description)
+                    SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
+                    kAppDelegate.setLoginController()
+                    return Single<T?>.just(nil)
+                }else {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
+                    SwiftProgressHUD.shared().showText(response.description)
+                    
+                    return Single<T?>.just(nil)
+                }
+                
+            } catch {
+                let url = String(describing: response.request!.url!)
+                NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
+                SwiftProgressHUD.shared().showText(response.description)
+                return Single<T?>.just(nil)
+            }
+        }
+    }
+    
+    // MARK: 泛型返回对象数组
+    func mapArrayObject<T: Object>(_ type: T.Type) -> Single<[T]?> {
+        return flatMap { response -> Single<[T]?> in
+            do {
+                let json = try JSON(response.mapJSON())
+                if response.statusCode == 200 {
+                    
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
+                    
+                    let baseModel = BaseModel.fromDictionary(dictionary: json.dictionary ?? Dictionary())
+                    if baseModel.code  == 0 {
+//                        let objects = try JSON(data: baseModel.data).arrayObject as! [T]
+                        return Single<[T]?>.just(nil)
+                    }else if baseModel.code  == 1 {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!", textAlignment: .left)
+                        return Single<[T]?>.just(nil)
+                    }else {
+                        SwiftProgressHUD.shared().showText(baseModel.msg ?? "信息有误!!!", textAlignment: .left)
+                        return Single<[T]?>.just(nil)
+                    }
+                }else if response.statusCode == 401 {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\njson=\n\(json.description)")
+                    let infoModel = InfoModel(JSONString: json.description)
+                    SwiftProgressHUD.shared().showText(infoModel!.message ?? "登录过期,请重新登录")
+                    kAppDelegate.setLoginController()
+                    return Single<[T]?>.just(nil)
+                }else {
+                    let url = String(describing: response.request!.url!)
+                    NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
+                    SwiftProgressHUD.shared().showText(response.description)
+                    return Single<[T]?>.just(nil)
+                }
+                
+            } catch {
+                let url = String(describing: response.request!.url!)
+                NXLLog("\nurl=\(url)\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)")
+                SwiftProgressHUD.shared().showText(response.description)
+                return Single<[T]?>.just(nil)
+            }
+        }
+    }
+}