UserService 查詢使用者查詢許可權 isGlobalQuery分析

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

好的,根據您提供的 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(永久有效期標誌)。

方法步驟

  1. 建立響應物件

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

    if (StringUtils.isEmpty(userName)) {
        log.error("查詢使用者全域性查詢許可權請求引數為空");
        throw new TitanException("所傳引數為空!");
    }
    
    • 檢查 userName 是否為空字串,如果為空則丟擲異常。
  3. 查詢使用者配置

    UserConfig user = queryByUserName(userName);
    
    • 呼叫 queryByUserName 方法查詢使用者配置資訊。
  4. 處理使用者不存在的情況

    if (user == null) {
        RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);
        return response;
    }
    
    • 如果使用者不存在,設定響應物件的錯誤資訊並返回。
  5. 獲取全域性查詢標誌

    Boolean globalQueryFlag = user.getGlobalQuery();
    
    • 獲取使用者的全域性查詢標誌。
  6. 檢查有效期

    if (globalQueryFlag && user.getQueryPermanentFlag() != null && user.getQueryEffectiveDate() != null) {
        if (!user.getQueryPermanentFlag() && user.getQueryEffectiveDate().before(new Date())) {
            globalQueryFlag = false;
        }
    }
    
    • 如果使用者有全域性查詢許可權且有效期和永久有效期標誌不為空:
      • 檢查有效期是否已過期,如果已過期則將全域性查詢標誌設定為 false
  7. 設定響應物件

    response.setGlobalQueryFlag(globalQueryFlag);
    response.setEffectiveDate(user.getQueryEffectiveDate());
    response.setPermanentFlag(user.getQueryPermanentFlag());
    RespUtils.setSuccess(response);
    
    • 設定響應物件的全域性查詢標誌、有效期和永久有效期標誌。
    • 設定響應物件的操作成功標誌。
  8. 返回響應物件

    return response;
    

詳細分析

1. 引數校驗

  • 使用者名稱校驗:確保 userName 不為空字串。

2. 查詢使用者配置

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

3. 處理使用者不存在的情況

  • 設定錯誤資訊:如果使用者不存在,設定響應物件的錯誤資訊並返回。

4. 獲取全域性查詢標誌

  • 獲取標誌:獲取使用者的全域性查詢標誌。

5. 檢查有效期

  • 有效期檢查:如果使用者有全域性查詢許可權且有效期和永久有效期標誌不為空,檢查有效期是否已過期,如果已過期則將全域性查詢標誌設定為 false

6. 設定響應物件

  • 設定標誌:設定響應物件的全域性查詢標誌、有效期和永久有效期標誌。
  • 設定成功標誌:設定響應物件的操作成功標誌。

7. 返回響應物件

  • 返回結果:返回包含查詢結果的響應物件。

總結

isGlobalQuery 方法的主要功能是查詢使用者的全域性查詢許可權狀態。具體步驟包括:

  1. 引數校驗:確保請求引數不為空。
  2. 查詢使用者配置:查詢使用者配置資訊。
  3. 處理使用者不存在的情況:如果使用者不存在,設定錯誤資訊並返回。
  4. 獲取全域性查詢標誌:獲取使用者的全域性查詢標誌。
  5. 檢查有效期:檢查有效期是否已過期,如果已過期則更新全域性查詢標誌。
  6. 設定響應物件:設定響應物件的查詢結果和成功標誌。
  7. 返回響應物件:返回包含查詢結果的響應物件。

透過這個方法,可以有效地查詢使用者的全域性查詢許可權狀態,確保系統能夠正確地管理和驗證使用者的許可權。

相關文章