0fd093a2
李进
初始提交:手持车牌核销应用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
package com.ectrip.checkincar.model;
import org.json.JSONObject;
/** 核销结果(模拟核销 / 后台真实核销共用) */
public class VerifyResult {
public boolean success;
public String message = "";
// 通用/模拟字段(mock 模式使用)
public String reservationId = "";
public String visitorName = "";
public String enterDate = "";
public String visitTime = "";
public String plateNo = "";
public String visitorIdCard = "";
public String visitorType = "";
public String verifySerialNo = "";
// 后台真实核销返回的 data 字段(appedit.do 成功时返回)
public String licensePlate = "";
public int orderId;
public String orderCode = "";
public String driverName = "";
public String driverPhone = "";
public String useStartDate = "";
public String parkingAddress = "";
public int status;
public String enterTime = "";
/** true=后台真实核销返回;false=模拟核销 */
public boolean fromServer = false;
public static VerifyResult fail(String msg) {
VerifyResult r = new VerifyResult();
r.success = false;
r.message = msg;
return r;
}
/**
* 解析后台 appedit.do 响应。
* 旧版仅返回 {success, info};新版成功时额外返回 data 对象:
* {"success":true,"info":"消费成功",
* "data":{"licensePlate":"粤A12345","orderId":10001,"orderCode":"202610270001",
* "driverName":"张三","driverPhone":"13800138000",
* "useStartDate":"2026-10-27","parkingAddress":"停车场A区",
* "status":1,"enterTime":"2026-10-27 10:30:00"}}
*/
public static VerifyResult fromServerJson(String body) {
VerifyResult r = new VerifyResult();
r.fromServer = true;
try {
JSONObject o = new JSONObject(body);
r.success = o.optBoolean("success", false);
String info = o.optString("info", "");
r.message = info.isEmpty() ? (r.success ? "消费成功" : "核销失败") : info;
// 新版:成功时解析 data 对象(旧版无 data 时跳过,字段保持空串)
JSONObject data = o.optJSONObject("data");
if (data != null) {
r.licensePlate = data.optString("licensePlate", "");
r.orderId = data.optInt("orderId", 0);
r.orderCode = data.optString("orderCode", "");
r.driverName = data.optString("driverName", "");
r.driverPhone = data.optString("driverPhone", "");
r.useStartDate = data.optString("useStartDate", "");
r.parkingAddress = data.optString("parkingAddress", "");
r.status = data.optInt("status", 0);
r.enterTime = data.isNull("enterTime") ? "" : data.optString("enterTime", "");
// 兼容:如果 data 里有 licensePlate,同步给旧 plateNo 字段
if (!r.licensePlate.isEmpty() && r.plateNo.isEmpty()) {
r.plateNo = r.licensePlate;
}
}
return r;
} catch (Throwable t) {
r.success = false;
String snippet = body == null ? "" : (body.length() > 200 ? body.substring(0, 200) + "..." : body);
r.message = "响应解析失败:" + snippet;
return r;
}
}
/** 手机号脱敏:138****8000 */
public String maskedPhone() {
if (driverPhone == null || driverPhone.length() < 7) {
return driverPhone == null ? "" : driverPhone;
}
return driverPhone.substring(0, 3) + "****" + driverPhone.substring(driverPhone.length() - 4);
}
}
|