package com.taobao.tae.Mshopping.demo.model; import com.google.gson.Gson; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 买家收货地址 * Created by xinyuan on 14/7/9. */ public class Address implements Serializable { //买家ID private String id; private Boolean submit; private String tag; private String type; private AddressFields fields; public Address(JSONObject addressJsonObj) { try { if (addressJsonObj.has("id")) { this.id = addressJsonObj.getString("id"); } if (addressJsonObj.has("submit")) { this.submit = addressJsonObj.getBoolean("submit"); } if (addressJsonObj.has("tag")) { this.tag = addressJsonObj.getString("tag"); } if (addressJsonObj.has("type")) { this.type = addressJsonObj.getString("type"); } if (addressJsonObj.has("fields")) { this.fields = new AddressFields(addressJsonObj.getJSONObject("fields")); } } catch (JSONException e) { e.printStackTrace(); } } /** * 获取用户选择的收获地址连接串 * * @return */ public String getSelectedAddressLikeConcatString() { StringBuilder address = new StringBuilder(); AddressFieldsOptions addressFieldsOptions = fields.getOptions().get(fields.getSelectedId()); if (addressFieldsOptions.getProvinceName() != null) { address.append(addressFieldsOptions.getProvinceName()); } if (addressFieldsOptions.getCityName() != null) { address.append(addressFieldsOptions.getCityName()); } if (addressFieldsOptions.getAreaName() != null) { address.append(addressFieldsOptions.getAreaName()); } if (addressFieldsOptions.getAddressDetail() != null) { address.append(addressFieldsOptions.getAddressDetail()); } return address.toString(); } public String toJson() { JSONObject jsonObject = new JSONObject(); try { jsonObject.put("id", id); jsonObject.put("submit", submit); jsonObject.put("tag", tag); jsonObject.put("type", type); jsonObject.put("fields", new JSONObject(fields.toJson())); } catch (JSONException e) { e.printStackTrace(); } return jsonObject.toString(); } public class AddressFields { private String agencyReceive; private String mdSellerId; private String selectedId; private Map<String, AddressFieldsOptions> options; public AddressFields(JSONObject fieldsJsonObj) { try { if (fieldsJsonObj.has("agencyReceive")) { this.agencyReceive = fieldsJsonObj.getString("agencyReceive"); } if (fieldsJsonObj.has("mdSellerId")) { this.mdSellerId = fieldsJsonObj.getString("mdSellerId"); } if (fieldsJsonObj.has("selectedId")) { this.selectedId = fieldsJsonObj.getString("selectedId"); } if (fieldsJsonObj.has("options")) { options = new HashMap<String, AddressFieldsOptions>(); JSONArray optionsJsonArray = fieldsJsonObj.getJSONArray("options"); for (int i = 0; i < optionsJsonArray.length(); i++) { JSONObject jsonObject = optionsJsonArray.getJSONObject(i); AddressFieldsOptions fieldsOptions = new AddressFieldsOptions(jsonObject); options.put(fieldsOptions.getDeliveryAddressId(), fieldsOptions); } } } catch (JSONException e) { e.printStackTrace(); } } public String toJson() { JSONObject jsonObject = new JSONObject(); try { Gson gson = new Gson(); String optionsJson = gson.toJson(convertMapToList(options)); jsonObject.put("agencyReceive", agencyReceive); jsonObject.put("mdSellerId", mdSellerId); jsonObject.put("selectedId", selectedId); jsonObject.put("options", new JSONArray(optionsJson)); } catch (JSONException e) { e.printStackTrace(); } return jsonObject.toString(); } private List convertMapToList(Map<String, AddressFieldsOptions> map) { List list = new ArrayList(); for (Map.Entry entry : map.entrySet()) { list.add(entry.getValue()); } return list; } public String getAgencyReceive() { return agencyReceive; } public void setAgencyReceive(String agencyReceive) { this.agencyReceive = agencyReceive; } public String getMdSellerId() { return mdSellerId; } public void setMdSellerId(String mdSellerId) { this.mdSellerId = mdSellerId; } public String getSelectedId() { return selectedId; } public void setSelectedId(String selectedId) { this.selectedId = selectedId; } public Map<String, AddressFieldsOptions> getOptions() { return options; } public void setOptions(Map<String, AddressFieldsOptions> options) { this.options = options; } } public class AddressFieldsOptions { private String addressDetail; private String agencyReceiveDesc; private String areaName; private String cityName; private Boolean defaultAddress; private String deliveryAddressId; private String divisionCode; private Boolean enableMDZT; private Boolean enableStation; private String fullName; private String mobile; private OverseasTransportInfo overseasTransportInfo; private String postCode; private String provinceName; private String stationId; private String tele; private String townDivisionId; public AddressFieldsOptions(JSONObject optionsJsonObj) { try { if (optionsJsonObj.has("addressDetail")) { this.addressDetail = optionsJsonObj.getString("addressDetail"); } if (optionsJsonObj.has("agencyReceiveDesc")) { this.agencyReceiveDesc = optionsJsonObj.getString("agencyReceiveDesc"); } if (optionsJsonObj.has("areaName")) { this.areaName = optionsJsonObj.getString("areaName"); } if (optionsJsonObj.has("cityName")) { this.cityName = optionsJsonObj.getString("cityName"); } if (optionsJsonObj.has("defaultAddress")) { this.defaultAddress = optionsJsonObj.getBoolean("defaultAddress"); } if (optionsJsonObj.has("deliveryAddressId")) { this.deliveryAddressId = optionsJsonObj.getString("deliveryAddressId"); } if (optionsJsonObj.has("divisionCode")) { this.divisionCode = optionsJsonObj.getString("divisionCode"); } if (optionsJsonObj.has("enableMDZT")) { this.enableMDZT = optionsJsonObj.getBoolean("enableMDZT"); } if (optionsJsonObj.has("enableStation")) { this.enableStation = optionsJsonObj.getBoolean("enableStation"); } if (optionsJsonObj.has("fullName")) { this.fullName = optionsJsonObj.getString("fullName"); } if (optionsJsonObj.has("mobile")) { this.mobile = optionsJsonObj.getString("mobile"); } if (optionsJsonObj.has("overseasTransportInfo")) { this.overseasTransportInfo = new OverseasTransportInfo(optionsJsonObj.getJSONObject("overseasTransportInfo")); } if (optionsJsonObj.has("postCode")) { this.postCode = optionsJsonObj.getString("postCode"); } if (optionsJsonObj.has("provinceName")) { this.provinceName = optionsJsonObj.getString("provinceName"); } if (optionsJsonObj.has("stationId")) { this.stationId = optionsJsonObj.getString("stationId"); } if (optionsJsonObj.has("tele")) { this.tele = optionsJsonObj.getString("tele"); } if (optionsJsonObj.has("townDivisionId")) { this.townDivisionId = optionsJsonObj.getString("townDivisionId"); } } catch (JSONException e) { e.printStackTrace(); } } public String getAddressDetail() { return addressDetail; } public void setAddressDetail(String addressDetail) { this.addressDetail = addressDetail; } public String getAgencyReceiveDesc() { return agencyReceiveDesc; } public void setAgencyReceiveDesc(String agencyReceiveDesc) { this.agencyReceiveDesc = agencyReceiveDesc; } public String getAreaName() { return areaName; } public void setAreaName(String areaName) { this.areaName = areaName; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; } public Boolean getDefaultAddress() { return defaultAddress; } public void setDefaultAddress(Boolean defaultAddress) { this.defaultAddress = defaultAddress; } public String getDeliveryAddressId() { return deliveryAddressId; } public void setDeliveryAddressId(String deliveryAddressId) { this.deliveryAddressId = deliveryAddressId; } public String getDivisionCode() { return divisionCode; } public void setDivisionCode(String divisionCode) { this.divisionCode = divisionCode; } public Boolean getEnableMDZT() { return enableMDZT; } public void setEnableMDZT(Boolean enableMDZT) { this.enableMDZT = enableMDZT; } public Boolean getEnableStation() { return enableStation; } public void setEnableStation(Boolean enableStation) { this.enableStation = enableStation; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public OverseasTransportInfo getOverseasTransportInfo() { return overseasTransportInfo; } public void setOverseasTransportInfo(OverseasTransportInfo overseasTransportInfo) { this.overseasTransportInfo = overseasTransportInfo; } public String getPostCode() { return postCode; } public void setPostCode(String postCode) { this.postCode = postCode; } public String getProvinceName() { return provinceName; } public void setProvinceName(String provinceName) { this.provinceName = provinceName; } public String getStationId() { return stationId; } public void setStationId(String stationId) { this.stationId = stationId; } public String getTele() { return tele; } public void setTele(String tele) { this.tele = tele; } public String getTownDivisionId() { return townDivisionId; } public void setTownDivisionId(String townDivisionId) { this.townDivisionId = townDivisionId; } } public class OverseasTransportInfo { private String overseasDivisionId; private String overseasUserAddrDivisionId; private Boolean supportOverseasTransport; public OverseasTransportInfo(JSONObject jsonObject) { try { if (jsonObject.has("overseasDivisionId")) { this.overseasDivisionId = jsonObject.getString("overseasDivisionId"); } if (jsonObject.has("overseasUserAddrDivisionId")) { this.overseasUserAddrDivisionId = jsonObject.getString("overseasUserAddrDivisionId"); } if (jsonObject.has("supportOverseasTransport")) { this.supportOverseasTransport = jsonObject.getBoolean("supportOverseasTransport"); } } catch (JSONException e) { } } public String getOverseasDivisionId() { return overseasDivisionId; } public void setOverseasDivisionId(String overseasDivisionId) { this.overseasDivisionId = overseasDivisionId; } public String getOverseasUserAddrDivisionId() { return overseasUserAddrDivisionId; } public void setOverseasUserAddrDivisionId(String overseasUserAddrDivisionId) { this.overseasUserAddrDivisionId = overseasUserAddrDivisionId; } public Boolean getSupportOverseasTransport() { return supportOverseasTransport; } public void setSupportOverseasTransport(Boolean supportOverseasTransport) { this.supportOverseasTransport = supportOverseasTransport; } } public String getId() { return id; } public void setId(String id) { this.id = id; } public Boolean getSubmit() { return submit; } public void setSubmit(Boolean submit) { this.submit = submit; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; } public String getType() { return type; } public void setType(String type) { this.type = type; } public AddressFields getFields() { return fields; } public void setFields(AddressFields fields) { this.fields = fields; } }