Browse Source

fix test 50

dev
MTing 5 days ago
parent
commit
c2436490fc
  1. 7
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 42
      app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java
  3. 2
      app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java
  4. 6
      app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java
  5. 19
      app/src/test/java/com/ouxuan/oxface/OrderVerificationResultTest.java

7
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 {

42
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);

2
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() +

6
app/src/main/java/com/ouxuan/oxface/network/model/ApiResponse.java

@ -12,7 +12,7 @@ public class ApiResponse<T> {
private String message; // 响应消息
private T data; // 具体数据
private boolean success; // 是否成功
private Extension extension; // 扩展信息字段
private Object extension; // 扩展信息字段
public ApiResponse() {
}
@ -58,11 +58,11 @@ public class ApiResponse<T> {
this.success = success;
}
public Extension getExtension() {
public Object getExtension() {
return extension;
}
public void setExtension(Extension extension) {
public void setExtension(Object extension) {
this.extension = extension;
}

19
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<PadApiService.VerifyOrderResponse> apiResponse = gson.fromJson(jsonResponse,
new TypeToken<ApiResponse<PadApiService.VerifyOrderResponse>>(){}.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<PadApiService.VerifyOrderResponse> apiResponse = gson.fromJson(jsonResponse,
new TypeToken<ApiResponse<PadApiService.VerifyOrderResponse>>(){}.getType());
assertNotNull("API响应不应该为空", apiResponse);
assertNotNull("数据不应该为空", apiResponse.getData());
PadApiService.VerifyOrderResponse response = apiResponse.getData();
assertNotNull("响应不应该为空", response);
assertNotNull("结果不应该为空", response.getResult());
assertEquals("订单类型应该是3", 3, response.getResult().getOrderType());

Loading…
Cancel
Save