Похоже, у вас, вероятно, будут разные функциональные возможности для разных типов пользователей.Это своего рода точка зрения, что администраторы могут делать то, что не могут делать игроки.Таким образом, будут отдельные сервисные методы администратора, контроллеры, используемые игроками, не должны иметь подключенных к ним сервисов администратора.
Кроме того, это характер транзакций, к которым они обычно не относятся.сущность, обычно у вас есть разные сущности, с которыми вы хотите иметь дело в одной и той же транзакции.Если это так, то иметь разные службы для каждого объекта, вероятно, не имеет смысла.
На уровне контроллера используйте Spring Security, чтобы определить, кто может вызывать какую конечную точку.Я бы организовал конечные точки контроллера в классы в зависимости от того, что общего было достаточно общего, но то, как вы разбили его, не так уж и сложно.
Для сервисов у меня был бы один сервис, реализующий логику для обычных игроков, иодин сервис, реализующий функции администратора.Если кода для какого-либо из них много, я бы подумал о том, чтобы разбить его на отдельные службы, сохранив различие между службами, содержащими методы для обычных игроков и для администраторов.