From 4bde9065b36b206a8cd8bf4c9402d84b2ff480c8 Mon Sep 17 00:00:00 2001 From: MTing Date: Wed, 10 Sep 2025 17:13:39 +0800 Subject: [PATCH] fix order_type 1 test --- .../network/OrderVerificationResultHandler.java | 12 ++ .../ouxuan/oxface/network/api/PadApiService.java | 43 +++++-- .../oxface/orderOX/OrderSelectionActivity.java | 12 +- .../orderOX/adapter/OrderSelectionAdapter.java | 13 ++- .../orderOX/model/OrderVerificationData.java | 52 ++++++++- .../ouxuan/oxface/OrderVerificationDataTest.java | 130 +++++++++++++++++++++ 6 files changed, 241 insertions(+), 21 deletions(-) create mode 100644 app/src/test/java/com/ouxuan/oxface/OrderVerificationDataTest.java diff --git a/app/src/main/java/com/ouxuan/oxface/network/OrderVerificationResultHandler.java b/app/src/main/java/com/ouxuan/oxface/network/OrderVerificationResultHandler.java index 29863f8..98d51e7 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/OrderVerificationResultHandler.java +++ b/app/src/main/java/com/ouxuan/oxface/network/OrderVerificationResultHandler.java @@ -270,6 +270,18 @@ public class OrderVerificationResultHandler { if (jsonObject.has("card_no")) { cardNo = jsonObject.get("card_no").getAsString(); } + } else if (info instanceof com.google.gson.JsonElement) { + // 如果info是JsonElement,根据类型处理 + com.google.gson.JsonElement jsonElement = (com.google.gson.JsonElement) info; + if (jsonElement.isJsonObject()) { + JsonObject jsonObject = jsonElement.getAsJsonObject(); + if (jsonObject.has("card_no")) { + cardNo = jsonObject.get("card_no").getAsString(); + } + } else if (jsonElement.isJsonPrimitive()) { + // 如果是基本类型,直接获取字符串值 + cardNo = jsonElement.getAsString(); + } } } return cardNo; 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 d692948..2fc8b59 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 @@ -1055,7 +1055,7 @@ public interface PadApiService { private String orderType; // 订单类型 @SerializedName("info") - private Object info; // 订单信息(可能是字符串或对象) + private com.google.gson.JsonElement info; // 订单信息(可能是字符串或对象) @SerializedName("success") private int success; // 成功次数 @@ -1088,8 +1088,8 @@ public interface PadApiService { public String getOrderType() { return orderType; } public void setOrderType(String orderType) { this.orderType = orderType; } - public Object getInfo() { return info; } - public void setInfo(Object info) { this.info = info; } + public com.google.gson.JsonElement getInfo() { return info; } + public void setInfo(com.google.gson.JsonElement info) { this.info = info; } public int getSuccess() { return success; } public void setSuccess(int success) { this.success = success; } @@ -1102,21 +1102,46 @@ public interface PadApiService { // 辅助方法,用于获取字符串类型的info public String getInfoAsString() { - if (info instanceof String) { - return (String) info; - } else { - return info != null ? info.toString() : ""; + if (info != null) { + if (info.isJsonPrimitive()) { + return info.getAsString(); + } else if (info.isJsonObject()) { + return info.toString(); + } } + return ""; } // 辅助方法,用于获取对象类型的info(需要进一步解析) public com.google.gson.JsonObject getInfoAsJsonObject() { - if (info instanceof com.google.gson.JsonObject) { - return (com.google.gson.JsonObject) info; + if (info != null && info.isJsonObject()) { + return info.getAsJsonObject(); } else { return null; } } + + // 从info中提取card_no字段 + public String getCardNoFromInfo() { + if (info != null && info.isJsonObject()) { + if (info.getAsJsonObject().has("card_no")) { + return info.getAsJsonObject().get("card_no").getAsString(); + } + } + return ""; + } + + // 从info中提取user_face_id字段 + public String getUserFaceIdFromInfo() { + if (info != null && info.isJsonObject()) { + if (info.getAsJsonObject().has("user_face_id")) { + return info.getAsJsonObject().get("user_face_id").getAsString(); + } + } + return ""; + } + + // 已有getInfoAsString方法,无需重复定义 } /** diff --git a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java index baec26e..9e4433d 100644 --- a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java @@ -290,8 +290,16 @@ public class OrderSelectionActivity extends AppCompatActivity { // 获取订单类型 int orderType = order.getOrder_type(); - // 获取卡号 - String cardNo = order.getInfo() != null ? order.getCardNoFromInfo() : ""; + // 获取卡号 - 根据订单类型处理info字段 + String cardNo = ""; + if (order.getOrder_type() == 3) { + // 年月卡 - 从info对象中提取card_no + cardNo = order.getInfo() != null ? order.getCardNoFromInfo() : ""; + } else if (order.getOrder_type() == 1) { + // 人次票 - info字段本身就是预订信息,但卡号可能在其他地方 + // 这里保持空字符串,因为人次票可能没有卡号概念 + cardNo = ""; + } // 获取用户人脸ID String userFaceId = order.getInfo() != null ? order.getUserFaceIdFromInfo() : ""; diff --git a/app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java b/app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java index 6cdd833..8830cf9 100644 --- a/app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java +++ b/app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java @@ -171,10 +171,15 @@ public class OrderSelectionAdapter extends RecyclerView.Adapter