Browse Source

add leave api

dev
赵明涛 4 days ago
parent
commit
a78fd9510c
  1. 66
      app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java
  2. 97
      app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java

66
app/src/main/java/com/ouxuan/oxface/network/api/PadApiService.java

@ -121,6 +121,16 @@ public interface PadApiService {
@Query("brand_id") int brandId, @Query("brand_id") int brandId,
@Query("scene") String scene, @Query("scene") String scene,
@Query("page") String page); @Query("page") String page);
/**
* 离场校验接口
* 对应旧接口: /v3/pad/checkLeave
* 1000898离场校验
* @param request 离场校验请求体
* @return 离场校验响应
*/
@POST("v3/pad/checkLeave")
Call<ApiResponse<CheckLeaveResult>> checkLeave(@Body CheckLeaveRequest request);
// ==================== 请求和响应数据模型 ==================== // ==================== 请求和响应数据模型 ====================
@ -1521,4 +1531,60 @@ public interface PadApiService {
public String getUrl() { return qrcodeUrl; } public String getUrl() { return qrcodeUrl; }
public void setUrl(String url) { this.qrcodeUrl = url; } 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; }
}
} }

97
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<PadApiService.CheckLeaveResult> 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<ApiResponse<PadApiService.CheckLeaveResult>>() {
@Override
public void onResponse(Call<ApiResponse<PadApiService.CheckLeaveResult>> call,
Response<ApiResponse<PadApiService.CheckLeaveResult>> response) {
try {
if (response.isSuccessful() && response.body() != null) {
ApiResponse<PadApiService.CheckLeaveResult> 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<PadApiService.CheckLeaveResult> 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错误状态码如404500等
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<ApiResponse<PadApiService.CheckLeaveResult>> 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状态码获取错误信息 * 根据HTTP状态码获取错误信息
* @param httpCode HTTP状态码 * @param httpCode HTTP状态码
* @return 错误信息 * @return 错误信息

Loading…
Cancel
Save