From 9c9de2e634878a2c7732dfa5f3cb4843bb552f91 Mon Sep 17 00:00:00 2001 From: Relyn Date: Thu, 22 Jun 2017 10:59:56 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=B6=88=E6=81=AF=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在SimpleDemo中实现对进群用户的欢迎消息。 --- .../java/cn/zhouyafeng/itchat4j/core/MsgCenter.java | 5 ++++- .../cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java | 10 ++++++++++ .../java/cn/zhouyafeng/itchat4j/utils/MsgCodeEnum.java | 2 +- .../zhouyafeng/itchat4j/utils/enums/MsgTypeEnum.java | 3 ++- .../cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java | 10 ++++++++++ .../cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java | 6 ++++++ .../zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java | 6 ++++++ 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java index 9e5895d..4a77aca 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java @@ -98,7 +98,7 @@ public static JSONArray produceMsg(JSONArray msgList) { // 微信初始化消息 } else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_SYS.getCode()) {// 系统消息 - + m.put("Type", MsgTypeEnum.SYS.getType()); } else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_RECALLED.getCode()) { // 撤回消息 } else { @@ -139,6 +139,9 @@ 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())) { + String result = msgHandler.sysMsgHandle(msg); + MessageTools.sendMsgById(result, core.getMsgList().get(0).getString("FromUserName")); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java b/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java index c976fc2..4e521ae 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java @@ -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 String sysMsgHandle(JSONObject msg); + } diff --git a/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgCodeEnum.java b/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgCodeEnum.java index 5e79710..8654169 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgCodeEnum.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgCodeEnum.java @@ -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, "") ; diff --git a/src/main/java/cn/zhouyafeng/itchat4j/utils/enums/MsgTypeEnum.java b/src/main/java/cn/zhouyafeng/itchat4j/utils/enums/MsgTypeEnum.java index 82caca5..7e42e10 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/utils/enums/MsgTypeEnum.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/utils/enums/MsgTypeEnum.java @@ -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; diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java index 9a15488..d9b3778 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java @@ -80,4 +80,14 @@ public String nameCardMsgHandle(JSONObject msg) { return "收到名片消息"; } + @Override + public String sysMsgHandle(JSONObject msg) { + // TODO Auto-generated method stub + String text = msg.getString("Content"); + LOG.info(text); + String[] tmp = text.split("\""); + String answer = "欢迎" + tmp[3] + "!"; + return answer; + } + } diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java index 55866a8..060a7eb 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java @@ -90,4 +90,10 @@ public String nameCardMsgHandle(JSONObject msg) { return null; } + @Override + public String sysMsgHandle(JSONObject msg) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java index 725335f..e43ab7d 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java @@ -68,4 +68,10 @@ public static void main(String[] args) { wechat.start(); } + @Override + public String sysMsgHandle(JSONObject msg) { + // TODO Auto-generated method stub + return null; + } + } From 8b646d30d4d94c8b744a56a49e4b2b66e47b0cb1 Mon Sep 17 00:00:00 2001 From: JR <624397346@qq.com> Date: Thu, 22 Jun 2017 16:05:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E4=B8=BB=E5=8A=A8=E6=96=B0=E5=A2=9E=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E7=89=88=E5=90=8C=E6=AD=A5=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhouyafeng/itchat4j/core/MsgCenter.java | 11 +++++++-- .../service/impl/LoginServiceImpl.java | 23 ++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java index 9e5895d..c546860 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java @@ -125,8 +125,15 @@ 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"); + if (text.contains("我通过了你的朋友验证请求,现在我们可以开始聊天了")) { + 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")); diff --git a/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java b/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java index b690056..9cdb97a 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java @@ -276,8 +276,29 @@ 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(); From f1dec0078ecbd7edc2b69fa644ade828f0693746 Mon Sep 17 00:00:00 2001 From: yaphone Date: Thu, 22 Jun 2017 23:13:01 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhouyafeng/itchat4j/core/MsgCenter.java | 50 ++++++++++--------- .../itchat4j/face/IMsgHandlerFace.java | 2 +- .../service/impl/LoginServiceImpl.java | 9 ++-- .../itchat4j/utils/MsgKeywords.java | 6 +++ .../itchat4j/demo/demo1/SimpleDemo.java | 6 +-- 5 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 src/main/java/cn/zhouyafeng/itchat4j/utils/MsgKeywords.java diff --git a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java index 3e4ff1f..5d9bfc4 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java @@ -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; @@ -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")); @@ -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").equals(MsgCodeEnum.MSGTYPE_SYS.getCode())) {// 系统消息 m.put("Type", MsgTypeEnum.SYS.getType()); - } else if (m.getInteger("MsgType") == MsgCodeEnum.MSGTYPE_RECALLED.getCode()) { // 撤回消息 + } else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_RECALLED.getCode())) { // 撤回消息 } else { LOG.info("Useless msg"); @@ -125,14 +126,16 @@ public static void handleMsg(IMsgHandlerFace msgHandler) { if (msg.getString("Type") != null) { try { if (msg.getString("Type").equals(MsgTypeEnum.TEXT.getType())) { - //存在主动加好友之后的同步联系人到本地 + // 存在主动加好友之后的同步联系人到本地 String text = msg.getString("Text"); - if (text.contains("我通过了你的朋友验证请求,现在我们可以开始聊天了")) { + System.out.println(text); + if (text.contains(MsgKeywords.newFriendStr)) { JSONObject userInfo = msg.getJSONObject("userInfo"); core.getContactList().add(userInfo); - }else { + } else { String result = msgHandler.textMsgHandle(msg); - MessageTools.sendMsgById(result, core.getMsgList().get(0).getString("FromUserName")); + MessageTools.sendMsgById(result, + core.getMsgList().get(0).getString("FromUserName")); } } else if (msg.getString("Type").equals(MsgTypeEnum.PIC.getType())) { String result = msgHandler.picMsgHandle(msg); @@ -146,9 +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())) { - String result = msgHandler.sysMsgHandle(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(); diff --git a/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java b/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java index 4e521ae..9eaa7d8 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/face/IMsgHandlerFace.java @@ -68,6 +68,6 @@ public interface IMsgHandlerFace { * @param msg * @return */ - public String sysMsgHandle(JSONObject msg); + public void sysMsgHandle(JSONObject msg); } diff --git a/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java b/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java index 9cdb97a..b87a262 100644 --- a/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java +++ b/src/main/java/cn/zhouyafeng/itchat4j/service/impl/LoginServiceImpl.java @@ -278,21 +278,18 @@ public void run() { continue; } else if (selector.equals("3")) { continue; - }else if (selector.equals("6")) { + } else if (selector.equals("6")) { if (msgObj != null) { try { JSONArray msgList = new JSONArray(); msgList = msgObj.getJSONArray("AddMsgList"); - JSONArray modContactList = msgObj.getJSONArray("ModContactList"); //存有删除或者新增的好友信息 + 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); - + msg.put("userInfo", userInfo); core.getMsgList().add(msg); - } } catch (Exception e) { LOG.info(e.getMessage()); diff --git a/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgKeywords.java b/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgKeywords.java new file mode 100644 index 0000000..5218a7b --- /dev/null +++ b/src/main/java/cn/zhouyafeng/itchat4j/utils/MsgKeywords.java @@ -0,0 +1,6 @@ +package cn.zhouyafeng.itchat4j.utils; + +public class MsgKeywords { + public static String newFriendStr = "我通过了你的朋友验证请求"; + +} diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java index d9b3778..ade42c4 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo1/SimpleDemo.java @@ -81,13 +81,9 @@ public String nameCardMsgHandle(JSONObject msg) { } @Override - public String sysMsgHandle(JSONObject msg) { - // TODO Auto-generated method stub + public void sysMsgHandle(JSONObject msg) { // 收到系统消息 String text = msg.getString("Content"); LOG.info(text); - String[] tmp = text.split("\""); - String answer = "欢迎" + tmp[3] + "!"; - return answer; } } From a9581d96dec89ea38bf6871d78327a2b1662e8a8 Mon Sep 17 00:00:00 2001 From: yaphone Date: Thu, 22 Jun 2017 23:15:54 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java | 3 +-- .../java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java index 060a7eb..275693f 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo2/TulingRobot.java @@ -91,9 +91,8 @@ public String nameCardMsgHandle(JSONObject msg) { } @Override - public String sysMsgHandle(JSONObject msg) { + public void sysMsgHandle(JSONObject msg) { // TODO Auto-generated method stub - return null; } } diff --git a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java index e43ab7d..1ead470 100644 --- a/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java +++ b/src/test/java/cn/zhouyafeng/itchat4j/demo/demo3/UnusefulDemo.java @@ -69,9 +69,8 @@ public static void main(String[] args) { } @Override - public String sysMsgHandle(JSONObject msg) { + public void sysMsgHandle(JSONObject msg) { // TODO Auto-generated method stub - return null; } }