From c2436490fc56bee9a6ba10d43a64179955a9e0a2 Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 9 Oct 2025 16:24:50 +0800 Subject: [PATCH] fix test 50 --- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 7 ++++ .../oxface/network/LeaveVerificationManager.java | 42 ++++++++++++++++++++++ .../com/ouxuan/oxface/network/NetworkManager.java | 2 +- .../ouxuan/oxface/network/model/ApiResponse.java | 6 ++-- .../ouxuan/oxface/OrderVerificationResultTest.java | 19 +++++++--- 5 files changed, 68 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index da3b60d..a922367 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -2200,6 +2200,13 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi // gate_open_enable 为 false 或配置不存在,按正常流程进行网络校验 if (isNetworkAvailable()) { LogManager.logInfo(TAG, "检测到离场场景,网络可用,执行离场校验"); + + // 检查是否已有正在进行的离场验证请求,避免重复请求 + if (leaveVerificationManager != null && leaveVerificationManager.isRequestInProgress()) { + LogManager.logInfo(TAG, "已有正在进行的离场验证请求,跳过本次请求"); + return; + } + performLeaveVerification(base64img); } else { diff --git a/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java b/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java index 66be4f3..f1ccf1b 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java +++ b/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java @@ -28,6 +28,7 @@ public class LeaveVerificationManager { private Context context; private LeaveVerificationListener listener; private int currentVerificationType = TYPE_VERIFICATION_CODE; // 当前验证类型 + private boolean isRequestInProgress = false; // 是否有请求正在进行中 /** * 离场校验监听器接口 @@ -79,6 +80,14 @@ public class LeaveVerificationManager { } /** + * 检查是否有请求正在进行中 + * @return true 如果有请求正在进行中,false 否则 + */ + public boolean isRequestInProgress() { + return isRequestInProgress; + } + + /** * 执行离场验证(统一入口) * @param verificationType 验证类型 * @param verifyCode 验证码或人脸base64数据 @@ -87,6 +96,12 @@ public class LeaveVerificationManager { public void performVerification(int verificationType, String verifyCode, String decryptText) { LogManager.logInfo(TAG, "开始执行离场验证,类型: " + verificationType); + // 检查是否已有请求正在进行中,避免重复请求 + if (isRequestInProgress) { + LogManager.logInfo(TAG, "已有正在进行的离场验证请求,跳过本次请求"); + return; + } + // 保存当前验证类型 this.currentVerificationType = verificationType; @@ -125,6 +140,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "开始执行人脸离场校验"); Log.d(TAG, "performFaceLeaveVerification - faceBase64长度: " + (faceBase64 != null ? faceBase64.length() : 0)); + // 设置请求进行中标志 + isRequestInProgress = true; + try { // 获取设备信息 DeviceSelectDataManager deviceDataManager = DeviceSelectDataManager.getInstance(context); @@ -215,6 +233,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "离场校验网络请求完成"); Log.d(TAG, "离场校验网络请求完成"); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { listener.onLeaveVerificationComplete(); } @@ -225,6 +246,9 @@ public class LeaveVerificationManager { LogManager.logError(TAG, "执行离场校验时发生异常", e); Log.e(TAG, "执行离场校验时发生异常: " + e.getMessage(), e); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { String errorMessage = "系统异常: " + e.getMessage(); listener.onLeaveVerificationError(-1, errorMessage); @@ -243,6 +267,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "开始执行验证码离场校验"); Log.d(TAG, "performCodeLeaveVerification - verifyCode: " + verifyCode); + // 设置请求进行中标志 + isRequestInProgress = true; + try { // 获取设备信息 DeviceSelectDataManager deviceDataManager = DeviceSelectDataManager.getInstance(context); @@ -333,6 +360,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "验证码离场校验网络请求完成"); Log.d(TAG, "验证码离场校验网络请求完成"); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { listener.onLeaveVerificationComplete(); } @@ -343,6 +373,9 @@ public class LeaveVerificationManager { LogManager.logError(TAG, "执行验证码离场校验时发生异常", e); Log.e(TAG, "执行验证码离场校验时发生异常: " + e.getMessage(), e); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { String errorMessage = "系统异常: " + e.getMessage(); listener.onLeaveVerificationError(-1, errorMessage); @@ -361,6 +394,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "开始执行扫码器离场校验"); Log.d(TAG, "performScannerLeaveVerification - decryptText: " + decryptText); + // 设置请求进行中标志 + isRequestInProgress = true; + try { // 获取设备信息 DeviceSelectDataManager deviceDataManager = DeviceSelectDataManager.getInstance(context); @@ -452,6 +488,9 @@ public class LeaveVerificationManager { LogManager.logInfo(TAG, "扫码器离场校验网络请求完成"); Log.d(TAG, "扫码器离场校验网络请求完成"); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { listener.onLeaveVerificationComplete(); } @@ -462,6 +501,9 @@ public class LeaveVerificationManager { LogManager.logError(TAG, "执行扫码器离场校验时发生异常", e); Log.e(TAG, "执行扫码器离场校验时发生异常: " + e.getMessage(), e); + // 重置请求进行中标志 + isRequestInProgress = false; + if (listener != null) { String errorMessage = "系统异常: " + e.getMessage(); listener.onLeaveVerificationError(-1, errorMessage); diff --git a/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java b/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java index e315cf5..4d74bc2 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java +++ b/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java @@ -340,7 +340,7 @@ public class NetworkManager { private void handleExtensionField(ApiResponse apiResponse, Request request, String responseBody) { try { if (apiResponse != null) { - Extension extension = apiResponse.getExtension(); + Object extension = apiResponse.getExtension(); if (extension != null) { // 记录extension信息到日志(简化版本,避免日志过长) LogManager.logInfo(TAG, "API响应包含extension字段 - URL: " + request.url() + diff --git a/app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java b/app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java index 9b974d9..4b604cb 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java +++ b/app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java @@ -12,7 +12,7 @@ public class ApiResponse { private String message; // 响应消息 private T data; // 具体数据 private boolean success; // 是否成功 - private Extension extension; // 扩展信息字段 + private Object extension; // 扩展信息字段 public ApiResponse() { } @@ -58,11 +58,11 @@ public class ApiResponse { this.success = success; } - public Extension getExtension() { + public Object getExtension() { return extension; } - public void setExtension(Extension extension) { + public void setExtension(Object extension) { this.extension = extension; } diff --git a/app/src/test/java/com/ouxuan/oxface/OrderVerificationResultTest.java b/app/src/test/java/com/ouxuan/oxface/OrderVerificationResultTest.java index b733c4f..743859d 100644 --- a/app/src/test/java/com/ouxuan/oxface/OrderVerificationResultTest.java +++ b/app/src/test/java/com/ouxuan/oxface/OrderVerificationResultTest.java @@ -4,10 +4,11 @@ import org.junit.Test; import static org.junit.Assert.*; import com.google.gson.Gson; -import com.google.gson.JsonParser; -import com.google.gson.JsonObject; import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import com.ouxuan.oxface.network.api.PadApiService; +import com.ouxuan.oxface.network.model.ApiResponse; /** * 订单核销结果测试 @@ -48,8 +49,13 @@ public class OrderVerificationResultTest { "}"; try { - PadApiService.VerifyOrderResponse response = gson.fromJson(jsonResponse, PadApiService.VerifyOrderResponse.class); + ApiResponse apiResponse = gson.fromJson(jsonResponse, + new TypeToken>(){}.getType()); + assertNotNull("API响应不应该为空", apiResponse); + assertNotNull("数据不应该为空", apiResponse.getData()); + + PadApiService.VerifyOrderResponse response = apiResponse.getData(); assertNotNull("响应不应该为空", response); assertNotNull("结果不应该为空", response.getResult()); assertEquals("订单类型应该是1", 1, response.getResult().getOrderType()); @@ -112,8 +118,13 @@ public class OrderVerificationResultTest { "}"; try { - PadApiService.VerifyOrderResponse response = gson.fromJson(jsonResponse, PadApiService.VerifyOrderResponse.class); + ApiResponse apiResponse = gson.fromJson(jsonResponse, + new TypeToken>(){}.getType()); + + assertNotNull("API响应不应该为空", apiResponse); + assertNotNull("数据不应该为空", apiResponse.getData()); + PadApiService.VerifyOrderResponse response = apiResponse.getData(); assertNotNull("响应不应该为空", response); assertNotNull("结果不应该为空", response.getResult()); assertEquals("订单类型应该是3", 3, response.getResult().getOrderType());