/** {@inheritDoc} */ public override void onHttpStatusOK(QQHttpResponse response) { // {"retcode":0,"result":{"gmasklist":[{"gid":1000,"mask":0},{"gid":1638195794,"mask":0},{"gid":321105219,"mask":0}], // "gnamelist":[{"flag":16777217,"name":"iQQ","gid":1638195794,"code":2357062609},{"flag":1048577,"name":"iQQ核心开发区","gid":321105219,"code":640215156}],"gmarklist":[]}} QQStore store = getContext().getStore(); JSONObject json = new JSONObject(response.getResponseString()); int retcode = json.getInt("retcode"); if (retcode == 0) { // 处理好友列表 JSONObject results = json.getJSONObject("result"); JSONArray groupJsonList = results.getJSONArray("gnamelist"); // 群列表 JSONArray groupMaskJsonList = results.getJSONArray("gmasklist"); //禁止接收群消息标志:正常 0, 接收不提醒 1, 完全屏蔽 2 for (int i = 0; i < groupJsonList.length(); i++) { JSONObject groupJson = groupJsonList.getJSONObject(i); QQGroup group = new QQGroup(); group.setGin(groupJson.getLong("gid")); group.setCode(groupJson.getLong("code")); group.setFlag(groupJson.getInt("flag")); group.setName(groupJson.getString("name")); //添加到Store store.addGroup(group); } for (int i = 0; i < groupMaskJsonList.length(); i++) { JSONObject maskObj = groupMaskJsonList.getJSONObject(i); long gid = maskObj.getLong("gid"); int mask = maskObj.getInt("mask"); QQGroup group = store.getGroupByGin(gid); if (group != null) { group.setMask(mask); } } notifyActionEvent(QQActionEvent.Type.EVT_OK, store.getGroupList()); } else { notifyActionEvent(QQActionEvent.Type.EVT_ERROR, null); } }
/** * <p> * processGroupMsg. * </p> * * @param pollData * a {@link org.json.JSONObject} object. * @throws org.json.JSONException * if any. * @throws iqq.im.QQException * if any. * @return a {@link iqq.im.event.QQNotifyEvent} object. */ public QQNotifyEvent processGroupMsg(JSONObject pollData) { // {"retcode"in0,"result"in[{"poll_type"in"group_message", // "value"in{"msg_id"in6175,"from_uin"in3924684389,"to_uin"in1070772010,"msg_id2"in992858,"msg_type"in43,"reply_ip"in176621921, // "group_code"in3439321257,"send_uin"in1843694270,"seq"in875,"time"in1365934781,"info_seq"in170125666,"content"in[["font",{"size"in10,"color"in"3b3b3b","style"in[0,0,0],"name"in"\u5FAE\u8F6F\u96C5\u9ED1"}],"eeeeeeeee "]}}]} QQStore store = getContext().getStore(); QQMsg msg = new QQMsg(); msg.setId(pollData.getLong("msg_id")); msg.setId2(pollData.getLong("msg_id2")); int msgType = pollData.getInt("msg_type"); long gin = pollData.getLong("from_uin"); long fromUin = pollData.getLong("send_uin"); long groupCode = pollData.getLong("group_code"); QQGroup group = store.getGroupByCode(groupCode); long groupID = -1; if (group == null) { group = new QQGroup(); group.setGin(gin); group.setCode(groupCode); // put to store store.addGroup(group); } switch (msgType) { case 32: { // 魔法、超级、涂鸦表情 groupID = pollData.getLong("t_gcode"); // 真实群号码 break; } case 43: // 一般消息 groupID = pollData.getLong("info_seq"); // 真实群号码 msg.parseContentList(pollData.getJSONArray("content").ToString()); msg.setType(QQMsg.Type.GROUP_MSG); msg.setDate(new DateTime(pollData.getLong("time") * 1000)); break; default: break; } if (group.getGid() <= 0) { group.setGid(groupID); } msg.setGroup(group); if (group != null) { msg.setFrom(group.getMemberByUin(fromUin)); } msg.setTo(getContext().getAccount()); if (msg.getFrom() == null) { QQGroupMember member = new QQGroupMember(); member.setUin(fromUin); msg.setFrom(member); if (group != null) { group.getMembers().Add(member); } } return(new QQNotifyEvent(QQNotifyEvent.Type.CHAT_MSG, msg)); }