好的,根據您提供的 userService.docx
文件內容,我提取了 isGlobalQuery
方法,並對其進行詳細分析。以下是提取的方法及其相關部分:
提取的 isGlobalQuery
方法
@Override
public QueryUserGlobalQueryResponse isGlobalQuery(QueryUserGlobalQueryRequest request) {
String userName = request.getUserName();
QueryUserGlobalQueryResponse response = new QueryUserGlobalQueryResponse();
if (StringUtils.isEmpty(userName)) {
log.error("查詢使用者全域性查詢許可權請求引數為空");
throw new TitanException("所傳引數為空!");
}
UserConfig user = queryByUserName(userName);
if (user == null) {
RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);
return response;
}
Boolean globalQueryFlag = user.getGlobalQuery();
if (globalQueryFlag && user.getQueryPermanentFlag() != null && user.getQueryEffectiveDate() != null) {
if (!user.getQueryPermanentFlag() && user.getQueryEffectiveDate().before(new Date())) {
globalQueryFlag = false;
}
}
response.setGlobalQueryFlag(globalQueryFlag);
response.setEffectiveDate(user.getQueryEffectiveDate());
response.setPermanentFlag(user.getQueryPermanentFlag());
RespUtils.setSuccess(response);
return response;
}
方法分析
輸入引數
QueryUserGlobalQueryRequest request
:包含請求引數,主要包括userName
(使用者名稱)。
輸出引數
QueryUserGlobalQueryResponse response
:包含查詢結果的響應物件,主要欄位有globalQueryFlag
(全域性查詢標誌)、effectiveDate
(有效期)和permanentFlag
(永久有效期標誌)。
方法步驟
-
建立響應物件:
QueryUserGlobalQueryResponse response = new QueryUserGlobalQueryResponse();
-
引數校驗:
if (StringUtils.isEmpty(userName)) { log.error("查詢使用者全域性查詢許可權請求引數為空"); throw new TitanException("所傳引數為空!"); }
- 檢查
userName
是否為空字串,如果為空則丟擲異常。
- 檢查
-
查詢使用者配置:
UserConfig user = queryByUserName(userName);
- 呼叫
queryByUserName
方法查詢使用者配置資訊。
- 呼叫
-
處理使用者不存在的情況:
if (user == null) { RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response); return response; }
- 如果使用者不存在,設定響應物件的錯誤資訊並返回。
-
獲取全域性查詢標誌:
Boolean globalQueryFlag = user.getGlobalQuery();
- 獲取使用者的全域性查詢標誌。
-
檢查有效期:
if (globalQueryFlag && user.getQueryPermanentFlag() != null && user.getQueryEffectiveDate() != null) { if (!user.getQueryPermanentFlag() && user.getQueryEffectiveDate().before(new Date())) { globalQueryFlag = false; } }
- 如果使用者有全域性查詢許可權且有效期和永久有效期標誌不為空:
- 檢查有效期是否已過期,如果已過期則將全域性查詢標誌設定為
false
。
- 檢查有效期是否已過期,如果已過期則將全域性查詢標誌設定為
- 如果使用者有全域性查詢許可權且有效期和永久有效期標誌不為空:
-
設定響應物件:
response.setGlobalQueryFlag(globalQueryFlag); response.setEffectiveDate(user.getQueryEffectiveDate()); response.setPermanentFlag(user.getQueryPermanentFlag()); RespUtils.setSuccess(response);
- 設定響應物件的全域性查詢標誌、有效期和永久有效期標誌。
- 設定響應物件的操作成功標誌。
-
返回響應物件:
return response;
詳細分析
1. 引數校驗
- 使用者名稱校驗:確保
userName
不為空字串。
2. 查詢使用者配置
- 查詢使用者:呼叫
queryByUserName
方法查詢使用者配置資訊。
3. 處理使用者不存在的情況
- 設定錯誤資訊:如果使用者不存在,設定響應物件的錯誤資訊並返回。
4. 獲取全域性查詢標誌
- 獲取標誌:獲取使用者的全域性查詢標誌。
5. 檢查有效期
- 有效期檢查:如果使用者有全域性查詢許可權且有效期和永久有效期標誌不為空,檢查有效期是否已過期,如果已過期則將全域性查詢標誌設定為
false
。
6. 設定響應物件
- 設定標誌:設定響應物件的全域性查詢標誌、有效期和永久有效期標誌。
- 設定成功標誌:設定響應物件的操作成功標誌。
7. 返回響應物件
- 返回結果:返回包含查詢結果的響應物件。
總結
isGlobalQuery
方法的主要功能是查詢使用者的全域性查詢許可權狀態。具體步驟包括:
- 引數校驗:確保請求引數不為空。
- 查詢使用者配置:查詢使用者配置資訊。
- 處理使用者不存在的情況:如果使用者不存在,設定錯誤資訊並返回。
- 獲取全域性查詢標誌:獲取使用者的全域性查詢標誌。
- 檢查有效期:檢查有效期是否已過期,如果已過期則更新全域性查詢標誌。
- 設定響應物件:設定響應物件的查詢結果和成功標誌。
- 返回響應物件:返回包含查詢結果的響應物件。
透過這個方法,可以有效地查詢使用者的全域性查詢許可權狀態,確保系統能夠正確地管理和驗證使用者的許可權。