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