Quellcode durchsuchen

appke 登录 及 是否开启审核判断

openlockPPP vor 1 Jahr
Ursprung
Commit
1d957c701b

+ 8 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -190,6 +190,8 @@
 		90E65C9A2A7B56070055B09C /* NYWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90E65C992A7B56070055B09C /* NYWindow.swift */; };
 		90E65C9C2A7B93AE0055B09C /* AuthorizationDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90E65C9B2A7B93AE0055B09C /* AuthorizationDataModel.swift */; };
 		90E65C9E2A7CA09D0055B09C /* JpMsgDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90E65C9D2A7CA09D0055B09C /* JpMsgDataModel.swift */; };
+		90E65CA42A7E68FE0055B09C /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E65CA32A7E68FE0055B09C /* AuthenticationServices.framework */; };
+		90E65CA62A80979F0055B09C /* NYAppleApiManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90E65CA52A80979F0055B09C /* NYAppleApiManager.swift */; };
 		FD091E28E4C2EF8E654AE2C6 /* Pods_JiaPeiManage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FC2879EF62A9D4DF6777C62 /* Pods_JiaPeiManage.framework */; };
 /* End PBXBuildFile section */
 
@@ -391,6 +393,8 @@
 		90E65C992A7B56070055B09C /* NYWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYWindow.swift; sourceTree = "<group>"; };
 		90E65C9B2A7B93AE0055B09C /* AuthorizationDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationDataModel.swift; sourceTree = "<group>"; };
 		90E65C9D2A7CA09D0055B09C /* JpMsgDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JpMsgDataModel.swift; sourceTree = "<group>"; };
+		90E65CA32A7E68FE0055B09C /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; };
+		90E65CA52A80979F0055B09C /* NYAppleApiManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYAppleApiManager.swift; sourceTree = "<group>"; };
 		A8171123E8F401C7CF842A4C /* Pods-JiaPeiManage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JiaPeiManage.debug.xcconfig"; path = "Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig"; sourceTree = "<group>"; };
 		D9F65764266FE5C95D1940F5 /* Pods-JiaPeiManage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JiaPeiManage.release.xcconfig"; path = "Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
@@ -400,6 +404,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				90E65CA42A7E68FE0055B09C /* AuthenticationServices.framework in Frameworks */,
 				903C04AC2A651DBC00935764 /* AdSupport.framework in Frameworks */,
 				90E65C902A7A590E0055B09C /* Security.framework in Frameworks */,
 				90E65C922A7A59250055B09C /* WebKit.framework in Frameworks */,
@@ -1015,6 +1020,7 @@
 				903C04A92A651B1200935764 /* NYIDFA.swift */,
 				903B4E6D2A73C5D800FD7320 /* NYAccountManager.swift */,
 				90E65C892A7A4E330055B09C /* NYWXApiManager.swift */,
+				90E65CA52A80979F0055B09C /* NYAppleApiManager.swift */,
 			);
 			path = Utils;
 			sourceTree = "<group>";
@@ -1093,6 +1099,7 @@
 		A24D99DBE7A92F9485B15E3A /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				90E65CA32A7E68FE0055B09C /* AuthenticationServices.framework */,
 				90E65C932A7A59770055B09C /* CoreGraphics.framework */,
 				90E65C912A7A59250055B09C /* WebKit.framework */,
 				90E65C8F2A7A590D0055B09C /* Security.framework */,
@@ -1322,6 +1329,7 @@
 				90CE52B12A36E59A0033BD06 /* VTContentView+Gesture.swift in Sources */,
 				90CE52722A36E5460033BD06 /* LWPlayer.swift in Sources */,
 				909DA5C52A3AA1E60034501F /* MeTraineeNavBar.swift in Sources */,
+				90E65CA62A80979F0055B09C /* NYAppleApiManager.swift in Sources */,
 				909DA5C92A3ABEFF0034501F /* MeTraineeSubjectPageViewController.swift in Sources */,
 				90CE53042A3834360033BD06 /* CoachService.swift in Sources */,
 				908FEEA52A42D62A00BEB81C /* StuTmsSignDataModel.swift in Sources */,

+ 8 - 0
JiaPeiManage.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -10,5 +10,13 @@
 			<integer>54</integer>
 		</dict>
 	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>90CE52142A36C0700033BD06</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
 </dict>
 </plist>

+ 4 - 0
JiaPeiManage/Sources/Extensions/DefaultsKeys+Key.swift

@@ -26,5 +26,9 @@ extension DefaultsKeys {
     
     var cityPower:DefaultsKey<String?> { .init("cityPower", defaultValue:"") }
     
+    var server_version:DefaultsKey<String?> { .init("server_version", defaultValue:"") }
+    
+    var ios_login_open: DefaultsKey<Int> { .init("ios_login_open", defaultValue: 0) }
+    
     var currentEnvironment: DefaultsKey<NetEnvironment> { .init("currentEnvironment", defaultValue: .res) }
 }

+ 2 - 0
JiaPeiManage/Sources/Main/App/CompositionRoot.swift

@@ -84,6 +84,8 @@ final class CompositionRoot {
     }
     
     static func configureAppearance() {
+        //获取基础配置
+        LocalManager.getDeploydo()
         //设置时区
         let _ = Region(calendar: Calendars.gregorian, zone: Zones.asiaShanghai, locale: Locales.chinese)
 

+ 22 - 0
JiaPeiManage/Sources/Models/UserInfoModel.swift

@@ -264,6 +264,28 @@ struct UserInfo :ImmutableMappable,Codable{
         }
     }
     
+    var server_version:String? {
+        set {
+            if newValue != nil{
+                Defaults.server_version = newValue! ?? ""
+            }
+        }
+        get {
+            return Defaults.server_version
+        }
+    }
+    
+    var ios_login_open:Int? {
+        set {
+            if newValue != nil{
+                Defaults.ios_login_open = newValue! ?? 0
+            }
+        }
+        get {
+            return Defaults.ios_login_open
+        }
+    }
+    
     init(){}
     init(map: Map) throws {
         

+ 2 - 2
JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift

@@ -49,7 +49,7 @@ final class HomeViewController: BaseViewController {
         super.viewWillAppear(animated)
         self.codeQr_layout.constant = 0
         self.codeQrView.isHidden = true
-        if LocalManager.userInfo.userAccount != "350211196508204525" {
+        if !LocalManager.isCheckAccount() {
             self.codeQr_layout.constant = 150
             self.codeQrView.isHidden = false
         }
@@ -100,7 +100,7 @@ final class HomeViewController: BaseViewController {
             if !LocalManager.isOpenLogin() { return}
             if LocalManager.userInfo.classType == 1 || LocalManager.userInfo.classType == 3{
                 print("统计-action")
-                if LocalManager.userInfo.cityPower == "1" && LocalManager.userInfo.userAccount != "350211196508204525"{
+                if LocalManager.userInfo.cityPower == "1" && !LocalManager.isCheckAccount() {
                     NYSwRouter.push(NYSwPushType.trainee_statistics_official.path)
                     return
                 }

+ 5 - 0
JiaPeiManage/Sources/Modulars/Login/Controllers/BindingViewController.swift

@@ -17,6 +17,7 @@ final class BindingViewController: BaseViewController {
     
     // MARK: UI属性
     
+    @IBOutlet weak var bingding_logo: UIImageView!
     // 账号
     @IBOutlet weak var username_textField: QMUITextField!
     //密码
@@ -38,6 +39,7 @@ final class BindingViewController: BaseViewController {
     var cityItems:[CityItem] = []
     var citys: [String:String] = [:]
     var selectedItemIndex = 0
+    var bindType = 0 //0微信 1apple
     override func viewDidLoad() {
         super.viewDidLoad()
         setupUI()
@@ -58,6 +60,9 @@ final class BindingViewController: BaseViewController {
         self.username_textField.placeholderColor = .db_place
         self.userpassword_textField.placeholderColor = .db_place
         self.userlocation_textField.placeholderColor = .db_place
+        if self.bindType == 1 {
+            bingding_logo.isHidden = true
+        }
     }
     func biandView(){
         //判断账号的输入是否可用

+ 1 - 0
JiaPeiManage/Sources/Modulars/Login/Controllers/BindingViewController.xib

@@ -11,6 +11,7 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="BindingViewController" customModule="JiaPeiManage" customModuleProvider="target">
             <connections>
+                <outlet property="bingding_logo" destination="ap2-6X-Dyy" id="gKX-Sy-SxS"/>
                 <outlet property="location_button" destination="h2F-xd-s0h" id="qXE-eS-L9R"/>
                 <outlet property="location_button_btn" destination="pvK-s6-zf7" id="NrE-RQ-z1i"/>
                 <outlet property="login_button" destination="EJi-fK-0p4" id="ktx-fR-ccX"/>

+ 50 - 52
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.swift

@@ -9,7 +9,7 @@ import UIKit
 import RxSwift
 import RxCocoa
 import SwiftyUserDefaults
-import AuthenticationServices
+
 
 final class LoginViewController: BaseViewController {
     
@@ -18,6 +18,7 @@ final class LoginViewController: BaseViewController {
     
     // MARK: UI属性
     
+    @IBOutlet weak var wx_btn_layout_L: NSLayoutConstraint!
     // 账号
     @IBOutlet weak var username_textField: QMUITextField!
     //密码
@@ -63,6 +64,11 @@ final class LoginViewController: BaseViewController {
             }
         },onError: { Error in
         }).disposed(by: disposeBag)
+        //是否审核
+        LocalManager.loginService.dictRequest(dictType: "coach_version").subscribe(onSuccess: { cityItems in
+            
+        },onError: { Error in
+        }).disposed(by: disposeBag)
     }
     // MARK: 私有方法
     func setupUI(){
@@ -76,6 +82,12 @@ final class LoginViewController: BaseViewController {
         self.username_textField.placeholderColor = .db_place
         self.userpassword_textField.placeholderColor = .db_place
         self.userlocation_textField.placeholderColor = .db_place
+//        DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
+//        }
+        if LocalManager.userInfo.ios_login_open == 0 {
+            self.wx_btn_layout_L.constant = 21.f
+            self.apple_button.isHidden = true
+        }
     }
     func biandView(){
         //判断账号的输入是否可用
@@ -137,7 +149,7 @@ final class LoginViewController: BaseViewController {
         }).disposed(by: disposeBag)
         //apple id
         apple_button.rx.tap.subscribe ({ [unowned self] (_)  in
-            self.performSignIn()
+            self.showDialog(type: 2)
         }).disposed(by: disposeBag)
         //登录
         login_button.rx.tap
@@ -214,6 +226,37 @@ final class LoginViewController: BaseViewController {
             })
             .disposed(by: self.disposeBag)
         }).disposed(by: disposeBag)
+        //绑定apple
+                        NYAppleApiManager.shared.blockSubject.subscribe(onNext: {[unowned self] array in
+                            NYTips.show()
+                            self.loginService.authorizationIosRequest(userId: array[0], identityToken: array[1], city: NYAppleApiManager.shared.city).subscribe(onSuccess: {[unowned self] model in
+                                NYTips.hide()
+                                //判断是否有 openid
+                                let data = model.data as AuthorizationDataInfoModel
+                                if data.coach != nil  {
+                                    //已经绑定直接登录
+                                    LocalManager.userInfo.userAccount = data.coach?.idcard
+                                    LocalManager.userInfo.password = data.coach?.password
+                                    LocalManager.userInfo.city = self.city
+                                    LocalManager.userInfo.cityPower = self.cityPower
+                                    LocalManager.userInfo = data.coach!
+                                    LocalManager.userInfo.isLogin = true //设置已经登录
+                                    NYAccountManager.shared.addUserinfo(user: data.coach!)//添加用户信息
+                                    self.dismiss(animated: true)
+                                }else{
+                                    let bindingViewController = BindingViewController(nibName: "BindingViewController")
+                                    bindingViewController.bindType = 1
+                                    bindingViewController.openid = data.openid
+                                    self.addChild(bindingViewController)
+                                    self.view.addSubview(bindingViewController.view)
+                                }
+                            }, onError: { error in
+                                NYTips.hide()
+                                //NYTips.showErr(txt: (error as! RequestError).errorDescription)
+                                print("%@",error)
+                            })
+                            .disposed(by: self.disposeBag)
+                        }).disposed(by: disposeBag)
         //添加手势
         let tapBackground = UITapGestureRecognizer()
         tapBackground.rx.event
@@ -257,6 +300,11 @@ final class LoginViewController: BaseViewController {
                 dialogViewController.hide()
                 return
             }
+            if(self.type==2){//apple登录
+                NYAppleApiManager.shared.performSignIn(city:city)
+                dialogViewController.hide()
+                return
+            }
             self.userlocation_textField.text = item?.dictLabel
             dialogViewController.hide()
         }
@@ -265,53 +313,3 @@ final class LoginViewController: BaseViewController {
     }
     
 }
-
-extension LoginViewController: ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding {
-    func performSignIn() {
-        if #available(iOS 13.0, *) {
-            let appleIDProvider = ASAuthorizationAppleIDProvider()
-            let request = appleIDProvider.createRequest()
-            request.requestedScopes = [.fullName, .email]
-            
-            let authorizationController = ASAuthorizationController(authorizationRequests: [request])
-            authorizationController.delegate = self
-            authorizationController.presentationContextProvider = self
-            authorizationController.performRequests()
-        } else {
-            // Fallback on earlier versions
-        }
-        
-    }
-    
-    // ASAuthorizationControllerDelegate methods
-    @available(iOS 13.0, *)
-    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
-        if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
-            // Get the user's unique Apple ID and user information
-            let userIdentifier = appleIDCredential.user
-            let fullName = appleIDCredential.fullName
-            let email = appleIDCredential.email
-            
-            // Handle the user data as needed
-            print("User ID: \(userIdentifier)")
-            if let fullName = fullName {
-                print("Full Name: \(fullName.givenName ?? "") \(fullName.familyName ?? "")")
-            }
-            if let email = email {
-                print("Email: \(email)")
-            }
-        }
-    }
-    
-    @available(iOS 13.0, *)
-    func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
-        // Handle sign-in errors
-        print("Sign In with Apple failed: \(error.localizedDescription)")
-    }
-    
-    // ASAuthorizationControllerPresentationContextProviding method
-    @available(iOS 13.0, *)
-    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
-        return view.window!
-    }
-}

+ 1 - 0
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib

@@ -22,6 +22,7 @@
                 <outlet property="userprivacy_button" destination="2vk-wc-3HQ" id="p90-TA-5Kk"/>
                 <outlet property="userprotocol_button" destination="Qxc-Vk-Mrq" id="rwA-OP-u8e"/>
                 <outlet property="view" destination="iN0-l3-epB" id="ubR-kx-ERh"/>
+                <outlet property="wx_btn_layout_L" destination="eXS-Rl-z3G" id="cBC-Ut-sfV"/>
                 <outlet property="wxin_button" destination="1kh-Dw-bRl" id="tG9-Vn-T5L"/>
             </connections>
         </placeholder>

+ 1 - 0
JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.swift

@@ -64,6 +64,7 @@ final class MineViewController: BaseViewController {
     func setupUI(){
         if isIphoneX {self.nav_top_layout.constant = 24.f}
         self.view.backgroundColor = .db_theme
+        unbindwx_button.isHidden = LocalManager.isCheckAccount()//解绑wx是否显示
         //跳修改密码
         update_password_button.rx.tap.subscribe ({  [unowned self] (_) in
             NYSwRouter.push(NYSwPushType.mine_uppassword.path)

+ 13 - 2
JiaPeiManage/Sources/Services/LoginAPI.swift

@@ -17,6 +17,8 @@ enum LoginAPI {
     case dictUser(dictType:String)
     //授权
     case authorizationCode(code:String,city:String)
+    //授权ios
+    case authorizationIosCode(userId:String,identityToken:String,city:String)
     //绑定
     case biandUser(idcard:String, user_password:String, openid:String,city:String)
     //解绑
@@ -30,7 +32,8 @@ extension LoginAPI: TargetType {
     var baseURL: URL {
         switch self {
         case .loginUser,.updateUser,.dictUser
-            ,.authorizationCode,.biandUser,.unbiandUser:
+            ,.authorizationCode,.biandUser,.unbiandUser,
+                .authorizationIosCode:
             return URL(string: HttpRequest.api.path)!
         }
     }
@@ -43,6 +46,8 @@ extension LoginAPI: TargetType {
             return "/jsjp-admin/open-api/tms/coachInfo/updateCoachPassword"
         case .authorizationCode(_,_):
             return "/jsjp-admin/login/code"
+        case .authorizationIosCode(_,_,_):
+            return "/jsjp-admin/login/code/ios"
         case .biandUser(_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/bindCoachOpenid"
         case .unbiandUser(_,_,_):
@@ -67,6 +72,8 @@ extension LoginAPI: TargetType {
             return .put
         case .authorizationCode:
             return .post
+        case .authorizationIosCode:
+            return .post
         default:
             return .get
         }
@@ -100,7 +107,7 @@ extension LoginAPI: TargetType {
     
     var headers: [String: String]? {
         switch self {
-        case .updateUser,.authorizationCode,.biandUser,.unbiandUser:
+        case .updateUser,.authorizationCode,.biandUser,.unbiandUser,.authorizationIosCode:
             return ["Content-Type":"application/x-www-form-urlencoded"]
         default:
             return ["Content-Type":"application/json"]
@@ -122,6 +129,10 @@ extension LoginAPI: TargetType {
         case let .authorizationCode(code, city):
             return ["authorizationCode": code,
                     "city": city,]
+        case let .authorizationIosCode(userId, identityToken, city):
+            return ["userId": userId,
+                    "identityToken": identityToken,
+                    "city": city,]
         case let .biandUser(idcard, user_password, openid, city):
             return ["idcard": idcard,
                     "password": user_password,

+ 6 - 1
JiaPeiManage/Sources/Services/LoginService.swift

@@ -19,6 +19,7 @@ protocol LoginServiceType {
     
     //授权
     func authorizationRequest(code: String, city:String) -> Single<AuthorizationDataModel>
+    func authorizationIosRequest(userId: String,identityToken: String, city:String) -> Single<AuthorizationDataModel>
     //绑定
     func biandUserRequest(idcard:String, user_password:String, openid:String,city:String) -> Single<UserInfo>
     //解绑
@@ -27,7 +28,7 @@ protocol LoginServiceType {
 }
 
 final class LoginService: LoginServiceType {
-    
+
     private let networking : LoginNetworking
     
     init(networking: LoginNetworking) {
@@ -58,6 +59,10 @@ final class LoginService: LoginServiceType {
         return networking.request(api).map(AuthorizationDataModel.self,isModel: true)
     }
     
+    func authorizationIosRequest(userId: String, identityToken: String, city: String) -> RxSwift.Single<AuthorizationDataModel> {
+        let api = LoginAPI.authorizationIosCode(userId: userId, identityToken: identityToken, city: city)
+        return networking.request(api).map(AuthorizationDataModel.self,isModel: true)
+    }
     func biandUserRequest(idcard: String, user_password: String, openid: String, city: String) -> RxSwift.Single<UserInfo> {
         let api = LoginAPI.biandUser(idcard: idcard, user_password: user_password, openid: openid, city: city)
         return networking.request(api).map(UserInfo.self)

+ 23 - 1
JiaPeiManage/Sources/Utils/LocalManager.swift

@@ -21,6 +21,15 @@ class LocalManager {
         
         
     }
+    
+    //审核account
+    static func isCheckAccount()->Bool{
+        if LocalManager.userInfo.userAccount == "350211196508204525" {
+            return true
+        }
+        return false
+    }
+    
     //判断是否登录了
     static func isOpenLogin()->Bool{
         if !LocalManager.userInfo.isLogin {
@@ -48,6 +57,19 @@ class LocalManager {
 
         
     }
+    //部署信息
+    static func getDeploydo(){
+        LocalManager.loginService.dictRequest(dictType: "coach_version").subscribe(onSuccess: { cityItems in
+            for cityItem in cityItems {
+                if cityItem.dictLabel == "ios_version" {
+                    LocalManager.userInfo.server_version =  cityItem.dictValue.replacingOccurrences(of: ".", with: "")
+                }else if cityItem.dictLabel == "ios_login_open" {
+                    LocalManager.userInfo.ios_login_open = Int(cityItem.dictValue)
+                }
+            }
+        },onError: { Error in
+        }).disposed(by: disposeBag)
+    }
     
     //验证版本
     static func verifyVersiondo(){
@@ -56,7 +78,7 @@ class LocalManager {
             var message = "有新版本,请到appstore更新" //提示内容
             var isSup = 0 //是否强制更新
             for cityItem in cityItems {
-                if cityItem.dictCode == 207 {
+                if cityItem.dictLabel == "ios_version" {
                     server_version =  cityItem.dictValue.replacingOccurrences(of: ".", with: "")
                     let array = cityItem.remark.components(separatedBy: ":")
                     if array.count>1 {

+ 89 - 0
JiaPeiManage/Sources/Utils/NYAppleApiManager.swift

@@ -0,0 +1,89 @@
+//
+//  NYAppleApiManager.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/8/7.
+//
+
+import Foundation
+import SwiftyJSON
+import RxSwift
+import AuthenticationServices
+
+class NYAppleApiManager : NSObject {
+    //rxcode 回调
+    let blockSubject = PublishSubject<[String]>()
+    var city:String = ""
+    // 静态属性,用于存储单例实例
+    static let shared = NYAppleApiManager()
+    override init() {
+        super.init()
+    }
+    
+    func performSignIn(city:String){
+        self.city = city
+        if #available(iOS 13.0, *) {
+            let appleIDProvider = ASAuthorizationAppleIDProvider()
+            let request = appleIDProvider.createRequest()
+            request.requestedScopes = [.fullName, .email]
+            
+            let authorizationController = ASAuthorizationController(authorizationRequests: [request])
+            authorizationController.delegate = self
+            authorizationController.presentationContextProvider = self
+            authorizationController.performRequests()
+        } else {
+            // Fallback on earlier versions
+            NYTips.showMsg(txt: "请升级到iOS13.0以上")
+        }
+        
+    }
+}
+
+extension NYAppleApiManager: ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding {
+    
+    
+    // ASAuthorizationControllerDelegate methods
+    @available(iOS 13.0, *)
+    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
+        if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
+            // Get the user's unique Apple ID and user information
+            let userIdentifier = appleIDCredential.user
+            let fullName = appleIDCredential.fullName
+            let email = appleIDCredential.email
+            var array = [userIdentifier]
+            // 服务器验证需要使用的参数
+            if let authorizationCodeData = appleIDCredential.authorizationCode,
+               let authorizationCode = String(data: authorizationCodeData, encoding: .utf8) {
+                print("Authorization Code: \(authorizationCode)")
+            }
+
+            if let identityTokenData = appleIDCredential.identityToken,
+               let identityToken = String(data: identityTokenData, encoding: .utf8) {
+                array.append(identityToken)
+                print("Identity Token: \(identityToken)")
+            }
+            print("User ID: \(userIdentifier)")
+            if let fullName = fullName {
+                print("Full Name: \(fullName.givenName ?? "") \(fullName.familyName ?? "")")
+            }
+            if let email = email {
+                print("Email: \(email)")
+            }
+            self.blockSubject.onNext(array) //发送rx消息
+        }
+    }
+    
+    @available(iOS 13.0, *)
+    func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
+        // Handle sign-in errors
+        NYTips.showMsg(txt: "apple授权失败")
+        print("Sign In with Apple failed(授权失败): \(error.localizedDescription)")
+    }
+    
+    // ASAuthorizationControllerPresentationContextProviding method
+    @available(iOS 13.0, *)
+    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
+        let vc = NYWindow.currentVc()
+        return vc.view.window!
+    }
+}

+ 9 - 13
JiaPeiManage/Sources/Utils/NYWXApiManager.swift

@@ -10,10 +10,6 @@ import SwiftyJSON
 import RxSwift
 
 class NYWXApiManager : NSObject {
-    // MARK: Rx
-    var disposeBag = DisposeBag()
-    // MARK: 服务属性
-    private let loginService: LoginServiceType = LoginService(networking: LoginNetworking())
     //rxcode 回调
     let blockSubject = PublishSubject<String>()
     var city:String = ""
@@ -50,15 +46,15 @@ class NYWXApiManager : NSObject {
              WXApi.send(rep, completion: nil)
            }
         else {
-            //未安装跳网页
-            let rep = SendAuthReq()
-            //这两个参数 可以照抄 第一个是固定的,第二个随意写
-            rep.scope = "snsapi_userinfo"
-            rep.state = "wx_oauth_authorization_state"
-            DispatchQueue.main.async {
-                let vc = NYWindow.currentVc()
-                WXApi.sendAuthReq(rep, viewController: vc, delegate: self)
-            }
+            NYTips.showMsg(txt: "本地未安装微信")
+//            let rep = SendAuthReq()
+//            //这两个参数 可以照抄 第一个是固定的,第二个随意写
+//            rep.scope = "snsapi_userinfo"
+//            rep.state = "wx_oauth_authorization_state"
+//            DispatchQueue.main.async {
+//                let vc = NYWindow.currentVc()
+//                WXApi.sendAuthReq(rep, viewController: vc, delegate: self)
+//            }
         }
     }
     

+ 2 - 2
JiaPeiManage/Sources/Utils/URLNavigationMap.swift

@@ -55,7 +55,7 @@ final class URLNavigationMap {
         
         navigator.register(NYSwPushType.trainee_list.path) { (url, values, context) -> UIViewController? in
             
-            if LocalManager.userInfo.cityPower == "1" && LocalManager.userInfo.userAccount != "350211196508204525" {
+            if LocalManager.userInfo.cityPower == "1" && !LocalManager.isCheckAccount() {
                 let meTraineeListViewController = MeTraineeListViewController(type: .advancet)
                 return meTraineeListViewController
             }
@@ -69,7 +69,7 @@ final class URLNavigationMap {
         }
         
         navigator.register(NYSwPushType.trainee_list_school.path) { (url, values, context) -> UIViewController? in
-            if LocalManager.userInfo.cityPower == "1" && LocalManager.userInfo.userAccount != "350211196508204525" {
+            if LocalManager.userInfo.cityPower == "1" && !LocalManager.isCheckAccount() {
                 let meTraineeListViewController = MeTraineeListViewController(type: .advancet)
                 meTraineeListViewController.schoolId = context as! Int
                 return meTraineeListViewController