From 217b7fe63279148672a93958304963eb9bf3e370 Mon Sep 17 00:00:00 2001 From: chandler <1915724901@qq.com> Date: Sun, 6 Oct 2024 17:57:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(0):=20[java]-[wechat-ferry-mvn]-1.?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89=E8=81=94=E7=B3=BB=E4=BA=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=202.=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=85=A5=E5=8F=82=E5=AD=97=E6=AE=B5=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ferry/controller/WeChatDllController.java | 42 +++++++--- .../vo/request/WxPpPatOnePatMsgReq.java | 31 +++++++ .../entity/vo/request/WxPpSendCardMsgReq.java | 43 ---------- .../vo/request/WxPpSendEmojiMsgReq.java | 6 +- .../entity/vo/request/WxPpSendFileMsgReq.java | 6 +- .../vo/request/WxPpSendImageMsgReq.java | 8 +- .../vo/request/WxPpSendRichTextMsgReq.java | 61 ++++++++++++++ .../entity/vo/request/WxPpSendTextMsgReq.java | 1 + .../entity/vo/request/WxPpSendXmlMsgReq.java | 43 ++++++++++ .../vo/response/WxPpSendPatOnePatMsgResp.java | 29 +++++++ .../vo/response/WxPpSendRichTextMsgResp.java | 29 +++++++ ...rdMsgResp.java => WxPpSendXmlMsgResp.java} | 6 +- .../ferry/enums/WxContactsTypeEnum.java | 9 ++- .../ferry/service/WeChatDllService.java | 34 +++++++- .../service/impl/WeChatDllServiceImpl.java | 80 +++++++++++++++++-- .../service/impl/WeChatMsgServiceImpl.java | 18 ----- 16 files changed, 348 insertions(+), 98 deletions(-) create mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpPatOnePatMsgReq.java delete mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendCardMsgReq.java create mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendRichTextMsgReq.java create mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendXmlMsgReq.java create mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendPatOnePatMsgResp.java create mode 100644 clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendRichTextMsgResp.java rename clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/{WxPpSendCardMsgResp.java => WxPpSendXmlMsgResp.java} (82%) diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/controller/WeChatDllController.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/controller/WeChatDllController.java index 17ea687..291807b 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/controller/WeChatDllController.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/controller/WeChatDllController.java @@ -13,21 +13,25 @@ import com.wechat.ferry.entity.TResponse; import com.wechat.ferry.entity.vo.request.WxPpDatabaseSqlReq; import com.wechat.ferry.entity.vo.request.WxPpDatabaseTableReq; import com.wechat.ferry.entity.vo.request.WxPpGroupMemberReq; -import com.wechat.ferry.entity.vo.request.WxPpSendCardMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpPatOnePatMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendEmojiMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendFileMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendImageMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendRichTextMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendTextMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendXmlMsgReq; import com.wechat.ferry.entity.vo.response.WxPpContactsResp; import com.wechat.ferry.entity.vo.response.WxPpDatabaseRowResp; import com.wechat.ferry.entity.vo.response.WxPpGroupMemberResp; import com.wechat.ferry.entity.vo.response.WxPpLoginInfoResp; import com.wechat.ferry.entity.vo.response.WxPpMsgTypeResp; -import com.wechat.ferry.entity.vo.response.WxPpSendCardMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendEmojiMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendFileMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendImageMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendPatOnePatMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendRichTextMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendTextMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendXmlMsgResp; import com.wechat.ferry.enums.ResponseCodeEnum; import com.wechat.ferry.service.WeChatDllService; @@ -151,10 +155,10 @@ public class WeChatDllController { return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); } - @ApiOperation(value = "发送卡片消息", notes = "sendCardMsg") - @PostMapping(value = "/send/cardMsg") - public TResponse sendCardMsg(@Validated @RequestBody WxPpSendCardMsgReq request) { - WxPpSendCardMsgResp resp = weChatDllService.sendCardMsg(request); + @ApiOperation(value = "发送XML消息", notes = "sendXmlMsg") + @PostMapping(value = "/send/xmlMsg") + public TResponse sendXmlMsg(@Validated @RequestBody WxPpSendXmlMsgReq request) { + WxPpSendXmlMsgResp resp = weChatDllService.sendXmlMsg(request); return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); } @@ -165,7 +169,21 @@ public class WeChatDllController { return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); } - // @ApiOperation(value = "拍一拍群友", notes = "queryMsgTypeList") + @ApiOperation(value = "发送富文本消息", notes = "sendRichTextMsg") + @PostMapping(value = "/send/richTextMsg") + public TResponse sendRichTextMsg(@Validated @RequestBody WxPpSendRichTextMsgReq request) { + WxPpSendRichTextMsgResp resp = weChatDllService.sendRichTextMsg(request); + return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); + } + + @ApiOperation(value = "拍一拍群友", notes = "patOnePat") + @PostMapping(value = "/patOnePat") + public TResponse patOnePat(@Validated @RequestBody WxPpPatOnePatMsgReq request) { + WxPpSendPatOnePatMsgResp resp = weChatDllService.patOnePat(request); + return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); + } + + // @ApiOperation(value = "撤回消息", notes = "queryMsgTypeList") // @PostMapping(value = "/list/msgType") // public TResponse queryMsgTypeList() { // return TResponse.ok(ResponseCodeEnum.SUCCESS, list); @@ -189,12 +207,14 @@ public class WeChatDllController { // return TResponse.ok(ResponseCodeEnum.SUCCESS, list); // } // - // @ApiOperation(value = "查询数据库", notes = "queryMsgTypeList") + + // @ApiOperation(value = "通过好友申请", notes = "queryMsgTypeList") // @PostMapping(value = "/list/msgType") - // public TResponse queryMsgTypeList() { - // return TResponse.ok(ResponseCodeEnum.SUCCESS, list); + // public TResponse friendApply(@Validated @RequestBody WxPpPatOnePatMsgReq request) { + // // WxPpSendPatOnePatMsgResp resp = weChatDllService.patOnePat(request); + // return TResponse.ok(ResponseCodeEnum.SUCCESS, resp); // } - // + // @ApiOperation(value = "获取朋友圈消息", notes = "queryMsgTypeList") // @PostMapping(value = "/list/msgType") // public TResponse queryMsgTypeList() { diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpPatOnePatMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpPatOnePatMsgReq.java new file mode 100644 index 0000000..83cd6a8 --- /dev/null +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpPatOnePatMsgReq.java @@ -0,0 +1,31 @@ +package com.wechat.ferry.entity.vo.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请求入参-个微发送拍一拍消息 + * + * @author chandler + * @date 2024-10-06 15:50 + */ +@Data +@ApiModel(value = "wxPpPatOnePatMsgReq", description = "个微发送拍一拍消息请求入参") +public class WxPpPatOnePatMsgReq { + + /** + * 消息接收人 + * 消息接收人,私聊为 wxid(wxid_xxxxxxxxxxxxxx) + * 群聊为 roomid(xxxxxxxxxx@chatroom) + */ + @ApiModelProperty(value = "消息接收人") + private String recipient; + + /** + * 要拍的wxid + */ + @ApiModelProperty(value = "要拍的wxid") + private String patUser; + +} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendCardMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendCardMsgReq.java deleted file mode 100644 index a48446b..0000000 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendCardMsgReq.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.wechat.ferry.entity.vo.request; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 请求入参-个微发送卡片消息 - * - * @author chandler - * @date 2024-10-04 23:11 - */ -@Data -@ApiModel(value = "wxPpSendCardMsgReq", description = "个微发送卡片消息请求入参") -public class WxPpSendCardMsgReq { - - /** - * 消息接收人 - * 消息接收人,私聊为 wxid(wxid_xxxxxxxxxxxxxx) - * 群聊为 roomid(xxxxxxxxxx@chatroom) - */ - @ApiModelProperty(value = "消息接收人") - private String recipient; - - /** - * XML报文 - */ - @ApiModelProperty(value = "XML报文") - private String xml; - - /** - * 路径 - */ - @ApiModelProperty(value = "路径") - private String path; - - /** - * 类型 - */ - @ApiModelProperty(value = "类型") - private Integer type; - -} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendEmojiMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendEmojiMsgReq.java index 1e05dd7..e3e6121 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendEmojiMsgReq.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendEmojiMsgReq.java @@ -15,10 +15,10 @@ import lombok.Data; public class WxPpSendEmojiMsgReq { /** - * 路径 + * 资源路径-本地表情路径 */ - @ApiModelProperty(value = "路径") - private String path; + @ApiModelProperty(value = "资源路径-本地表情路径") + private String resourcePath; /** * 消息接收人 diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendFileMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendFileMsgReq.java index ffd622c..cb624a2 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendFileMsgReq.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendFileMsgReq.java @@ -15,10 +15,10 @@ import lombok.Data; public class WxPpSendFileMsgReq { /** - * 图片地址 + * 资源路径-本地文件路径 */ - @ApiModelProperty(value = "图片地址") - private String path; + @ApiModelProperty(value = "资源路径-本地文件路径") + private String resourcePath; /** * 消息接收人 diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendImageMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendImageMsgReq.java index 2d2ad45..07d8b0b 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendImageMsgReq.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendImageMsgReq.java @@ -15,10 +15,12 @@ import lombok.Data; public class WxPpSendImageMsgReq { /** - * 图片地址 + * 资源路径-本地图片地址 + * 如:`C:/Projs/WeChatRobot/TEQuant.jpeg` + * 或 `https://raw.githubusercontent.com/lich0821/WeChatFerry/master/assets/TEQuant.jpg` */ - @ApiModelProperty(value = "图片地址") - private String path; + @ApiModelProperty(value = "资源路径-本地图片地址") + private String resourcePath; /** * 消息接收人 diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendRichTextMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendRichTextMsgReq.java new file mode 100644 index 0000000..9c55f4f --- /dev/null +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendRichTextMsgReq.java @@ -0,0 +1,61 @@ +package com.wechat.ferry.entity.vo.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请求入参-个微发送富文本消息 + * + * @author chandler + * @date 2024-10-06 15:40 + */ +@Data +@ApiModel(value = "wxPpSendRichTextMsgReq", description = "个微发送富文本消息请求入参") +public class WxPpSendRichTextMsgReq { + + /** + * 消息接收人 + * 消息接收人,私聊为 wxid(wxid_xxxxxxxxxxxxxx) + * 群聊为 roomid(xxxxxxxxxx@chatroom) + */ + @ApiModelProperty(value = "消息接收人") + private String recipient; + + /** + * 左下显示的名字 + */ + @ApiModelProperty(value = "左下显示的名字") + private String name; + + /** + * 填公众号id 可以显示对应的头像(gh_ 开头的) + */ + @ApiModelProperty(value = "资源路径-封面图片路径") + private String account; + + /** + * 标题,最多两行 + */ + @ApiModelProperty(value = "标题,最多两行") + private String title; + + /** + * 摘要,三行 + */ + @ApiModelProperty(value = "摘要,三行") + private String digest; + + /** + * 点击后跳转的链接 + */ + @ApiModelProperty(value = "点击后跳转的链接") + private String jumpUrl; + + /** + * 缩略图的链接 + */ + @ApiModelProperty(value = "缩略图的链接") + private String thumbnailUrl; + +} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendTextMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendTextMsgReq.java index 7444045..d415150 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendTextMsgReq.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendTextMsgReq.java @@ -19,6 +19,7 @@ public class WxPpSendTextMsgReq { /** * 消息文本 * 消息内容(如果是 @ 消息则需要有跟 @ 的人数量相同的 @) + * 换行使用 `\\\\n` (单杠) */ @ApiModelProperty(value = "消息文本") private String msgText; diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendXmlMsgReq.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendXmlMsgReq.java new file mode 100644 index 0000000..ba1a24e --- /dev/null +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/request/WxPpSendXmlMsgReq.java @@ -0,0 +1,43 @@ +package com.wechat.ferry.entity.vo.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请求入参-个微发送XML消息 + * + * @author chandler + * @date 2024-10-04 23:11 + */ +@Data +@ApiModel(value = "wxPpSendXmlMsgReq", description = "个微发送XML消息请求入参") +public class WxPpSendXmlMsgReq { + + /** + * 消息接收人 + * 消息接收人,私聊为 wxid(wxid_xxxxxxxxxxxxxx) + * 群聊为 roomid(xxxxxxxxxx@chatroom) + */ + @ApiModelProperty(value = "消息接收人") + private String recipient; + + /** + * XML报文内容 + */ + @ApiModelProperty(value = "XML报文内容") + private String xmlContent; + + /** + * 资源路径-封面图片路径 + */ + @ApiModelProperty(value = "资源路径-封面图片路径") + private String resourcePath; + + /** + * xml类型,如:0x21 为小程序 + */ + @ApiModelProperty(value = "xml类型") + private Integer xmlType; + +} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendPatOnePatMsgResp.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendPatOnePatMsgResp.java new file mode 100644 index 0000000..2763186 --- /dev/null +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendPatOnePatMsgResp.java @@ -0,0 +1,29 @@ +package com.wechat.ferry.entity.vo.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请求出参-个微发送拍一拍消息 + * + * @author chandler + * @date 2024/10/06 15:52 + */ +@Data +@ApiModel(value = "wxPpSendPatOnePatMsgResp", description = "个微发送拍一拍消息请求出参") +public class WxPpSendPatOnePatMsgResp { + + /** + * 类型编号 + */ + @ApiModelProperty(value = "类型编号") + private Integer id; + + /** + * 类型名称 + */ + @ApiModelProperty(value = "类型名称") + private String name; + +} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendRichTextMsgResp.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendRichTextMsgResp.java new file mode 100644 index 0000000..4483954 --- /dev/null +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendRichTextMsgResp.java @@ -0,0 +1,29 @@ +package com.wechat.ferry.entity.vo.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请求出参-个微发送富文本消息 + * + * @author chandler + * @date 2024/10/06 15:46 + */ +@Data +@ApiModel(value = "wxPpSendRichTextMsgResp", description = "个微发送富文本消息请求出参") +public class WxPpSendRichTextMsgResp { + + /** + * 类型编号 + */ + @ApiModelProperty(value = "类型编号") + private Integer id; + + /** + * 类型名称 + */ + @ApiModelProperty(value = "类型名称") + private String name; + +} diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendCardMsgResp.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendXmlMsgResp.java similarity index 82% rename from clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendCardMsgResp.java rename to clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendXmlMsgResp.java index 8662801..1d76ef8 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendCardMsgResp.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/entity/vo/response/WxPpSendXmlMsgResp.java @@ -5,14 +5,14 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * 请求出参-个微发送卡片消息 + * 请求出参-个微发送XML消息 * * @author chandler * @date 2024/10/04 23:11 */ @Data -@ApiModel(value = "wxPpSendCardMsgResp", description = "个微发送卡片消息请求出参") -public class WxPpSendCardMsgResp { +@ApiModel(value = "wxPpSendCardMsgResp", description = "个微发送XML消息请求出参") +public class WxPpSendXmlMsgResp { /** * 类型编号 diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/enums/WxContactsTypeEnum.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/enums/WxContactsTypeEnum.java index 2c967ec..0a274f1 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/enums/WxContactsTypeEnum.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/enums/WxContactsTypeEnum.java @@ -33,9 +33,14 @@ public enum WxContactsTypeEnum { GROUP("3", "群组", "@chatroom"), /** - * 4-公众号 + * 4-官方杂号 */ - OFFICIAL_ACCOUNT("4", "公众号", "gh_"), + OFFICIAL_MIXED_NO("4", "官方杂号", null), + + /** + * 5-公众号 + */ + OFFICIAL_ACCOUNT("5", "公众号", "gh_"), /** * 未匹配上 diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/WeChatDllService.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/WeChatDllService.java index cd99993..986b274 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/WeChatDllService.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/WeChatDllService.java @@ -5,21 +5,25 @@ import java.util.List; import com.wechat.ferry.entity.vo.request.WxPpDatabaseSqlReq; import com.wechat.ferry.entity.vo.request.WxPpDatabaseTableReq; import com.wechat.ferry.entity.vo.request.WxPpGroupMemberReq; -import com.wechat.ferry.entity.vo.request.WxPpSendCardMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpPatOnePatMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendEmojiMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendFileMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendImageMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendRichTextMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendTextMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendXmlMsgReq; import com.wechat.ferry.entity.vo.response.WxPpContactsResp; import com.wechat.ferry.entity.vo.response.WxPpDatabaseRowResp; import com.wechat.ferry.entity.vo.response.WxPpGroupMemberResp; import com.wechat.ferry.entity.vo.response.WxPpLoginInfoResp; import com.wechat.ferry.entity.vo.response.WxPpMsgTypeResp; -import com.wechat.ferry.entity.vo.response.WxPpSendCardMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendEmojiMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendFileMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendImageMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendPatOnePatMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendRichTextMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendTextMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendXmlMsgResp; /** * 业务接口-对接原本DLL的接口 @@ -158,7 +162,7 @@ public interface WeChatDllService { WxPpSendFileMsgResp sendFileMsg(WxPpSendFileMsgReq request); /** - * 发送卡片消息 + * 发送XML消息 * * @param request 请求入参 * @return 消息发送返回 @@ -166,7 +170,7 @@ public interface WeChatDllService { * @author chandler * @date 2024-10-04 23:15 */ - WxPpSendCardMsgResp sendCardMsg(WxPpSendCardMsgReq request); + WxPpSendXmlMsgResp sendXmlMsg(WxPpSendXmlMsgReq request); /** * 发送表情消息 @@ -179,4 +183,26 @@ public interface WeChatDllService { */ WxPpSendEmojiMsgResp sendEmojiMsg(WxPpSendEmojiMsgReq request); + /** + * 发送富文本消息 + * + * @param request 请求入参 + * @return 消息发送返回 + * + * @author chandler + * @date 2024-10-06 15:48 + */ + WxPpSendRichTextMsgResp sendRichTextMsg(WxPpSendRichTextMsgReq request); + + /** + * 拍一拍 + * + * @param request 请求入参 + * @return 消息发送返回 + * + * @author chandler + * @date 2024-10-06 15:54 + */ + WxPpSendPatOnePatMsgResp patOnePat(WxPpPatOnePatMsgReq request); + } diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatDllServiceImpl.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatDllServiceImpl.java index 2ec78e5..6030203 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatDllServiceImpl.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatDllServiceImpl.java @@ -20,22 +20,26 @@ import com.wechat.ferry.entity.proto.Wcf; import com.wechat.ferry.entity.vo.request.WxPpDatabaseSqlReq; import com.wechat.ferry.entity.vo.request.WxPpDatabaseTableReq; import com.wechat.ferry.entity.vo.request.WxPpGroupMemberReq; -import com.wechat.ferry.entity.vo.request.WxPpSendCardMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpPatOnePatMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendEmojiMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendFileMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendImageMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendRichTextMsgReq; import com.wechat.ferry.entity.vo.request.WxPpSendTextMsgReq; +import com.wechat.ferry.entity.vo.request.WxPpSendXmlMsgReq; import com.wechat.ferry.entity.vo.response.WxPpContactsResp; import com.wechat.ferry.entity.vo.response.WxPpDatabaseFieldResp; import com.wechat.ferry.entity.vo.response.WxPpDatabaseRowResp; import com.wechat.ferry.entity.vo.response.WxPpGroupMemberResp; import com.wechat.ferry.entity.vo.response.WxPpLoginInfoResp; import com.wechat.ferry.entity.vo.response.WxPpMsgTypeResp; -import com.wechat.ferry.entity.vo.response.WxPpSendCardMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendEmojiMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendFileMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendImageMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendPatOnePatMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendRichTextMsgResp; import com.wechat.ferry.entity.vo.response.WxPpSendTextMsgResp; +import com.wechat.ferry.entity.vo.response.WxPpSendXmlMsgResp; import com.wechat.ferry.enums.SexEnum; import com.wechat.ferry.enums.WxContactsTypeEnum; import com.wechat.ferry.handle.WeChatSocketClient; @@ -135,18 +139,59 @@ public class WeChatDllServiceImpl implements WeChatDllService { vo.setSex(SexEnum.getCodeMap(String.valueOf(rpcContact.getGender())).getCode()); vo.setSexLabel(SexEnum.getCodeMap(String.valueOf(rpcContact.getGender())).getName()); } - // 是否为企业微信 + // 微信类型 if (!ObjectUtils.isEmpty(rpcContact.getWxid())) { + List mixedNoList = new ArrayList<>(); + // 朋友推荐消息 + mixedNoList.add("fmessage"); + // 语音记事本 + mixedNoList.add("medianote"); + // 漂流瓶 + mixedNoList.add("floatbottle"); + // 文件传输助手 + mixedNoList.add("filehelper"); + // 新闻 + mixedNoList.add("newsapp"); + // 微信公众平台 weixingongzhong + mixedNoList.add("weixinguanhaozhushou"); + // 微信团队 + mixedNoList.add("weixin"); + // 微信支付 wxzhifu + mixedNoList.add("gh_3dfda90e39d6"); + // 微信公开课 wx-gongkaike + mixedNoList.add("gh_c46cbbfa1de9"); + // 微信公开课 wx-gongkaike + mixedNoList.add("gh_c46cbbfa1de9"); + // 微信运动 WeRun-WeChat + mixedNoList.add("gh_43f2581f6fd6"); + // 微信游戏 game + mixedNoList.add("gh_25d9ac85a4bc"); + // 微信游戏 game + mixedNoList.add("gh_25d9ac85a4bc"); + // 微信开发者 + mixedNoList.add("gh_56fc3b00cc4f"); + // 微信搜一搜 wechat_search + mixedNoList.add("gh_f08f54ae25a4"); + // 微信搜一搜 wechat_search + mixedNoList.add("gh_f08f54ae25a4"); if (rpcContact.getWxid().endsWith(WxContactsTypeEnum.WORK.getAffix())) { + // 企微 vo.setType(WxContactsTypeEnum.WORK.getCode()); vo.setTypeLabel(WxContactsTypeEnum.WORK.getName()); } else if (rpcContact.getWxid().endsWith(WxContactsTypeEnum.GROUP.getAffix())) { + // 群聊 vo.setType(WxContactsTypeEnum.GROUP.getCode()); vo.setTypeLabel(WxContactsTypeEnum.GROUP.getName()); + } else if (mixedNoList.contains(rpcContact.getWxid())) { + // 官方杂号 + vo.setType(WxContactsTypeEnum.OFFICIAL_MIXED_NO.getCode()); + vo.setTypeLabel(WxContactsTypeEnum.OFFICIAL_MIXED_NO.getName()); } else if (rpcContact.getWxid().startsWith(WxContactsTypeEnum.OFFICIAL_ACCOUNT.getAffix())) { + // 微信公众号 vo.setType(WxContactsTypeEnum.OFFICIAL_ACCOUNT.getCode()); vo.setTypeLabel(WxContactsTypeEnum.OFFICIAL_ACCOUNT.getName()); } else { + // 个微 vo.setType(WxContactsTypeEnum.PERSON.getCode()); vo.setTypeLabel(WxContactsTypeEnum.PERSON.getName()); } @@ -293,6 +338,7 @@ public class WeChatDllServiceImpl implements WeChatDllService { atUser = String.join(",", request.getAtUsers()); } } + // 0 为成功,其他失败 int state = wechatSocketClient.sendText(request.getMsgText(), request.getRecipient(), atUser); log.info("[发送消息]-[文本消息]-处理结束"); return null; @@ -301,25 +347,43 @@ public class WeChatDllServiceImpl implements WeChatDllService { @Override public WxPpSendImageMsgResp sendImageMsg(WxPpSendImageMsgReq request) { WxPpSendImageMsgResp resp = new WxPpSendImageMsgResp(); - int state = wechatSocketClient.sendImage(request.getPath(), request.getRecipient()); + int state = wechatSocketClient.sendImage(request.getResourcePath(), request.getRecipient()); return null; } @Override public WxPpSendFileMsgResp sendFileMsg(WxPpSendFileMsgReq request) { - int state = wechatSocketClient.sendFile(request.getPath(), request.getRecipient()); + int state = wechatSocketClient.sendFile(request.getResourcePath(), request.getRecipient()); return null; } @Override - public WxPpSendCardMsgResp sendCardMsg(WxPpSendCardMsgReq request) { - int state = wechatSocketClient.sendXml(request.getRecipient(), request.getXml(), request.getPath(), request.getType()); + public WxPpSendXmlMsgResp sendXmlMsg(WxPpSendXmlMsgReq request) { + int state = wechatSocketClient.sendXml(request.getRecipient(), request.getXmlContent(), request.getResourcePath(), request.getXmlType()); return null; } @Override public WxPpSendEmojiMsgResp sendEmojiMsg(WxPpSendEmojiMsgReq request) { - int state = wechatSocketClient.sendEmotion(request.getPath(), request.getRecipient()); + int state = wechatSocketClient.sendEmotion(request.getResourcePath(), request.getRecipient()); + return null; + } + + @Override + public WxPpSendRichTextMsgResp sendRichTextMsg(WxPpSendRichTextMsgReq request) { + Wcf.RichText richTextMsg = Wcf.RichText.newBuilder().setName(request.getName()).setAccount(request.getAccount()).setTitle(request.getTitle()) + .setDigest(request.getDigest()).setUrl(request.getJumpUrl()).setThumburl(request.getThumbnailUrl()).setReceiver(request.getRecipient()) + .build(); + Wcf.Request wcfReq = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_RICH_TXT_VALUE).setRt(richTextMsg).build(); + Wcf.Response rsp = wechatSocketClient.sendCmd(wcfReq); + return null; + } + + @Override + public WxPpSendPatOnePatMsgResp patOnePat(WxPpPatOnePatMsgReq request) { + Wcf.PatMsg patMsg = Wcf.PatMsg.newBuilder().setRoomid(request.getRecipient()).setWxid(request.getPatUser()).build(); + Wcf.Request wcfReq = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_PAT_MSG_VALUE).setPm(patMsg).build(); + Wcf.Response rsp = wechatSocketClient.sendCmd(wcfReq); return null; } diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatMsgServiceImpl.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatMsgServiceImpl.java index 2211455..1d20c21 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatMsgServiceImpl.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/service/impl/WeChatMsgServiceImpl.java @@ -4,7 +4,6 @@ import java.util.Map; import javax.annotation.Resource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; @@ -13,8 +12,6 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.wechat.ferry.config.WeChatFerryProperties; import com.wechat.ferry.entity.dto.WxPpMsgDTO; -import com.wechat.ferry.service.WeChatDllService; -import com.wechat.ferry.service.WeChatExtService; import com.wechat.ferry.service.WeChatMsgService; import com.wechat.ferry.utils.HttpClientUtil; @@ -30,20 +27,6 @@ import lombok.extern.slf4j.Slf4j; @Service public class WeChatMsgServiceImpl implements WeChatMsgService { - private WeChatDllService weChatDllService; - - @Autowired - public void setWeChatDllService(WeChatDllService weChatDllService) { - this.weChatDllService = weChatDllService; - } - - private WeChatExtService weChatExtService; - - @Autowired - public void setWeChatExtService(WeChatExtService weChatExtService) { - this.weChatExtService = weChatExtService; - } - @Resource private WeChatFerryProperties weChatFerryProperties; @@ -58,7 +41,6 @@ public class WeChatMsgServiceImpl implements WeChatMsgService { // 指定处理的群聊 if (weChatFerryProperties.getOpenMsgGroups().contains(dto.getRoomId())) { // TODO 这里可以拓展自己需要的功能 - weChatExtService.instructSign(dto); } } log.debug("[收到消息]-[消息内容]-打印:{}", dto);