Initial commit: suixinkan_ios UIKit rewrite project.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 14:33:31 +08:00
commit 9edf993432
297 changed files with 47151 additions and 0 deletions

View File

@ -0,0 +1,181 @@
//
// AppRouteViewControllerFactory.swift
// suixinkan
//
import UIKit
@MainActor
/// ViewController `AppRoute` UIKit
enum AppRouteViewControllerFactory {
/// ViewController使
static func makeViewController(for route: AppRoute, services: AppServices) -> UIViewController {
switch route {
case .placeholder(let title):
return PlaceholderViewController(title: title)
case .home(let homeRoute):
return makeViewController(for: homeRoute, services: services)
case .profile(let profileRoute):
return makeViewController(for: profileRoute, services: services)
case .orders(let ordersRoute):
return makeViewController(for: ordersRoute, services: services)
}
}
/// ViewController
static func makeViewController(for route: HomeRoute, services: AppServices) -> UIViewController {
switch route {
case .profileSpace:
return ProfileViewController()
case .scenicSelection:
return ScenicSelectionViewController()
case .permissionApply:
return PermissionApplyViewController()
case .permissionApplyStatus:
return PermissionApplyStatusViewController()
case .scenicApplication:
return ScenicApplicationViewController()
case .moreFunctions:
return HomeMoreFunctionsViewController()
case .settings:
return SettingsViewController()
case .paymentCollection:
return PaymentCollectionViewController()
case .wallet:
return WalletViewController()
case .taskManagement:
return TaskManagementViewController()
case .taskCreate:
return TaskCreateViewController()
case .taskDetail(let id, let summary):
return TaskDetailViewController(taskId: id, summary: summary)
case .projectManagement:
return ProjectManagementViewController()
case .pmProjectManagement:
return StoreProjectManagementViewController()
case .projectDetail(let id, let storeMode):
return ProjectDetailViewController(projectId: id, storeMode: storeMode)
case .projectEditor(let id, let storeMode):
if storeMode {
return StoreProjectEditorViewController(projectId: id)
}
return ProjectEditorViewController(projectId: id)
case .scheduleManagement:
return ScheduleManagementViewController()
case .scheduleAdd:
return ScheduleAddViewController()
case .photographerInvite:
return PhotographerInviteViewController()
case .inviteRecord:
return InviteRecordViewController()
case .cloudStorage:
return CloudStorageViewController()
case .cloudStorageTransit:
return CloudStorageTransitViewController()
case .materialLibrary:
return MediaLibraryViewController(kind: .material)
case .materialUpload:
return MediaLibraryUploadViewController(kind: .material)
case .sampleLibrary:
return MediaLibraryViewController(kind: .sample)
case .sampleUpload:
return MediaLibraryUploadViewController(kind: .sample)
case .albumList:
return AlbumListViewController()
case .albumTrailer:
return AlbumTrailerViewController()
case .punchPointList:
return PunchPointListViewController()
case .punchPointDetail(let id, let summary):
return PunchPointDetailViewController(punchPointId: id, summary: summary)
case .punchPointEditor(let id):
return PunchPointEditorViewController(punchPointId: id)
case .punchPointQR(_, let title, let qrURL):
return PunchPointQRViewController(title: title, qrURL: qrURL)
case .locationReport:
return LocationReportViewController()
case .locationReportHistory:
return LocationReportHistoryViewController()
case .depositOrders:
return DepositOrderListViewController()
case .withdrawalAudit:
return WithdrawalAuditViewController()
case .scenicSettlement:
return ScenicSettlementViewController()
case .scenicSettlementReview:
return ScenicSettlementReviewViewController()
case .messageCenter:
return MessageCenterViewController()
case .queueManagement:
return QueueManagementViewController()
case .liveManagement:
return LiveManagementViewController()
case .liveAlbum:
return LiveAlbumViewController()
case .operatingArea:
return OperatingAreaViewController()
case .pilotCertification:
return PilotCertificationViewController()
case .modulePlaceholder(_, let title):
return FeaturePlaceholderViewController(title: title, uri: homeRouteURI(route))
}
}
/// ViewController
static func makeViewController(for route: ProfileRoute, services: AppServices) -> UIViewController {
switch route {
case .accountSwitch:
return AccountSwitchViewController()
case .realNameAuth:
return RealNameAuthViewController()
case .settings:
return SettingsViewController()
case .agreement(let page):
return AgreementViewController(page: page)
#if DEBUG
case .debugHomeMenus:
return HomeMoreFunctionsViewController()
#endif
}
}
/// ViewController
static func makeViewController(for route: OrdersRoute, services: AppServices) -> UIViewController {
switch route {
case .storeDetail(let item):
return StoreOrderDetailViewController(item: item)
case .writeOffDetail(let item):
return WriteOffOrderDetailViewController(item: item)
case .depositDetail(let orderNumber):
return DepositOrderDetailViewController(orderNumber: orderNumber)
case .depositShootingInfo(let orderNumber, let scenicSpotId, let photogUid):
return DepositOrderShootingInfoViewController(
orderNumber: orderNumber,
scenicSpotId: scenicSpotId,
photogUid: photogUid
)
case .historicalShooting(let orderNumber):
return HistoricalShootingInfoViewController(orderNumber: orderNumber)
case .multiTravelTaskUpload(let orderNumber):
return MultiTravelTaskUploadViewController(initialOrderNumber: orderNumber)
case .orderTrailer(let orderNumber, let title):
return FeaturePlaceholderViewController(title: title, uri: "order_trailer:\(orderNumber)")
}
}
private static func homeRouteURI(_ route: HomeRoute) -> String {
if case let .modulePlaceholder(uri, _) = route {
return uri
}
return String(describing: route)
}
}
@MainActor
/// ViewController `UIKitAppNavigation`
enum HomeRouteViewControllerFactory {
static func make(for route: HomeRoute) -> UIViewController {
AppRouteViewControllerFactory.makeViewController(for: route, services: AppServices.shared)
}
}