feat: 实现受控真实下单安全边界 (#99)
This commit is contained in:
@@ -46,6 +46,8 @@ from .current_client_service import CurrentClientService
|
||||
from .http_admin_gateway import DEFAULT_ADMIN_BASE_URL, HttpAdminGateway
|
||||
from .pdd_ui import PDDTaskPage, TaskRow
|
||||
from .purchase_task_service import PurchaseAdapterFactory
|
||||
from .purchase_task_service import LivePurchaseAdapterFactory
|
||||
from .live_purchase_authorization import LivePurchaseAuthorizationService
|
||||
from .purchase_reconcile_service import PurchaseReconcileFactory
|
||||
from .selected_android_device_service import SelectedAndroidDeviceService
|
||||
from .settings_repository import SettingsRepository
|
||||
@@ -125,6 +127,12 @@ class ClaimTaskWorker(QObject):
|
||||
android_device_service: SelectedAndroidDeviceService,
|
||||
collect_service_factory: Optional[CollectServiceFactory] = None,
|
||||
purchase_adapter_factory: Optional[PurchaseAdapterFactory] = None,
|
||||
live_purchase_adapter_factory: Optional[
|
||||
LivePurchaseAdapterFactory
|
||||
] = None,
|
||||
live_authorization_service: Optional[
|
||||
LivePurchaseAuthorizationService
|
||||
] = None,
|
||||
purchase_reconcile_factory: Optional[PurchaseReconcileFactory] = None,
|
||||
selected_task_id: str = "",
|
||||
device_connection_checker: Optional[Callable[[str], None]] = None,
|
||||
@@ -137,6 +145,8 @@ class ClaimTaskWorker(QObject):
|
||||
self._cancelled = False
|
||||
self._collect_service_factory = collect_service_factory
|
||||
self._purchase_adapter_factory = purchase_adapter_factory
|
||||
self._live_purchase_adapter_factory = live_purchase_adapter_factory
|
||||
self._live_authorization_service = live_authorization_service
|
||||
self._purchase_reconcile_factory = purchase_reconcile_factory
|
||||
self._selected_task_id = selected_task_id
|
||||
self._device_connection_checker = (
|
||||
@@ -179,6 +189,17 @@ class ClaimTaskWorker(QObject):
|
||||
)
|
||||
result = service.execute_selected(self._selected_task_id)
|
||||
else:
|
||||
purchase_mode = "dry_run"
|
||||
if self._live_authorization_service is not None:
|
||||
purchase_mode = (
|
||||
self._live_authorization_service.purchase_mode_for(
|
||||
client.client_id,
|
||||
android_serial or "",
|
||||
live_adapter_ready=(
|
||||
self._live_purchase_adapter_factory is not None
|
||||
),
|
||||
)
|
||||
)
|
||||
dispatcher = TaskDispatcher(
|
||||
self._gateway,
|
||||
self._task_repository,
|
||||
@@ -186,6 +207,10 @@ class ClaimTaskWorker(QObject):
|
||||
android_serial or "",
|
||||
collect_service_factory=self._collect_service_factory,
|
||||
purchase_adapter_factory=self._purchase_adapter_factory,
|
||||
live_purchase_adapter_factory=(
|
||||
self._live_purchase_adapter_factory
|
||||
),
|
||||
purchase_mode=purchase_mode,
|
||||
purchase_reconcile_factory=self._purchase_reconcile_factory,
|
||||
cancelled=lambda: self._cancelled,
|
||||
device_connection_checker=self._device_connection_checker,
|
||||
@@ -308,6 +333,9 @@ class PDDTaskPageEvent(QObject):
|
||||
settings_repository: Optional[SettingsRepository] = None,
|
||||
collect_service_factory: Optional[CollectServiceFactory] = None,
|
||||
purchase_adapter_factory: Optional[PurchaseAdapterFactory] = None,
|
||||
live_purchase_adapter_factory: Optional[
|
||||
LivePurchaseAdapterFactory
|
||||
] = None,
|
||||
purchase_reconcile_factory: Optional[PurchaseReconcileFactory] = None,
|
||||
device_connection_checker: Optional[Callable[[str], None]] = None,
|
||||
next_task_delay_ms: int = 500,
|
||||
@@ -337,6 +365,7 @@ class PDDTaskPageEvent(QObject):
|
||||
self._detail_windows: Dict[str, TaskDetailWindow] = {}
|
||||
self._collect_service_factory = collect_service_factory
|
||||
self._purchase_adapter_factory = purchase_adapter_factory
|
||||
self._live_purchase_adapter_factory = live_purchase_adapter_factory
|
||||
self._purchase_reconcile_factory = purchase_reconcile_factory
|
||||
self._device_connection_checker = (
|
||||
device_connection_checker
|
||||
@@ -360,6 +389,9 @@ class PDDTaskPageEvent(QObject):
|
||||
pass
|
||||
|
||||
settings = settings_repository or SettingsRepository()
|
||||
self._live_authorization_service = LivePurchaseAuthorizationService(
|
||||
settings
|
||||
)
|
||||
self._client_service = CurrentClientService(settings)
|
||||
self._selected_android_device_service = SelectedAndroidDeviceService(
|
||||
settings
|
||||
@@ -788,6 +820,8 @@ class PDDTaskPageEvent(QObject):
|
||||
android_device_service=self._selected_android_device_service,
|
||||
collect_service_factory=self._collect_service_factory,
|
||||
purchase_adapter_factory=self._purchase_adapter_factory,
|
||||
live_purchase_adapter_factory=self._live_purchase_adapter_factory,
|
||||
live_authorization_service=self._live_authorization_service,
|
||||
purchase_reconcile_factory=self._purchase_reconcile_factory,
|
||||
device_connection_checker=self._device_connection_checker,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user