Controller
我有一个问题,关于在和中包含某种代码之间的界限在哪里Service
。我认为我在错误的地方包含了业务逻辑。让我向您展示一个我想重构的示例,这是接收lists
(currentRoles, pendingOfAuthRoles..etc)
以更新用户角色的处理程序方法的一部分:
//Insert new roles
List<Role> storedRoles = userService.getRoles(username);
List<Role> newAcceptanceRoles = new ArrayList<Role>();
for(Role role : currentRoles){
if(!storedRoles.contains(role)){
if(roleService.getPolicies(role.getRoleName()).size()>0){
userService.insertRole(username, role.getRoleName(), true, false);
newAcceptanceRoles.add(role);
}else{
userService.insertRole(username, role.getRoleName(), true, true);
}
}
}
if(!newAcceptanceRoles.isEmpty())
mailService.sendRoleAcceptanceEmail(ControllerUtils.getBaseURL(httpServletRequest), username, newAcceptanceRoles.toString(), userService.getUserByUsername(username).getEmail());
在这部分代码中,我插入了用户和角色之间的新关系。某些角色需要管理员授权,因此,该USER_ROLE
表有一个标志,以便不authorized=0
通过视图将角色包含为当前用户角色。
如果该角色未存储为用户角色,我通过将 auth 标志设置为 来插入它false
,此外,如果该角色需要授权,则会向管理员发送一封电子邮件。
我需要像...这样的服务方法吗?
updateUserRoles(currentRoles, pendingOfAuth, pendingOfAccept)
并在服务中做这种工作吗?