From a78fd9510cdc6198c21093cd5ab14c21fa51e886 Mon Sep 17 00:00:00 2001 From: "3075067877@qq.com" <3075067877@qq.com> Date: Wed, 10 Sep 2025 19:37:46 +0800 Subject: [PATCH] add leave api --- .../ouxuan/oxface/network/api/PadApiService.java | 66 +++++++++++++++ .../ouxuan/oxface/network/utils/NetworkUtils.java | 97 ++++++++++++++++++++++ 2 files changed, 163 insertions(+) diff --git a/app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java b/app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java index 39985c4..5101fe5 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java +++ b/app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java @@ -121,6 +121,16 @@ public interface PadApiService { @Query("brand_id") int brandId, @Query("scene") String scene, @Query("page") String page); + + /** + * 离场校验接口 + * 对应旧接口: /v3/pad/checkLeave + * 【1000898】离场校验 + * @param request 离场校验请求体 + * @return 离场校验响应 + */ + @POST("v3/pad/checkLeave") + Call> checkLeave(@Body CheckLeaveRequest request); // ==================== 请求和响应数据模型 ==================== @@ -1521,4 +1531,60 @@ public interface PadApiService { public String getUrl() { return qrcodeUrl; } public void setUrl(String url) { this.qrcodeUrl = url; } } + + /** + * 离场校验请求模型 + * 参考uniapp离场校验接口参数 + */ + public static class CheckLeaveRequest { + @SerializedName("token") + private String token; // 访问令牌 + + @SerializedName("type") + private int type; // 验证类型 1验证码验证 2人脸验证 3扫码验证 4扫码器验证 + + @SerializedName("hardware_id") + private int hardwareId; // 硬件ID + + @SerializedName("v_code") + private String vCode; // 验证码(type=1时必需) + + @SerializedName("decrypt_text") + private String decryptText; // 解密文本(type=4时必需) + + // Getters and Setters + public String getToken() { return token; } + public void setToken(String token) { this.token = token; } + + public int getType() { return type; } + public void setType(int type) { this.type = type; } + + public int getHardwareId() { return hardwareId; } + public void setHardwareId(int hardwareId) { this.hardwareId = hardwareId; } + + public String getVCode() { return vCode; } + public void setVCode(String vCode) { this.vCode = vCode; } + + public String getDecryptText() { return decryptText; } + public void setDecryptText(String decryptText) { this.decryptText = decryptText; } + } + + /** + * 离场校验响应模型 + * 参考uniapp离场校验接口返回结果 + */ + public static class CheckLeaveResult { + @SerializedName("message") + private String message; // 响应消息 + + @SerializedName("data") + private Object data; // 响应数据(可能为空或包含额外信息) + + // Getters and Setters + public String getMessage() { return message; } + public void setMessage(String message) { this.message = message; } + + public Object getData() { return data; } + public void setData(Object data) { this.data = data; } + } } \ No newline at end of file diff --git a/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java b/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java index b911d5a..4b397a8 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java +++ b/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java @@ -641,6 +641,103 @@ public class NetworkUtils { } /** + * 离场校验 (增强版,支持多种验证类型) + * @param token 访问令牌 + * @param type 验证类型 1验证码验证 2人脸验证 3扫码验证 4扫码器验证 + * @param hardwareId 硬件ID + * @param vCode 验证码(type=1时必需) + * @param decryptText 解密文本(type=4时必需) + * @param callback 回调接口 + */ + public static void checkLeave(String token, int type, int hardwareId, String vCode, + String decryptText, NetworkCallback callback) { + if (padApiService == null) { + callback.onError(-1, "NetworkUtils未初始化,请先调用init()方法"); + return; + } + + // 创建请求体 + PadApiService.CheckLeaveRequest request = new PadApiService.CheckLeaveRequest(); + request.setToken(token); + request.setType(type); + request.setHardwareId(hardwareId); + request.setVCode(vCode); + request.setDecryptText(decryptText); + + callback.onStart(); + padApiService.checkLeave(request).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, + Response> response) { + try { + if (response.isSuccessful() && response.body() != null) { + ApiResponse apiResponse = response.body(); + + if (apiResponse.isSuccess()) { + callback.onSuccess(apiResponse.getData()); + } else { + // 当服务器有正确的返回时,如果code不为0,应该显示服务器返回的message,而不是使用自定义的错误信息 + callback.onError(apiResponse.getCode(), apiResponse.getMessage()); + } + } else if (response.errorBody() != null) { + // 尝试解析错误响应体中的JSON数据 + try { + String errorBody = response.errorBody().string(); + ApiResponse apiResponse = + new com.google.gson.Gson().fromJson(errorBody, ApiResponse.class); + if (apiResponse != null) { + // 如果能成功解析API响应,根据code值处理 + if (apiResponse.isSuccess()) { + callback.onSuccess(apiResponse.getData()); + } else { + // 当服务器有正确的返回时,如果code不为0,应该显示服务器返回的message + callback.onError(apiResponse.getCode(), apiResponse.getMessage()); + } + } else { + // 无法解析为API响应格式,使用HTTP错误状态码 + String errorMessage = getHttpErrorMessage(response.code()); + android.util.Log.e("NetworkUtils", "HTTP Error: " + response.code() + " - " + errorMessage); + callback.onError(response.code(), errorMessage); + } + } catch (Exception parseException) { + // JSON解析失败,使用HTTP错误状态码 + String errorMessage = getHttpErrorMessage(response.code()); + android.util.Log.e("NetworkUtils", "HTTP Error: " + response.code() + " - " + errorMessage); + callback.onError(response.code(), errorMessage); + } + } else { + // 处理HTTP错误状态码,如404、500等 + String errorMessage = getHttpErrorMessage(response.code()); + if (response.code() == 502) { + // 对于502错误,提供更具体的说明 + errorMessage = "服务器暂时不可用,请稍后再试"; + } + android.util.Log.e("NetworkUtils", "HTTP Error: " + response.code() + " - " + errorMessage); + callback.onError(response.code(), errorMessage); + } + } catch (Exception e) { + callback.onException(e); + } finally { + callback.onComplete(); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + // 网络请求失败,记录详细日志并显示具体的错误信息 + android.util.Log.e("NetworkUtils", "网络请求失败: " + t.getMessage(), t); + // 显示具体的网络错误信息而不是笼统的"网络请求异常" + String errorMessage = t.getMessage(); + if (errorMessage == null || errorMessage.isEmpty()) { + errorMessage = "网络请求失败"; + } + callback.onError(-1, "网络请求异常: " + errorMessage); + callback.onComplete(); + } + }); + } + + /** * 根据HTTP状态码获取错误信息 * @param httpCode HTTP状态码 * @return 错误信息