Контроллер принимает запрос, преобразует только транспортные значения и вызывает сервис сценария. Проверка правил заказа, расчёт суммы и работа с несколькими репозиториями живут не в контроллере.
Удобная граница: если код нужен из CLI или фоновой задачи, это уже не HTTP-логика. Вынесите его в application service, а форматирование ответа оставьте контроллеру или responder.
Не создавайте отдельный класс ради одной строки. Разделение должно объяснять ответственность, а не увеличивать количество файлов без пользы.