package com.letv.watchball.parser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.text.TextUtils; import com.letv.http.parse.LetvMainParser; import com.letv.watchball.bean.User; import com.letv.watchball.bean.User.VipInfo; /** * 用户信息解析 * */ public class UserParser extends LetvMainParser<User, JSONObject> { /** * 接口返回数据节点 * */ protected final String ERRORCODE = "errorCode"; protected final String MESSAGE = "message"; protected final String BEAN = "bean"; private final String UID = "uid"; private final String USERNAME = "username"; private final String STATUS = "status"; private final String GENDER = "gender"; private final String QQ = "qq"; private final String REGISTIP = "registIp"; private final String REGISTTIME = "registTime"; private final String LASTMODIFYTIME = "lastModifyTime"; private final String BIRTHDAY = "birthday"; private final String NICKNAME = "nickname"; private final String MSN = "msn"; private final String REGISTSERVICE = "registService"; private final String EMAIL = "email"; private final String MOBILE = "mobile"; private final String PROVINCE = "province"; private final String CITY = "city"; private final String POSTCODE = "postCode"; private final String ADDRESS = "address"; private final String MAC = "mac"; private final String PICTURE = "picture"; private final String NAME = "name"; private final String CONTACTEMAIL = "contactEmail"; private final String DELIVERY = "delivery"; private final String POINT = "point"; private final String LEVEL_ID = "level_id"; private final String ISVIP = "isvip"; private final String EDUCATION = "education"; private final String INDUSTRY = "industry"; private final String JOB = "job"; private final String INCOME = "income"; private final String LASTLOGINTIME = "lastLoginTime"; private final String LASTLOGINIP = "lastLoginIp"; private final String VIPINFO = "vipinfo"; private final String TV_TOKEN = "tv_token"; private String tv_token; @Override public User parse(JSONObject data) throws JSONException { User letvUser = new User(); letvUser.setUid(getString(data, UID)); letvUser.setUsername(getString(data, USERNAME)); letvUser.setStatus(getString(data, STATUS)); letvUser.setGender(getString(data, GENDER)); letvUser.setQq(getString(data, QQ)); letvUser.setRegistIp(getString(data, REGISTIP)); letvUser.setRegistTime(getString(data, REGISTTIME)); letvUser.setLastModifyTime(getString(data, LASTMODIFYTIME)); letvUser.setBirthday(getString(data, BIRTHDAY)); letvUser.setNickname(getString(data, NICKNAME)); letvUser.setMsn(getString(data, MSN)); letvUser.setRegistService(getString(data, REGISTSERVICE)); letvUser.setEmail(getString(data, EMAIL)); letvUser.setMobile(getString(data, MOBILE)); letvUser.setProvince(getString(data, PROVINCE)); letvUser.setCity(getString(data, CITY)); letvUser.setPostCode(getString(data, POSTCODE)); letvUser.setAddress(getString(data, ADDRESS)); letvUser.setMac(getString(data, MAC)); letvUser.setName(getString(data, NAME)); letvUser.setContactEmail(getString(data, CONTACTEMAIL)); letvUser.setDelivery(getString(data, DELIVERY)); letvUser.setPoint(getString(data, POINT)); letvUser.setLevel_id(getString(data, LEVEL_ID)); letvUser.setIsvip(getString(data, ISVIP)); letvUser.setEducation(getString(data, EDUCATION)); letvUser.setIndustry(getString(data, INDUSTRY)); letvUser.setJob(getString(data, JOB)); letvUser.setIncome(getString(data, INCOME)); letvUser.setLastLoginTime(getString(data, LASTLOGINTIME)); letvUser.setLastLoginIp(getString(data, LASTLOGINIP)); if (!TextUtils.isEmpty(tv_token)) { letvUser.setTv_token(tv_token); } if (has(data, VIPINFO)) { JSONArray array = getJSONArray(data, VIPINFO); if (array != null && array.length() > 0) { JSONObject object = getJSONObject(array, 0); VipInfo info = new VipInfo(); info.setId(getString(object, "id")); info.setUsername(getString(object, "username")); info.setCanceltime(getLong(object, "canceltime")); info.setOrderFrom(getInt(object, "orderFrom")); info.setProductid(getInt(object, "productid")); info.setVipType(getInt(object, "vipType")); letvUser.setVipInfo(info); } } // if (User.ISVIP_YES.equals(letvUser.getIsvip())) { // PreferencesManager.getInstance().setVip(true); // if (letvUser.getVipInfo() != null) { // PreferencesManager.getInstance().setVipCancelTime(letvUser.getVipInfo().getCanceltime()); // PreferencesManager.getInstance().setVipLevel(letvUser.getVipInfo().getVipType()); // } // } else { // PreferencesManager.getInstance().setVip(false); // PreferencesManager.getInstance().setVipCancelTime(0); // PreferencesManager.getInstance().setVipLevel(0); // } /** * 用户头像url解析,所有分辨率的头像,通过string拼接返回 各分辨率之间“,”隔开,目前使用的头像分辨率:200x200 */ String pictures = getString(data, PICTURE); if (!TextUtils.isEmpty(pictures)) { String[] splits = pictures.split(","); letvUser.setPicture(splits[1]); } return letvUser; } @Override protected boolean canParse(String data) { try { JSONObject object = new JSONObject(data); if (!object.has(STATUS)) { return false; } int status = object.getInt(STATUS); int errorCode = object.optInt(ERRORCODE); String message = object.optString(MESSAGE); setMessage(message); if (status == 1 && errorCode == 0) { if (has(object, TV_TOKEN)) { tv_token = getString(object, TV_TOKEN); } return true; } else { setErrorMsg(errorCode); } } catch (JSONException e) { e.printStackTrace(); } return false; } @Override protected JSONObject getData(String data) throws Exception { JSONObject object = new JSONObject(data); object = getJSONObject(object, BEAN); return object; } /** * 得到错误信息 * */ // private int createErrorMsg(int code) { // int errString ; // switch (code) { // case 403: // errString = R.string.err_403 ; // break; // case 500: // errString = R.string.err_500 ; // break; // case 1000: // errString = R.string.err_1000 ; // break; // case 1001: // errString = R.string.err_1001 ; // break; // case 1002: // errString = R.string.err_1002 ; // break; // case 1003: // errString = R.string.err_1003 ; // break; // case 1004: // errString = R.string.err_1004 ; // break; // case 1005: // errString = R.string.err_1005 ; // break; // case 1006: // errString = R.string.err_1006 ; // break; // case 1007: // errString = R.string.err_1007 ; // break; // case 1008: // errString = R.string.err_1008 ; // break; // case 1009: // errString = R.string.err_1009 ; // break; // case 1010: // errString = R.string.err_1010 ; // break; // case 1011: // errString = R.string.err_1011 ; // break; // case 1012: // errString = R.string.err_1012 ; // break; // case 1013: // errString = R.string.err_1013 ; // break; // case 1014: // errString = R.string.err_1014 ; // break; // case 1015: // errString = R.string.err_1015 ; // break; // case 1016: // errString = R.string.err_1016 ; // break; // default: // errString = R.string.err_default ; // break; // } // return errString ; // } }