package org.nutz.weixin.spi; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.weixin.WxException; import org.nutz.weixin.bean.WxGroup; import org.nutz.weixin.bean.WxMenu; import org.nutz.weixin.bean.WxUser; /** * * @author wendal(wendal1985@gmail.com) * */ @SuppressWarnings({"rawtypes", "unchecked"}) public class WxResp extends NutMap { private static final long serialVersionUID = -1; public boolean ok() { return errcode() == 0; } public WxResp check() { if (!ok()) throw new WxException("errcode=" + errcode() + ", " + this); return this; } public int errcode() { return getInt("errcode", 0); } public String errmsg() { return getString("errmsg"); } public String msg_id() { return getString("msg_id"); } public String msg_status() { return getString("msg_status"); } public String type() { return getString("type"); } public int created_at() { return getInt("created_at", 0); } public Date created_at_date() { return new Date(created_at()); } //-------------------------------------- // 各种帮助方法 public WxGroup group() { Map map = getAs("group", Map.class); if (map == null) return null; return Lang.map2Object(map, WxGroup.class); } public List<WxGroup> groups() { List<Map<String, Object>> list = getAs("groups", List.class); List<WxGroup> groups = new ArrayList<WxGroup>(); for (Map<String, Object> e : list) { groups.add(Lang.map2Object(e, WxGroup.class)); } return groups; } public WxUser user() { return Lang.map2Object(this, WxUser.class); } public List<WxMenu> menu() { List<WxMenu> list = new ArrayList<WxMenu>(); return list; } public String media_id() { return getString("media_id"); } public String template_id() { return getString("template_id"); } public String msgid() { return getString("msgid"); } public <T> List<T> getTo(String key, Class<T> klass) { List<Object> tmp = getList(key, Object.class); if (tmp == null) return null; List<T> list = new ArrayList<T>(); for (Object obj : tmp) { if (obj instanceof Map) { list.add(Lang.map2Object((Map)obj, klass)); } } return list; } }