好的,根據您提供的 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
:包含操作結果的響應物件。
方法步驟
-
建立響應物件:
AddUserPermissionResponse response = new AddUserPermissionResponse();
-
引數校驗:
if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) { log.error("新增使用者關聯索引請求引數為空"); throw new TitanException("所傳引數為空!"); }
- 檢查
userName
是否為空字串。 - 檢查
userPermissionDTOList
是否為空或為空列表,如果為空則丟擲異常。
- 檢查
-
查詢使用者配置:
UserConfig user = queryByUserName(userName);
- 呼叫
queryByUserName
方法查詢使用者配置資訊。
- 呼叫
-
處理新使用者:
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
)。 - 將新使用者資訊插入資料庫。
- 如果使用者不存在,建立一個新的
-
檢查全域性查詢許可權:
else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) { RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response); return response; }
- 如果使用者已存在,呼叫
isGlobalQuery
方法檢查使用者是否有全域性查詢許可權。 - 如果使用者已有全域性查詢許可權,設定響應物件的錯誤資訊並返回。
- 如果使用者已存在,呼叫
-
獲取索引模式ID列表:
List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
- 呼叫
indexPatternService.getIndexPatternIdByNameList
方法獲取索引模式ID列表。
- 呼叫
-
新增使用者許可權:
userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
- 呼叫
userPermissionService.addPermissionForUser
方法為使用者新增許可權。
- 呼叫
-
設定響應物件:
RespUtils.setSuccess(response);
- 設定響應物件的操作成功標誌。
-
返回響應物件:
return response;
詳細分析
1. 引數校驗
- 使用者名稱校驗:確保
userName
不為空字串。 - 許可權列表校驗:確保
userPermissionDTOList
不為空且不為空列表。
2. 查詢使用者配置
- 查詢使用者:呼叫
queryByUserName
方法查詢使用者配置資訊。
3. 處理新使用者
- 建立新使用者:如果使用者不存在,建立一個新的
UserConfig
物件並設定預設屬性。 - 插入資料庫:將新使用者資訊插入資料庫。
4. 檢查全域性查詢許可權
- 全域性查詢許可權檢查:呼叫
isGlobalQuery
方法檢查使用者是否有全域性查詢許可權。 - 設定錯誤資訊:如果使用者已有全域性查詢許可權,設定響應物件的錯誤資訊並返回。
5. 獲取索引模式ID列表
- 呼叫服務方法:呼叫
indexPatternService.getIndexPatternIdByNameList
方法獲取索引模式ID列表。
6. 新增使用者許可權
- 呼叫服務方法:呼叫
userPermissionService.addPermissionForUser
方法為使用者新增許可權。
7. 設定響應物件
- 設定成功標誌:設定響應物件的操作成功標誌。
8. 返回響應物件
- 返回結果:返回包含操作結果的響應物件。
總結
addUserPermission
方法的主要功能是為使用者新增許可權。具體步驟包括:
- 引數校驗:確保請求引數不為空。
- 查詢使用者配置:查詢使用者配置資訊。
- 處理新使用者:如果使用者不存在,建立新使用者並插入資料庫。
- 檢查全域性查詢許可權:如果使用者已有全域性查詢許可權,設定錯誤資訊並返回。
- 獲取索引模式ID列表:獲取索引模式ID列表。
- 新增使用者許可權:呼叫服務方法為使用者新增許可權。
- 設定響應物件:設定響應物件的操作成功標誌。
- 返回響應物件:返回包含操作結果的響應物件。
透過這個方法,可以有效地管理使用者的許可權,確保使用者能夠正確地訪問所需的索引和資源。