QueryResult.java 3.02 KB
package com.ectrip.checkincar.model;

import org.json.JSONObject;

/** 车牌预约查询结果(后台 appquery 接口返回) */
public class QueryResult {

    /** true=查询成功(有或无预约都算成功响应);false=网络/解析异常 */
    public boolean ok;
    /** 后台 success 字段:true=查到数据,false=无有效预约 */
    public boolean success;
    /** 后台 info 字段:如"查询成功"、"未查询到当天有效车牌预约信息" */
    public String info = "";

    // data 字段(success=true 时完整返回,success=false 时可能只有 licensePlate)
    public String licensePlate = "";
    public int orderId;
    public String orderCode = "";
    public String driverName = "";
    public String driverPhone = "";
    public String useStartDate = "";
    public String parkingAddress = "";
    /** 0=待入场,1=已入场核销 */
    public int status;
    /** 入场核销时间,未核销时为 null */
    public String enterTime = "";

    /** 真实后台返回;false=模拟查询 */
    public boolean fromServer = false;

    /** 网络/解析异常 */
    public static QueryResult error(String msg) {
        QueryResult r = new QueryResult();
        r.ok = false;
        r.success = false;
        r.info = msg;
        return r;
    }

    /** 解析后台 appquery 接口响应 */
    public static QueryResult fromServerJson(String body) {
        QueryResult r = new QueryResult();
        r.ok = true;
        r.fromServer = true;
        try {
            JSONObject o = new JSONObject(body);
            r.success = o.optBoolean("success", false);
            r.info = o.optString("info", "");
            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", "");
            }
            return r;
        } catch (Throwable t) {
            return error("响应解析失败: " + t.getMessage());
        }
    }

    /** 手机号脱敏: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);
    }

    /** 状态文本 */
    public String statusText() {
        if (status == 1) return "已入场核销";
        return "待入场";
    }

    /** 状态是否为已入场 */
    public boolean isCheckedIn() {
        return status == 1;
    }
}