Ну я разделяю контроллеры по модулям, а вот бизнес логику не знал что в контроллерах писать нельзя
Писать можно всё что угодно, если осознанно к этому подходишь.
Но если вынести логику в модели и сервисы, то ты можешь переиспользовать её в другом месте. Например нужно заменить Presentation слой (твой сайт), на телеграм бота. Тебе придётся много вещей переписывать, а если бы сразу бизнес слой выделил, то было бы намного проще
В идеале из контроллера должна вызываються одна функция бизнес логики и не больше