1

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)

并在服务中做这种工作吗?

4

0 回答 0