Refactor AppServices into assembly, feature facades, and lifecycle coordinator.
Extract dependency wiring and session lifecycle from the container and RootViewController, split NetworkBundle by domain, and add module-level feature services while keeping flat accessors for compatibility. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -27,61 +27,130 @@ struct AppContextBundle {
|
||||
/// 网络层依赖分组,共享同一 `APIClient` 与 token 链路。
|
||||
struct NetworkBundle {
|
||||
let apiClient: APIClient
|
||||
let account: AccountNetworkBundle
|
||||
let commerce: CommerceNetworkBundle
|
||||
let operation: OperationNetworkBundle
|
||||
let content: ContentNetworkBundle
|
||||
|
||||
var authAPI: AuthAPI { account.authAPI }
|
||||
var profileAPI: ProfileAPI { account.profileAPI }
|
||||
var accountContextAPI: AccountContextAPI { account.accountContextAPI }
|
||||
var pushAPI: PushAPI { account.pushAPI }
|
||||
var ordersAPI: OrdersAPI { commerce.ordersAPI }
|
||||
var paymentAPI: PaymentAPI { commerce.paymentAPI }
|
||||
var walletAPI: WalletAPI { commerce.walletAPI }
|
||||
var inviteAPI: InviteAPI { commerce.inviteAPI }
|
||||
var scenicSettlementAPI: ScenicSettlementAPI { commerce.scenicSettlementAPI }
|
||||
var statisticsAPI: StatisticsAPI { operation.statisticsAPI }
|
||||
var scenicPermissionAPI: ScenicPermissionAPI { operation.scenicPermissionAPI }
|
||||
var scenicQueueAPI: ScenicQueueAPI { operation.scenicQueueAPI }
|
||||
var operatingAreaAPI: OperatingAreaAPI { operation.operatingAreaAPI }
|
||||
var pilotCertificationAPI: PilotCertificationAPI { operation.pilotCertificationAPI }
|
||||
var taskAPI: TaskAPI { operation.taskAPI }
|
||||
var scheduleAPI: ScheduleAPI { operation.scheduleAPI }
|
||||
var punchPointAPI: PunchPointAPI { operation.punchPointAPI }
|
||||
var locationReportAPI: LocationReportAPI { operation.locationReportAPI }
|
||||
var uploadAPI: UploadAPI { content.uploadAPI }
|
||||
var ossUploadService: OSSUploadService { content.ossUploadService }
|
||||
var messageCenterAPI: MessageCenterAPI { content.messageCenterAPI }
|
||||
var liveAPI: LiveAPI { content.liveAPI }
|
||||
var projectAPI: ProjectAPI { content.projectAPI }
|
||||
var assetsAPI: AssetsAPI { content.assetsAPI }
|
||||
|
||||
/// 基于共享 `APIClient` 创建全部业务 API 分组。
|
||||
init(apiClient: APIClient) {
|
||||
self.apiClient = apiClient
|
||||
account = AccountNetworkBundle(apiClient: apiClient)
|
||||
commerce = CommerceNetworkBundle(apiClient: apiClient)
|
||||
operation = OperationNetworkBundle(apiClient: apiClient)
|
||||
content = ContentNetworkBundle(apiClient: apiClient)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 账号、登录、资料和推送相关网络依赖。
|
||||
struct AccountNetworkBundle {
|
||||
let authAPI: AuthAPI
|
||||
let profileAPI: ProfileAPI
|
||||
let uploadAPI: UploadAPI
|
||||
let ossUploadService: OSSUploadService
|
||||
let accountContextAPI: AccountContextAPI
|
||||
let pushAPI: PushAPI
|
||||
|
||||
/// 基于共享 `APIClient` 创建账号网络依赖。
|
||||
init(apiClient: APIClient) {
|
||||
authAPI = AuthAPI(client: apiClient)
|
||||
profileAPI = ProfileAPI(client: apiClient)
|
||||
accountContextAPI = AccountContextAPI(client: apiClient)
|
||||
pushAPI = PushAPI(client: apiClient)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 订单、收款、钱包、邀请和结算相关网络依赖。
|
||||
struct CommerceNetworkBundle {
|
||||
let ordersAPI: OrdersAPI
|
||||
let statisticsAPI: StatisticsAPI
|
||||
let paymentAPI: PaymentAPI
|
||||
let walletAPI: WalletAPI
|
||||
let pushAPI: PushAPI
|
||||
let scenicPermissionAPI: ScenicPermissionAPI
|
||||
let inviteAPI: InviteAPI
|
||||
let scenicSettlementAPI: ScenicSettlementAPI
|
||||
let messageCenterAPI: MessageCenterAPI
|
||||
|
||||
/// 基于共享 `APIClient` 创建交易网络依赖。
|
||||
init(apiClient: APIClient) {
|
||||
ordersAPI = OrdersAPI(client: apiClient)
|
||||
paymentAPI = PaymentAPI(client: apiClient)
|
||||
walletAPI = WalletAPI(client: apiClient)
|
||||
inviteAPI = InviteAPI(client: apiClient)
|
||||
scenicSettlementAPI = ScenicSettlementAPI(client: apiClient)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 运营管理、权限、排队、任务、排期和位置上报相关网络依赖。
|
||||
struct OperationNetworkBundle {
|
||||
let statisticsAPI: StatisticsAPI
|
||||
let scenicPermissionAPI: ScenicPermissionAPI
|
||||
let scenicQueueAPI: ScenicQueueAPI
|
||||
let liveAPI: LiveAPI
|
||||
let operatingAreaAPI: OperatingAreaAPI
|
||||
let pilotCertificationAPI: PilotCertificationAPI
|
||||
let taskAPI: TaskAPI
|
||||
let projectAPI: ProjectAPI
|
||||
let scheduleAPI: ScheduleAPI
|
||||
let inviteAPI: InviteAPI
|
||||
let assetsAPI: AssetsAPI
|
||||
let punchPointAPI: PunchPointAPI
|
||||
let locationReportAPI: LocationReportAPI
|
||||
|
||||
/// 基于共享 `APIClient` 创建全部业务 API。
|
||||
/// 基于共享 `APIClient` 创建运营网络依赖。
|
||||
init(apiClient: APIClient) {
|
||||
self.apiClient = apiClient
|
||||
authAPI = AuthAPI(client: apiClient)
|
||||
profileAPI = ProfileAPI(client: apiClient)
|
||||
uploadAPI = UploadAPI(client: apiClient)
|
||||
ossUploadService = OSSUploadService(configService: uploadAPI)
|
||||
accountContextAPI = AccountContextAPI(client: apiClient)
|
||||
ordersAPI = OrdersAPI(client: apiClient)
|
||||
statisticsAPI = StatisticsAPI(client: apiClient)
|
||||
paymentAPI = PaymentAPI(client: apiClient)
|
||||
walletAPI = WalletAPI(client: apiClient)
|
||||
pushAPI = PushAPI(client: apiClient)
|
||||
scenicPermissionAPI = ScenicPermissionAPI(client: apiClient)
|
||||
scenicSettlementAPI = ScenicSettlementAPI(client: apiClient)
|
||||
messageCenterAPI = MessageCenterAPI(client: apiClient)
|
||||
scenicQueueAPI = ScenicQueueAPI(client: apiClient)
|
||||
liveAPI = LiveAPI(client: apiClient)
|
||||
operatingAreaAPI = OperatingAreaAPI(client: apiClient)
|
||||
pilotCertificationAPI = PilotCertificationAPI(client: apiClient)
|
||||
taskAPI = TaskAPI(client: apiClient)
|
||||
projectAPI = ProjectAPI(client: apiClient)
|
||||
scheduleAPI = ScheduleAPI(client: apiClient)
|
||||
inviteAPI = InviteAPI(client: apiClient)
|
||||
assetsAPI = AssetsAPI(client: apiClient)
|
||||
punchPointAPI = PunchPointAPI(client: apiClient)
|
||||
locationReportAPI = LocationReportAPI(client: apiClient)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 内容、素材、直播、项目和消息中心相关网络依赖。
|
||||
struct ContentNetworkBundle {
|
||||
let uploadAPI: UploadAPI
|
||||
let ossUploadService: OSSUploadService
|
||||
let messageCenterAPI: MessageCenterAPI
|
||||
let liveAPI: LiveAPI
|
||||
let projectAPI: ProjectAPI
|
||||
let assetsAPI: AssetsAPI
|
||||
|
||||
/// 基于共享 `APIClient` 创建内容网络依赖。
|
||||
init(apiClient: APIClient) {
|
||||
uploadAPI = UploadAPI(client: apiClient)
|
||||
ossUploadService = OSSUploadService(configService: uploadAPI)
|
||||
messageCenterAPI = MessageCenterAPI(client: apiClient)
|
||||
liveAPI = LiveAPI(client: apiClient)
|
||||
projectAPI = ProjectAPI(client: apiClient)
|
||||
assetsAPI = AssetsAPI(client: apiClient)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 全局 UI 反馈(Toast、Loading)分组。
|
||||
struct UIFeedbackBundle {
|
||||
|
||||
Reference in New Issue
Block a user