There is no silver bullet, so you won’t get the “right” answer here. It depends on your specific scenario.
I personally try not to add as many layers, if it is very necessary, IMO, you need very strong motivation to have so many layers of abstraction, because usually you can create a suitable architecture with fewer components.
I would say that for an average application you don’t even need a formal service level, because it ends with an empty empty method, which simply calls another method in your repository.
If you need to use the service level, it may be more suitable to have one class of service for a domain domain or for each group of objects. Do not think that having a class of service for each controller makes a lot of sense. You can add some helper classes to cover the general logic of the controller, if necessary.
The problem that I see with your approach is that the service level should be part of the model and I don’t think that making it so dependent on the level of your controller is a good strategy.
source share