// // AppServices+Accessors.swift // suixinkan // // Created by Codex on 2026/6/29. // import Foundation @MainActor /// `AppServices` 兼容访问器,供既有页面继续按扁平属性读取依赖。 extension AppServices { var appSession: AppSession { session.appSession } var accountContext: AccountContext { context.accountContext } var permissionContext: PermissionContext { context.permissionContext } var scenicSpotContext: ScenicSpotContext { context.scenicSpotContext } var toastCenter: ToastCenter { ui.toastCenter } var globalLoading: GlobalLoadingCenter { ui.globalLoading } var scenicQueueRuntime: ScenicQueueRuntime { runtime.scenicQueueRuntime } var apiClient: APIClient { network.apiClient } var authAPI: AuthAPI { network.authAPI } var profileAPI: ProfileAPI { network.profileAPI } var uploadAPI: UploadAPI { network.uploadAPI } var ossUploadService: OSSUploadService { network.ossUploadService } var accountContextAPI: AccountContextAPI { network.accountContextAPI } var ordersAPI: OrdersAPI { network.ordersAPI } var statisticsAPI: StatisticsAPI { network.statisticsAPI } var paymentAPI: PaymentAPI { network.paymentAPI } var walletAPI: WalletAPI { network.walletAPI } var pushAPI: PushAPI { network.pushAPI } var scenicPermissionAPI: ScenicPermissionAPI { network.scenicPermissionAPI } var scenicSettlementAPI: ScenicSettlementAPI { network.scenicSettlementAPI } var messageCenterAPI: MessageCenterAPI { network.messageCenterAPI } var scenicQueueAPI: ScenicQueueAPI { network.scenicQueueAPI } var liveAPI: LiveAPI { network.liveAPI } var operatingAreaAPI: OperatingAreaAPI { network.operatingAreaAPI } var pilotCertificationAPI: PilotCertificationAPI { network.pilotCertificationAPI } var taskAPI: TaskAPI { network.taskAPI } var projectAPI: ProjectAPI { network.projectAPI } var scheduleAPI: ScheduleAPI { network.scheduleAPI } var inviteAPI: InviteAPI { network.inviteAPI } var assetsAPI: AssetsAPI { network.assetsAPI } var punchPointAPI: PunchPointAPI { network.punchPointAPI } var locationReportAPI: LocationReportAPI { network.locationReportAPI } var authSessionCoordinator: AuthSessionCoordinator { session.authSessionCoordinator } var sessionBootstrapper: SessionBootstrapper { session.sessionBootstrapper } /// 当前景区 ID。 var currentScenicId: Int? { accountContext.currentScenic?.id } /// 当前用户 staffId,用于钱包等接口。 var staffId: Int? { Int(accountContext.profile?.userId ?? "") } /// 当前用户 ID 字符串。 var userId: String? { accountContext.profile?.userId } }