UserService 新增使用者關聯索引 addUserPermission 分析

一曲微茫發表於2024-11-21

好的,根據您提供的 userService.docx 文件內容,我提取了 addUserPermission 方法,並對其進行詳細分析。以下是提取的方法及其相關部分:

提取的 addUserPermission 方法

@Override
@Transactional(rollbackFor = Exception.class)
public AddUserPermissionResponse addUserPermission(AddUserPermissionRequest request) {
    String userName = request.getUserName();
    AddUserPermissionResponse response = new AddUserPermissionResponse();
    if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) {
        log.error("新增使用者關聯索引請求引數為空");
        throw new TitanException("所傳引數為空!");
    }
    UserConfig user = queryByUserName(userName);
    if (user == null) {
        UserConfig userNew = new UserConfig();
        userNew.setUserName(userName);
        userNew.setCreateTime(new Date());
        userNew.setGlobalQuery(false);
        // 新增設定預設管理員許可權為 false
        userNew.setAdministratorFlag(false);
        // 新增結束
        userConfigMapper.insert(userNew);
    } else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) {
        RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response);
        return response;
    }
    // 獲取索引模式ID列表
    List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
    userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
    RespUtils.setSuccess(response);
    return response;
}

方法分析

輸入引數

  • AddUserPermissionRequest request:包含請求引數,主要包括 userName(使用者名稱)和 userPermissionDTOList(使用者許可權DTO列表)。

輸出引數

  • AddUserPermissionResponse response:包含操作結果的響應物件。

方法步驟

  1. 建立響應物件

    AddUserPermissionResponse response = new AddUserPermissionResponse();
    
  2. 引數校驗

    if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) {
        log.error("新增使用者關聯索引請求引數為空");
        throw new TitanException("所傳引數為空!");
    }
    
    • 檢查 userName 是否為空字串。
    • 檢查 userPermissionDTOList 是否為空或為空列表,如果為空則丟擲異常。
  3. 查詢使用者配置

    UserConfig user = queryByUserName(userName);
    
    • 呼叫 queryByUserName 方法查詢使用者配置資訊。
  4. 處理新使用者

    if (user == null) {
        UserConfig userNew = new UserConfig();
        userNew.setUserName(userName);
        userNew.setCreateTime(new Date());
        userNew.setGlobalQuery(false);
        // 新增設定預設管理員許可權為 false
        userNew.setAdministratorFlag(false);
        // 新增結束
        userConfigMapper.insert(userNew);
    }
    
    • 如果使用者不存在,建立一個新的 UserConfig 物件 userNew,設定使用者名稱、建立時間和預設許可權(全域性查詢許可權為 false,管理員許可權為 false)。
    • 將新使用者資訊插入資料庫。
  5. 檢查全域性查詢許可權

    else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) {
        RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response);
        return response;
    }
    
    • 如果使用者已存在,呼叫 isGlobalQuery 方法檢查使用者是否有全域性查詢許可權。
    • 如果使用者已有全域性查詢許可權,設定響應物件的錯誤資訊並返回。
  6. 獲取索引模式ID列表

    List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
    
    • 呼叫 indexPatternService.getIndexPatternIdByNameList 方法獲取索引模式ID列表。
  7. 新增使用者許可權

    userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
    
    • 呼叫 userPermissionService.addPermissionForUser 方法為使用者新增許可權。
  8. 設定響應物件

    RespUtils.setSuccess(response);
    
    • 設定響應物件的操作成功標誌。
  9. 返回響應物件

    return response;
    

詳細分析

1. 引數校驗

  • 使用者名稱校驗:確保 userName 不為空字串。
  • 許可權列表校驗:確保 userPermissionDTOList 不為空且不為空列表。

2. 查詢使用者配置

  • 查詢使用者:呼叫 queryByUserName 方法查詢使用者配置資訊。

3. 處理新使用者

  • 建立新使用者:如果使用者不存在,建立一個新的 UserConfig 物件並設定預設屬性。
  • 插入資料庫:將新使用者資訊插入資料庫。

4. 檢查全域性查詢許可權

  • 全域性查詢許可權檢查:呼叫 isGlobalQuery 方法檢查使用者是否有全域性查詢許可權。
  • 設定錯誤資訊:如果使用者已有全域性查詢許可權,設定響應物件的錯誤資訊並返回。

5. 獲取索引模式ID列表

  • 呼叫服務方法:呼叫 indexPatternService.getIndexPatternIdByNameList 方法獲取索引模式ID列表。

6. 新增使用者許可權

  • 呼叫服務方法:呼叫 userPermissionService.addPermissionForUser 方法為使用者新增許可權。

7. 設定響應物件

  • 設定成功標誌:設定響應物件的操作成功標誌。

8. 返回響應物件

  • 返回結果:返回包含操作結果的響應物件。

總結

addUserPermission 方法的主要功能是為使用者新增許可權。具體步驟包括:

  1. 引數校驗:確保請求引數不為空。
  2. 查詢使用者配置:查詢使用者配置資訊。
  3. 處理新使用者:如果使用者不存在,建立新使用者並插入資料庫。
  4. 檢查全域性查詢許可權:如果使用者已有全域性查詢許可權,設定錯誤資訊並返回。
  5. 獲取索引模式ID列表:獲取索引模式ID列表。
  6. 新增使用者許可權:呼叫服務方法為使用者新增許可權。
  7. 設定響應物件:設定響應物件的操作成功標誌。
  8. 返回響應物件:返回包含操作結果的響應物件。

透過這個方法,可以有效地管理使用者的許可權,確保使用者能夠正確地訪問所需的索引和資源。

相關文章