@@ -1446,29 +1446,31 @@  | 
            ||
| 1446 | 1446 | 
                isa = PBXProject;  | 
            
| 1447 | 1447 | 
                 			attributes = {
               | 
            
| 1448 | 1448 | 
                LastSwiftUpdateCheck = 1010;  | 
            
| 1449 | 
                - LastUpgradeCheck = 1010;  | 
            |
| 1449 | 
                + LastUpgradeCheck = 1020;  | 
            |
| 1450 | 1450 | 
                ORGANIZATIONNAME = yb;  | 
            
| 1451 | 1451 | 
                 				TargetAttributes = {
               | 
            
| 1452 | 1452 | 
                 					05130F2D21C94B32004EF1BE = {
               | 
            
| 1453 | 1453 | 
                CreatedOnToolsVersion = 10.1;  | 
            
| 1454 | 1454 | 
                DevelopmentTeam = Q38447SL4M;  | 
            
| 1455 | 
                + LastSwiftMigration = 1020;  | 
            |
| 1455 | 1456 | 
                ProvisioningStyle = Automatic;  | 
            
| 1456 | 1457 | 
                };  | 
            
| 1457 | 1458 | 
                 					05130F6921C95373004EF1BE = {
               | 
            
| 1458 | 1459 | 
                CreatedOnToolsVersion = 10.1;  | 
            
| 1459 | 1460 | 
                DevelopmentTeam = Q38447SL4M;  | 
            
| 1460 | 
                - LastSwiftMigration = 1010;  | 
            |
| 1461 | 
                + LastSwiftMigration = 1020;  | 
            |
| 1461 | 1462 | 
                ProvisioningStyle = Automatic;  | 
            
| 1462 | 1463 | 
                };  | 
            
| 1463 | 1464 | 
                 					05130F8D21C9E5E8004EF1BE = {
               | 
            
| 1464 | 1465 | 
                CreatedOnToolsVersion = 10.1;  | 
            
| 1465 | 1466 | 
                DevelopmentTeam = Q38447SL4M;  | 
            
| 1467 | 
                + LastSwiftMigration = 1020;  | 
            |
| 1466 | 1468 | 
                ProvisioningStyle = Automatic;  | 
            
| 1467 | 1469 | 
                };  | 
            
| 1468 | 1470 | 
                 					6CEBD0FE1CA8D680004DBDE0 = {
               | 
            
| 1469 | 1471 | 
                CreatedOnToolsVersion = 7.3;  | 
            
| 1470 | 1472 | 
                DevelopmentTeam = Q38447SL4M;  | 
            
| 1471 | 
                - LastSwiftMigration = 0900;  | 
            |
| 1473 | 
                + LastSwiftMigration = 1020;  | 
            |
| 1472 | 1474 | 
                ProvisioningStyle = Automatic;  | 
            
| 1473 | 1475 | 
                 						SystemCapabilities = {
               | 
            
| 1474 | 1476 | 
                 							com.apple.BackgroundModes = {
               | 
            
                @@ -1486,10 +1488,9 @@  | 
            ||
| 1486 | 1488 | 
                };  | 
            
| 1487 | 1489 | 
                buildConfigurationList = 6CEBD0FA1CA8D680004DBDE0 /* Build configuration list for PBXProject "Paiai" */;  | 
            
| 1488 | 1490 | 
                compatibilityVersion = "Xcode 3.2";  | 
            
| 1489 | 
                - developmentRegion = English;  | 
            |
| 1491 | 
                + developmentRegion = en;  | 
            |
| 1490 | 1492 | 
                hasScannedForEncodings = 0;  | 
            
| 1491 | 1493 | 
                knownRegions = (  | 
            
| 1492 | 
                - English,  | 
            |
| 1493 | 1494 | 
                en,  | 
            
| 1494 | 1495 | 
                Base,  | 
            
| 1495 | 1496 | 
                global,  | 
            
                @@ -1907,7 +1908,7 @@  | 
            ||
| 1907 | 1908 | 
                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";  | 
            
| 1908 | 1909 | 
                SKIP_INSTALL = YES;  | 
            
| 1909 | 1910 | 
                SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;  | 
            
| 1910 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 1911 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 1911 | 1912 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 1912 | 1913 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 1913 | 1914 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -1941,7 +1942,7 @@  | 
            ||
| 1941 | 1942 | 
                PRODUCT_BUNDLE_IDENTIFIER = FFIB.PaiaiUIKit;  | 
            
| 1942 | 1943 | 
                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";  | 
            
| 1943 | 1944 | 
                SKIP_INSTALL = YES;  | 
            
| 1944 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 1945 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 1945 | 1946 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 1946 | 1947 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 1947 | 1948 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -1989,7 +1990,7 @@  | 
            ||
| 1989 | 1990 | 
                SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;  | 
            
| 1990 | 1991 | 
                SWIFT_OBJC_BRIDGING_HEADER = "";  | 
            
| 1991 | 1992 | 
                SWIFT_OPTIMIZATION_LEVEL = "-Onone";  | 
            
| 1992 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 1993 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 1993 | 1994 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 1994 | 1995 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 1995 | 1996 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -2035,7 +2036,7 @@  | 
            ||
| 2035 | 2036 | 
                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";  | 
            
| 2036 | 2037 | 
                SKIP_INSTALL = YES;  | 
            
| 2037 | 2038 | 
                SWIFT_OBJC_BRIDGING_HEADER = "";  | 
            
| 2038 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 2039 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 2039 | 2040 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 2040 | 2041 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 2041 | 2042 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -2050,7 +2051,7 @@  | 
            ||
| 2050 | 2051 | 
                CLANG_ENABLE_OBJC_WEAK = YES;  | 
            
| 2051 | 2052 | 
                CLANG_WARN_DOCUMENTATION_COMMENTS = YES;  | 
            
| 2052 | 2053 | 
                CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;  | 
            
| 2053 | 
                - CODE_SIGN_IDENTITY = "iPhone Distribution: Beijing Jiayilai Trade Co., Ltd. (Q38447SL4M)";  | 
            |
| 2054 | 
                + CODE_SIGN_IDENTITY = "";  | 
            |
| 2054 | 2055 | 
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";  | 
            
| 2055 | 2056 | 
                CODE_SIGN_STYLE = Automatic;  | 
            
| 2056 | 2057 | 
                CURRENT_PROJECT_VERSION = 1;  | 
            
                @@ -2074,7 +2075,7 @@  | 
            ||
| 2074 | 2075 | 
                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";  | 
            
| 2075 | 2076 | 
                SKIP_INSTALL = YES;  | 
            
| 2076 | 2077 | 
                SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;  | 
            
| 2077 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 2078 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 2078 | 2079 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 2079 | 2080 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 2080 | 2081 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -2089,7 +2090,7 @@  | 
            ||
| 2089 | 2090 | 
                CLANG_ENABLE_OBJC_WEAK = YES;  | 
            
| 2090 | 2091 | 
                CLANG_WARN_DOCUMENTATION_COMMENTS = YES;  | 
            
| 2091 | 2092 | 
                CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;  | 
            
| 2092 | 
                - CODE_SIGN_IDENTITY = "iPhone Distribution: Beijing Jiayilai Trade Co., Ltd. (Q38447SL4M)";  | 
            |
| 2093 | 
                + CODE_SIGN_IDENTITY = "";  | 
            |
| 2093 | 2094 | 
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";  | 
            
| 2094 | 2095 | 
                CODE_SIGN_STYLE = Automatic;  | 
            
| 2095 | 2096 | 
                CURRENT_PROJECT_VERSION = 1;  | 
            
                @@ -2112,7 +2113,7 @@  | 
            ||
| 2112 | 2113 | 
                PRODUCT_BUNDLE_IDENTIFIER = "com.Paiai-iOS";  | 
            
| 2113 | 2114 | 
                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";  | 
            
| 2114 | 2115 | 
                SKIP_INSTALL = YES;  | 
            
| 2115 | 
                - SWIFT_VERSION = 4.2;  | 
            |
| 2116 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 2116 | 2117 | 
                TARGETED_DEVICE_FAMILY = "1,2";  | 
            
| 2117 | 2118 | 
                VERSIONING_SYSTEM = "apple-generic";  | 
            
| 2118 | 2119 | 
                VERSION_INFO_PREFIX = "";  | 
            
                @@ -2277,8 +2278,7 @@  | 
            ||
| 2277 | 2278 | 
                PROVISIONING_PROFILE = "";  | 
            
| 2278 | 2279 | 
                PROVISIONING_PROFILE_SPECIFIER = "";  | 
            
| 2279 | 2280 | 
                SWIFT_OBJC_BRIDGING_HEADER = "Swift-bridge.h";  | 
            
| 2280 | 
                - SWIFT_SWIFT3_OBJC_INFERENCE = Default;  | 
            |
| 2281 | 
                - SWIFT_VERSION = 4.0;  | 
            |
| 2281 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 2282 | 2282 | 
                USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/**";  | 
            
| 2283 | 2283 | 
                };  | 
            
| 2284 | 2284 | 
                name = Debug;  | 
            
                @@ -2324,8 +2324,7 @@  | 
            ||
| 2324 | 2324 | 
                PROVISIONING_PROFILE = "";  | 
            
| 2325 | 2325 | 
                PROVISIONING_PROFILE_SPECIFIER = "";  | 
            
| 2326 | 2326 | 
                SWIFT_OBJC_BRIDGING_HEADER = "Swift-bridge.h";  | 
            
| 2327 | 
                - SWIFT_SWIFT3_OBJC_INFERENCE = Default;  | 
            |
| 2328 | 
                - SWIFT_VERSION = 4.0;  | 
            |
| 2327 | 
                + SWIFT_VERSION = 5.0;  | 
            |
| 2329 | 2328 | 
                USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/**";  | 
            
| 2330 | 2329 | 
                };  | 
            
| 2331 | 2330 | 
                name = Release;  | 
            
                @@ -1,6 +1,6 @@  | 
            ||
| 1 | 1 | 
                <?xml version="1.0" encoding="UTF-8"?>  | 
            
| 2 | 2 | 
                <Scheme  | 
            
| 3 | 
                - LastUpgradeVersion = "1010"  | 
            |
| 3 | 
                + LastUpgradeVersion = "1020"  | 
            |
| 4 | 4 | 
                version = "1.3">  | 
            
| 5 | 5 | 
                <BuildAction  | 
            
| 6 | 6 | 
                parallelizeBuildables = "YES"  | 
            
                @@ -35,7 +35,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
               | 
            ||
| 35 | 35 | 
                var coordinator: AppCoordinator?  | 
            
| 36 | 36 | 
                 | 
            
| 37 | 37 | 
                func application(_ application: UIApplication,  | 
            
| 38 | 
                - didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)  | 
            |
| 38 | 
                + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)  | 
            |
| 39 | 39 | 
                         -> Bool {
               | 
            
| 40 | 40 | 
                registerAppConfiguration()  | 
            
| 41 | 41 | 
                let rootViewController = ContainerViewController()  | 
            
                @@ -50,12 +50,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
               | 
            ||
| 50 | 50 | 
                nav.navigationBar.tintColor = UIColor.white  | 
            
| 51 | 51 | 
                nav.navigationBar.isTranslucent = false  | 
            
| 52 | 52 | 
                nav.navigationBar.setBackgroundImage(UIImage.Navigation.background, for: .default)  | 
            
| 53 | 
                - nav.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white.cgColor]  | 
            |
| 53 | 
                + nav.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white.cgColor]  | 
            |
| 54 | 54 | 
                return true  | 
            
| 55 | 55 | 
                }  | 
            
| 56 | 56 | 
                 | 
            
| 57 | 57 | 
                func application(_ app: UIApplication, open url: URL,  | 
            
| 58 | 
                -                     options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool {
               | 
            |
| 58 | 
                +                     options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
               | 
            |
| 59 | 59 | 
                var result: Bool = false  | 
            
| 60 | 60 | 
                #if !((arch(i386) || arch(x86_64)))  | 
            
| 61 | 61 | 
                             switch sharedPlatform {
               | 
            
                @@ -34,7 +34,7 @@ extension UserInfo: Mappable {
               | 
            ||
| 34 | 34 | 
                }  | 
            
| 35 | 35 | 
                 | 
            
| 36 | 36 | 
                     mutating public func mapping(map: Map) {
               | 
            
| 37 | 
                - userName <- map["userName"]  | 
            |
| 37 | 
                + userName <- map["nickname"]  | 
            |
| 38 | 38 | 
                userId <- map["user_id"]  | 
            
| 39 | 39 | 
                photoPath <- map["photoPath"]  | 
            
| 40 | 40 | 
                name <- map["name"]  | 
            
                @@ -34,7 +34,6 @@ struct GroupPhotoRemoteAPI {
               | 
            ||
| 34 | 34 | 
                 | 
            
| 35 | 35 | 
                     func uploadPhoto(data: Data) -> Single<[PhotoItem]> {
               | 
            
| 36 | 36 | 
                let name = ShareUserId + "\(Date.timeIntervalSinceReferenceDate)"  | 
            
| 37 | 
                - print(name)  | 
            |
| 38 | 37 | 
                let file = FileModel(fileName: name, fileData: data)  | 
            
| 39 | 38 | 
                let uploadResource = UploadResource<[PhotoItem]>(path: .photoUpload,  | 
            
| 40 | 39 | 
                parameter: ["user_id": ShareUserId,  | 
            
                @@ -11,28 +11,24 @@ import RxSwift  | 
            ||
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                 struct GuestUserInfoRemoteAPI: UserInfoRemoteAPI {
               | 
            
| 13 | 13 | 
                 | 
            
| 14 | 
                - typealias Model = UserInfo  | 
            |
| 15 | 
                -  | 
            |
| 16 | 
                -    var path: Interfaces { return .guestLogin }
               | 
            |
| 17 | 
                - var parameter: Parameter = [:]  | 
            |
| 18 | 
                -  | 
            |
| 19 | 
                -    init() {
               | 
            |
| 20 | 
                - parameter = ["uuid": getUUID()]  | 
            |
| 14 | 
                +    private func parse(_ json: JSON) -> UserInfo? {
               | 
            |
| 15 | 
                +        guard let data  = json["data"] as? [String: AnyObject] else { return nil }
               | 
            |
| 16 | 
                + return UserInfo(json: data)  | 
            |
| 21 | 17 | 
                }  | 
            
| 22 | 18 | 
                 | 
            
| 23 | 19 | 
                     func login() -> Single<UserInfo> {
               | 
            
| 24 | 
                -        return Single.create(subscribe: { (observer) in
               | 
            |
| 25 | 
                - observer(.success(UserInfo(json: ["user_id": "fiDz2Ms" as AnyObject, "userName": "郑剑飞" as AnyObject, "photoPath": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJibSYLgvXpMakvD9FaCqfiaWqcMiaiaz905YxWPuO4hy8F2lGheV7kVr9vKKXFgmL1S5s4QJgxwuwtVw/132" as AnyObject])))  | 
            |
| 26 | 
                - return Disposables.create()  | 
            |
| 27 | 
                - })  | 
            |
| 20 | 
                + let contentResource = ContentResource(path: .guestLogin,  | 
            |
| 21 | 
                + parameter: ["uuid": getUUID()],  | 
            |
| 22 | 
                + parseJSON: parse)  | 
            |
| 23 | 
                + return contentResource.loadContent()  | 
            |
| 28 | 24 | 
                }  | 
            
| 29 | 25 | 
                 | 
            
| 30 | 26 | 
                     func getUUID() -> String {
               | 
            
| 31 | 27 | 
                let keyChainDic = NSMutableDictionary()  | 
            
| 32 | 28 | 
                keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying)  | 
            
| 33 | 29 | 
                         keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying)
               | 
            
| 34 | 
                - keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnAttributes as! NSCopying)  | 
            |
| 35 | 
                - keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnData as! NSCopying)  | 
            |
| 30 | 
                + keyChainDic.setObject(kCFBooleanTrue as Any, forKey: kSecReturnAttributes as! NSCopying)  | 
            |
| 31 | 
                + keyChainDic.setObject(kCFBooleanTrue as Any, forKey: kSecReturnData as! NSCopying)  | 
            |
| 36 | 32 | 
                 | 
            
| 37 | 33 | 
                var result: AnyObject?  | 
            
| 38 | 34 | 
                var uuid: String? = nil  | 
            
                @@ -51,11 +47,3 @@ struct GuestUserInfoRemoteAPI: UserInfoRemoteAPI {
               | 
            ||
| 51 | 47 | 
                return uuidStr  | 
            
| 52 | 48 | 
                }  | 
            
| 53 | 49 | 
                }  | 
            
| 54 | 
                -  | 
            |
| 55 | 
                -//extension GuestUserInfoRemoteAPI {
               | 
            |
| 56 | 
                -//    func parse(_ json: JSON) -> UserInfo? {
               | 
            |
| 57 | 
                -//        guard let result = json["data"] as? [String: AnyObject] else { return nil }
               | 
            |
| 58 | 
                -// return UserInfo(json: result)  | 
            |
| 59 | 
                -// }  | 
            |
| 60 | 
                -//  | 
            |
| 61 | 
                -//}  | 
            
                @@ -45,6 +45,10 @@ class WXUserInfoRemoteAPI: UserInfoRemoteAPI {
               | 
            ||
| 45 | 45 | 
                }  | 
            
| 46 | 46 | 
                 | 
            
| 47 | 47 | 
                     func login() -> Single<UserInfo> {
               | 
            
| 48 | 
                +        return Single.create(subscribe: { (observer) in
               | 
            |
| 49 | 
                + observer(.success(UserInfo(json: ["user_id": "fiDz2Ms" as AnyObject, "userName": "郑剑飞" as AnyObject, "photoPath": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJibSYLgvXpMakvD9FaCqfiaWqcMiaiaz905YxWPuO4hy8F2lGheV7kVr9vKKXFgmL1S5s4QJgxwuwtVw/132" as AnyObject])))  | 
            |
| 50 | 
                + return Disposables.create()  | 
            |
| 51 | 
                + })  | 
            |
| 48 | 52 | 
                         return Single.create(subscribe: { (observer) -> Disposable in
               | 
            
| 49 | 53 | 
                 | 
            
| 50 | 54 | 
                // let wxLoginObserver = self.addWXLoginDidFinish()  | 
            
                @@ -177,7 +177,7 @@ fileprivate extension PageViewController {
               | 
            ||
| 177 | 177 | 
                setSliderViewDetail()  | 
            
| 178 | 178 | 
                }  | 
            
| 179 | 179 | 
                 | 
            
| 180 | 
                -    fileprivate func setSliderViewDetail() {
               | 
            |
| 180 | 
                +    func setSliderViewDetail() {
               | 
            |
| 181 | 181 | 
                         guard let label = menuView.viewWithTag(baseTag) else { return }
               | 
            
| 182 | 182 | 
                sliderConstraint = sliderView.centerXAnchor  | 
            
| 183 | 183 | 
                .constraint(equalTo: label.centerXAnchor)  |