Skip to content

Commit

Permalink
Merge branch 'master' into itchat4j-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
yaphone committed Jun 26, 2017
2 parents 5112e9e + a9581d9 commit 7dd2c08
Show file tree
Hide file tree
Showing 9 changed files with 86 additions and 23 deletions.
52 changes: 32 additions & 20 deletions src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import cn.zhouyafeng.itchat4j.api.MessageTools;
import cn.zhouyafeng.itchat4j.face.IMsgHandlerFace;
import cn.zhouyafeng.itchat4j.utils.MsgCodeEnum;
import cn.zhouyafeng.itchat4j.utils.MsgKeywords;
import cn.zhouyafeng.itchat4j.utils.enums.MsgTypeEnum;
import cn.zhouyafeng.itchat4j.utils.tools.CommonTools;

Expand Down Expand Up @@ -59,8 +60,8 @@ public static JSONArray produceMsg(JSONArray msgList) {
} else {
CommonTools.msgFormatter(m, "Content");
}
if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_TEXT.getCode()) { // words
// 文本消息
if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_TEXT.getCode())) { // words
// 文本消息
if (m.getString("Url").length() != 0) {
String regEx = "(.+?\\(.+?\\))";
Matcher matcher = CommonTools.getMatcher(regEx, m.getString("Content"));
Expand All @@ -76,30 +77,30 @@ public static JSONArray produceMsg(JSONArray msgList) {
}
m.put("Type", msg.getString("Type"));
m.put("Text", msg.getString("Text"));
} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_IMAGE.getCode()
|| m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_EMOTICON.getCode()) { // 图片消息
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_IMAGE.getCode())
|| m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_EMOTICON.getCode())) { // 图片消息
m.put("Type", MsgTypeEnum.PIC.getType());
} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_VOICE.getCode()) { // 语音消息
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_VOICE.getCode())) { // 语音消息
m.put("Type", MsgTypeEnum.VOICE.getType());
} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_VERIFYMSG.getCode()) {// friends
// 好友确认消息
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_VERIFYMSG.getCode())) {// friends
// 好友确认消息

} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_SHARECARD.getCode()) { // 共享名片
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_SHARECARD.getCode())) { // 共享名片
m.put("Type", MsgTypeEnum.NAMECARD.getType());

} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_VIDEO.getCode()
|| m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_MICROVIDEO.getCode()) {// viedo
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_VIDEO.getCode())
|| m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_MICROVIDEO.getCode())) {// viedo
m.put("Type", MsgTypeEnum.VIEDO.getType());
} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_APP.getCode()) { // sharing
// 分享链接
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_APP.getCode())) { // sharing
// 分享链接

} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_STATUSNOTIFY.getCode()) {// phone
// init
// 微信初始化消息
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_STATUSNOTIFY.getCode())) {// phone
// init
// 微信初始化消息

} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_SYS.getCode()) {// 系统消息

} else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_RECALLED.getCode()) { // 撤回消息
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_SYS.getCode())) {// 系统消息
m.put("Type", MsgTypeEnum.SYS.getType());
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_RECALLED.getCode())) { // 撤回消息

} else {
LOG.info("Useless msg");
Expand All @@ -125,8 +126,17 @@ public static void handleMsg(IMsgHandlerFace msgHandler) {
if (msg.getString("Type") != null) {
try {
if (msg.getString("Type").equals(MsgTypeEnum.TEXT.getType())) {
String result = msgHandler.textMsgHandle(msg);
MessageTools.sendMsgById(result, core.getMsgList().get(0).getString("FromUserName"));
// 存在主动加好友之后的同步联系人到本地
String text = msg.getString("Text");
System.out.println(text);
if (text.contains(MsgKeywords.newFriendStr)) {
JSONObject userInfo = msg.getJSONObject("userInfo");
core.getContactList().add(userInfo);
} else {
String result = msgHandler.textMsgHandle(msg);
MessageTools.sendMsgById(result,
core.getMsgList().get(0).getString("FromUserName"));
}
} else if (msg.getString("Type").equals(MsgTypeEnum.PIC.getType())) {
String result = msgHandler.picMsgHandle(msg);
MessageTools.sendMsgById(result, core.getMsgList().get(0).getString("FromUserName"));
Expand All @@ -139,6 +149,8 @@ public static void handleMsg(IMsgHandlerFace msgHandler) {
} else if (msg.getString("Type").equals(MsgTypeEnum.NAMECARD.getType())) {
String result = msgHandler.nameCardMsgHandle(msg);
MessageTools.sendMsgById(result, core.getMsgList().get(0).getString("FromUserName"));
} else if (msg.getString("Type").equals(MsgTypeEnum.SYS.getType())) { // 系统消息
msgHandler.sysMsgHandle(msg);
}
} catch (Exception e) {
e.printStackTrace();
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,14 @@ public interface IMsgHandlerFace {
*/
public String nameCardMsgHandle(JSONObject msg);

/**
* 处理系统消息
*
* @author Relyn
* @date 2017年6月21日17:43:51
* @param msg
* @return
*/
public void sysMsgHandle(JSONObject msg);

}
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,26 @@ public void run() {
webWxSync();
} else if (selector.equals("4")) {
continue;
} else if (selector.equals("3") || selector.equals("6")) {
} else if (selector.equals("3")) {
continue;
} else if (selector.equals("6")) {
if (msgObj != null) {
try {
JSONArray msgList = new JSONArray();
msgList = msgObj.getJSONArray("AddMsgList");
JSONArray modContactList = msgObj.getJSONArray("ModContactList"); // 存有删除或者新增的好友信息
msgList = MsgCenter.produceMsg(msgList);
for (int j = 0; j < msgList.size(); j++) {
JSONObject msg = msgList.getJSONObject(j);
JSONObject userInfo = modContactList.getJSONObject(j);
msg.put("userInfo", userInfo);
core.getMsgList().add(msg);
}
} catch (Exception e) {
LOG.info(e.getMessage());
}
}

}
} else {
JSONObject obj = webWxSync();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public enum MsgCodeEnum {
MSGTYPE_POSSIBLEFRIEND_MSG(40, ""),
MSGTYPE_VERIFYMSG(37, ""),
MSGTYPE_SHARECARD(42, ""),
MSGTYPE_SYS(10000, ""),
MSGTYPE_SYS(10000, "系统消息"),
MSGTYPE_RECALLED(10002, "")

;
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/cn/zhouyafeng/itchat4j/utils/MsgKeywords.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package cn.zhouyafeng.itchat4j.utils;

public class MsgKeywords {
public static String newFriendStr = "我通过了你的朋友验证请求";

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public enum MsgTypeEnum {
PIC("Pic", "图片消息"),
VOICE("Voice", "语音消息"),
VIEDO("Viedo", "小视频消息"),
NAMECARD("NameCard", "名片消息");
NAMECARD("NameCard", "名片消息"),
SYS("Sys", "系统消息");

private String type;
private String code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,10 @@ public String nameCardMsgHandle(JSONObject msg) {
return "收到名片消息";
}

@Override
public void sysMsgHandle(JSONObject msg) { // 收到系统消息
String text = msg.getString("Content");
LOG.info(text);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,9 @@ public String nameCardMsgHandle(JSONObject msg) {
return null;
}

@Override
public void sysMsgHandle(JSONObject msg) {
// TODO Auto-generated method stub
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,9 @@ public static void main(String[] args) {
wechat.start();
}

@Override
public void sysMsgHandle(JSONObject msg) {
// TODO Auto-generated method stub
}

}

0 comments on commit 7dd2c08

Please sign in to comment.