Где я должен обновить модель «транзакции» при наличии OrderService и TransactionService - PullRequest
0 голосов
/ 17 января 2019

У меня есть две услуги: OrderService, который имеет удобные методы для работы с заказами. И у меня есть TransactionService, у которого есть удобные методы для работы с платежными транзакциями.

Я хочу обновить статус заказов, когда транзакция была оплачена. Но я не уверен, где это сделать. Я думаю, что это не является обязанностью двух служб.

Я могу сделать что-то вроде этого:

$this->orderService->updateOrderStatusUsingTransaction($order, $event->transaction);

Но тогда я делаю OrderService, также ответственный за обновление Транзакции. Пока я только хочу, чтобы он отвечал за заказы.

$this->transactionService->updateOrderStatusUsingTransaction($order, $event->transaction);

Но тогда я возлагаю на TransactionService также ответственность за обновление Транзакции. Пока я только хочу, чтобы он отвечал за транзакции.

/**
 * Handle the event.
 *
 * @param TransactionChanged $event
 * @return void
 */
public function handle(TransactionChanged $event) {
    /** @var Order $order */
    $order = $event->transaction->order()->first();
    /** @var User $customer */
    $customer = $order->customer()->first();

    $this->orderService->updateOrderStatusUsingTransaction($order, $event->transaction);
    $this->orderMailService->mailCustomerAboutCurrentOrderStatus($order, $customer);
}

Я подозреваю, что мне нужен дополнительный слой за пределами этих служб, чтобы помочь мне решить проблему. Каковы будут некоторые лучшие практики?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...