feat(0): [java]-[mvn]-1.新增通过好友申请接口
2.新增添加群成员为微信好友接口 3.新增邀请群成员接口 4.新增删除群成员接口
This commit is contained in:
parent
aa02af83a3
commit
0174c97faf
@ -10,9 +10,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.wechat.ferry.entity.TResponse;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfAddFriendGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseSqlReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseTableReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDeleteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfInviteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPassFriendApplyReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPatOnePatMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendEmojiMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendFileMsgReq;
|
||||
@ -115,13 +119,6 @@ public class WeChatDllController {
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询群成员", notes = "queryGroupMember")
|
||||
@PostMapping(value = "/list/groupMember")
|
||||
public TResponse<List<WxPpWcfGroupMemberResp>> queryGroupMember(@Validated @RequestBody WxPpWcfGroupMemberReq request) {
|
||||
List<WxPpWcfGroupMemberResp> list = weChatDllService.queryGroupMember(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "发送消息汇总入口", notes = "sendMsgMaster")
|
||||
@PostMapping(value = "/send/msgMaster")
|
||||
public TResponse<WxPpWcfSendTextMsgResp> sendMsgMaster(@Validated @RequestBody String jsonString) {
|
||||
@ -209,12 +206,40 @@ public class WeChatDllController {
|
||||
// }
|
||||
//
|
||||
|
||||
// @ApiOperation(value = "通过好友申请", notes = "queryMsgTypeList")
|
||||
// @PostMapping(value = "/list/msgType")
|
||||
// public TResponse<WxPpSendPatOnePatMsgResp> friendApply(@Validated @RequestBody WxPpPatOnePatMsgReq request) {
|
||||
// // WxPpSendPatOnePatMsgResp resp = weChatDllService.patOnePat(request);
|
||||
// return TResponse.ok(ResponseCodeEnum.SUCCESS, resp);
|
||||
// }
|
||||
@ApiOperation(value = "通过好友申请", notes = "passFriendApply")
|
||||
@PostMapping(value = "/passFriendApply")
|
||||
public TResponse<Object> passFriendApply(@Validated @RequestBody WxPpWcfPassFriendApplyReq request) {
|
||||
weChatDllService.passFriendApply(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加群成员为微信好友", notes = "addFriendGroupMember")
|
||||
@PostMapping(value = "/addFriend/groupMember")
|
||||
public TResponse<Object> addFriendGroupMember(WxPpWcfAddFriendGroupMemberReq request) {
|
||||
weChatDllService.addFriendGroupMember(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询群成员列表", notes = "queryGroupMemberList")
|
||||
@PostMapping(value = "/groupMember/list")
|
||||
public TResponse<List<WxPpWcfGroupMemberResp>> queryGroupMemberList(@Validated @RequestBody WxPpWcfGroupMemberReq request) {
|
||||
List<WxPpWcfGroupMemberResp> list = weChatDllService.queryGroupMemberList(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "邀请群成员", notes = "inviteGroupMember")
|
||||
@PostMapping(value = "/groupMember/invite")
|
||||
public TResponse<Object> inviteGroupMember(WxPpWcfInviteGroupMemberReq request) {
|
||||
weChatDllService.inviteGroupMember(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除群成员", notes = "deleteGroupMember")
|
||||
@PostMapping(value = "/groupMember/delete")
|
||||
public TResponse<Object> deleteGroupMember(WxPpWcfDeleteGroupMemberReq request) {
|
||||
weChatDllService.deleteGroupMember(request);
|
||||
return TResponse.ok(ResponseCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
// @ApiOperation(value = "获取朋友圈消息", notes = "queryMsgTypeList")
|
||||
// @PostMapping(value = "/list/msgType")
|
||||
@ -233,23 +258,5 @@ public class WeChatDllController {
|
||||
// public TResponse<Object> queryMsgTypeList() {
|
||||
// return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
// }
|
||||
//
|
||||
// @ApiOperation(value = "添加群成员", notes = "queryMsgTypeList")
|
||||
// @PostMapping(value = "/list/msgType")
|
||||
// public TResponse<Object> queryMsgTypeList() {
|
||||
// return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
// }
|
||||
//
|
||||
// @ApiOperation(value = "删除群成员", notes = "queryMsgTypeList")
|
||||
// @PostMapping(value = "/list/msgType")
|
||||
// public TResponse<Object> queryMsgTypeList() {
|
||||
// return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
// }
|
||||
//
|
||||
// @ApiOperation(value = "邀请群成员", notes = "queryMsgTypeList")
|
||||
// @PostMapping(value = "/list/msgType")
|
||||
// public TResponse<Object> queryMsgTypeList() {
|
||||
// return TResponse.ok(ResponseCodeEnum.SUCCESS, list);
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
package com.wechat.ferry.entity.vo.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 请求入参-添加群成员为好友
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 09:53
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "wxPpWcfAddFriendGroupMemberReq", description = "个微WCF添加群成员为好友请求入参")
|
||||
public class WxPpWcfAddFriendGroupMemberReq {
|
||||
|
||||
/**
|
||||
* 群编号
|
||||
*/
|
||||
@NotBlank(message = "群编号不能为空")
|
||||
@ApiModelProperty(value = "群编号")
|
||||
private String groupNo;
|
||||
|
||||
/**
|
||||
* 待添加的群成员列表
|
||||
*/
|
||||
@ApiModelProperty(value = "待添加的群成员列表")
|
||||
private List<String> groupMembers;
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.wechat.ferry.entity.vo.request;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 请求入参-个微WCF删除群成员
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 10:01
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "wxPpWcfDeleteGroupMemberReq", description = "个微WCF删除群成员请求入参")
|
||||
public class WxPpWcfDeleteGroupMemberReq {
|
||||
|
||||
/**
|
||||
* 群编号
|
||||
*/
|
||||
@NotBlank(message = "群编号不能为空")
|
||||
@ApiModelProperty(value = "群编号")
|
||||
private String groupNo;
|
||||
|
||||
/**
|
||||
* 待删除的群成员列表
|
||||
*/
|
||||
@ApiModelProperty(value = "待删除的群成员列表")
|
||||
private List<String> groupMembers;
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.wechat.ferry.entity.vo.request;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 请求入参-个微WCF邀请群成员
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 09:51
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "wxPpWcfInviteGroupMemberReq", description = "个微WCF邀请群成员请求入参")
|
||||
public class WxPpWcfInviteGroupMemberReq {
|
||||
|
||||
/**
|
||||
* 群编号
|
||||
*/
|
||||
@NotBlank(message = "群编号不能为空")
|
||||
@ApiModelProperty(value = "群编号")
|
||||
private String groupNo;
|
||||
|
||||
/**
|
||||
* 待邀请的群成员列表
|
||||
*/
|
||||
@ApiModelProperty(value = "待邀请的群成员列表")
|
||||
private List<String> groupMembers;
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.wechat.ferry.entity.vo.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 请求入参-通过好友申请
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 09:30
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "wxPpWcfPassFriendApplyReq", description = "个微WCF通过好友申请请求入参")
|
||||
public class WxPpWcfPassFriendApplyReq {
|
||||
|
||||
/**
|
||||
* 申请人
|
||||
* v3 xml.attrib["encryptusername"]
|
||||
*/
|
||||
@NotBlank(message = "申请人不能为空")
|
||||
@ApiModelProperty(value = "申请人")
|
||||
private String applicant;
|
||||
|
||||
/**
|
||||
* 审核人
|
||||
* v4 xml.attrib["ticket"]
|
||||
* 一般指自己,别人申请添加,自己审核是否通过
|
||||
*/
|
||||
@NotBlank(message = "审核人不能为空")
|
||||
@ApiModelProperty(value = "审核人")
|
||||
private String reviewer;
|
||||
|
||||
/**
|
||||
* 场景
|
||||
*/
|
||||
@ApiModelProperty(value = "场景")
|
||||
private String scene;
|
||||
|
||||
}
|
@ -15,10 +15,8 @@ import com.wechat.ferry.entity.proto.Wcf.DbQuery;
|
||||
import com.wechat.ferry.entity.proto.Wcf.DbRow;
|
||||
import com.wechat.ferry.entity.proto.Wcf.DecPath;
|
||||
import com.wechat.ferry.entity.proto.Wcf.Functions;
|
||||
import com.wechat.ferry.entity.proto.Wcf.MemberMgmt;
|
||||
import com.wechat.ferry.entity.proto.Wcf.Request;
|
||||
import com.wechat.ferry.entity.proto.Wcf.Response;
|
||||
import com.wechat.ferry.entity.proto.Wcf.Verification;
|
||||
import com.wechat.ferry.entity.proto.Wcf.WxMsg;
|
||||
import com.wechat.ferry.service.SDK;
|
||||
import com.wechat.ferry.utils.HttpClientUtil;
|
||||
@ -159,42 +157,6 @@ public class WeChatSocketClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收好友请求
|
||||
*
|
||||
* @param v3 xml.attrib["encryptusername"]
|
||||
* @param v4 xml.attrib["ticket"]
|
||||
* @return 结果状态码
|
||||
*/
|
||||
public int acceptNewFriend(String v3, String v4) {
|
||||
int ret = -1;
|
||||
Verification verification = Verification.newBuilder().setV3(v3).setV4(v4).build();
|
||||
Request req = Request.newBuilder().setFuncValue(Functions.FUNC_ACCEPT_FRIEND_VALUE).setV(verification).build();
|
||||
Response rsp = sendCmd(req);
|
||||
if (rsp != null) {
|
||||
ret = rsp.getStatus();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加群成员为微信好友
|
||||
*
|
||||
* @param roomID 群ID
|
||||
* @param wxIds 要加群的人列表,逗号分隔
|
||||
* @return 1 为成功,其他失败
|
||||
*/
|
||||
public int addChatroomMembers(String roomID, String wxIds) {
|
||||
int ret = -1;
|
||||
MemberMgmt memberMgmt = MemberMgmt.newBuilder().setRoomid(roomID).setWxids(wxIds).build();
|
||||
Request req = Request.newBuilder().setFuncValue(Functions.FUNC_ADD_ROOM_MEMBERS_VALUE).setM(memberMgmt).build();
|
||||
Response rsp = sendCmd(req);
|
||||
if (rsp != null) {
|
||||
ret = rsp.getStatus();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密图片
|
||||
*
|
||||
|
@ -2,9 +2,13 @@ package com.wechat.ferry.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfAddFriendGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseSqlReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseTableReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDeleteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfInviteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPassFriendApplyReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPatOnePatMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendEmojiMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendFileMsgReq;
|
||||
@ -117,17 +121,6 @@ public interface WeChatDllService {
|
||||
*/
|
||||
List<WxPpWcfDatabaseRowResp> execDbQuerySql(WxPpWcfDatabaseSqlReq request);
|
||||
|
||||
/**
|
||||
* 查询群成员
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 数据库记录
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-10-02 20:59
|
||||
*/
|
||||
List<WxPpWcfGroupMemberResp> queryGroupMember(WxPpWcfGroupMemberReq request);
|
||||
|
||||
/**
|
||||
* 发送文本消息(可 @)
|
||||
*
|
||||
@ -207,4 +200,59 @@ public interface WeChatDllService {
|
||||
*/
|
||||
WxPpWcfSendPatOnePatMsgResp patOnePat(WxPpWcfPatOnePatMsgReq request);
|
||||
|
||||
/**
|
||||
* 通过好友申请
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 结果状态
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 09:38
|
||||
*/
|
||||
String passFriendApply(WxPpWcfPassFriendApplyReq request);
|
||||
|
||||
/**
|
||||
* 添加群成员为微信好友
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 结果状态
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 09:38
|
||||
*/
|
||||
String addFriendGroupMember(WxPpWcfAddFriendGroupMemberReq request);
|
||||
|
||||
/**
|
||||
* 查询群成员列表
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 数据库记录
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-10-02 20:59
|
||||
*/
|
||||
List<WxPpWcfGroupMemberResp> queryGroupMemberList(WxPpWcfGroupMemberReq request);
|
||||
|
||||
/**
|
||||
* 邀请群成员
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 结果状态
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 10:02
|
||||
*/
|
||||
String inviteGroupMember(WxPpWcfInviteGroupMemberReq request);
|
||||
|
||||
/**
|
||||
* 删除群成员
|
||||
*
|
||||
* @param request 请求入参
|
||||
* @return 结果状态
|
||||
*
|
||||
* @author chandler
|
||||
* @date 2024-12-25 10:03
|
||||
*/
|
||||
String deleteGroupMember(WxPpWcfDeleteGroupMemberReq request);
|
||||
|
||||
}
|
||||
|
@ -21,9 +21,13 @@ import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import com.wechat.ferry.config.WeChatFerryProperties;
|
||||
import com.wechat.ferry.entity.proto.Wcf;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfAddFriendGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseSqlReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDatabaseTableReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfDeleteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfInviteGroupMemberReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPassFriendApplyReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfPatOnePatMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendEmojiMsgReq;
|
||||
import com.wechat.ferry.entity.vo.request.WxPpWcfSendFileMsgReq;
|
||||
@ -283,7 +287,177 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxPpWcfGroupMemberResp> queryGroupMember(WxPpWcfGroupMemberReq request) {
|
||||
public WxPpWcfSendTextMsgResp sendTextMsg(WxPpWcfSendTextMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文本消息]-入参打印:{}", request);
|
||||
String atUser = "";
|
||||
if (request.getIsAtAll()) {
|
||||
// 艾特全体,仅管理员有效
|
||||
atUser = "@all";
|
||||
} else {
|
||||
// 处理艾特的人员
|
||||
if (!CollectionUtils.isEmpty(request.getAtUsers())) {
|
||||
atUser = String.join(",", request.getAtUsers());
|
||||
}
|
||||
}
|
||||
Wcf.TextMsg textMsg = Wcf.TextMsg.newBuilder().setMsg(request.getMsgText()).setReceiver(request.getRecipient()).setAters(atUser).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_TXT_VALUE).setTxt(textMsg).build();
|
||||
log.debug("sendText: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
// 0 为成功,其他失败
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文本消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendRichTextMsgResp sendRichTextMsg(WxPpWcfSendRichTextMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[富文本消息]-入参打印:{}", 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 req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_RICH_TXT_VALUE).setRt(richTextMsg).build();
|
||||
log.debug("sendRichText: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[富文本消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendXmlMsgResp sendXmlMsg(WxPpWcfSendXmlMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[XML消息]-入参打印:{}", request);
|
||||
int xmlType = 0x21;
|
||||
if ("21".equals(request.getXmlType())) {
|
||||
// 小程序
|
||||
xmlType = 0x21;
|
||||
}
|
||||
Wcf.XmlMsg xmlMsg = Wcf.XmlMsg.newBuilder().setContent(request.getXmlContent()).setReceiver(request.getRecipient())
|
||||
.setPath(request.getResourcePath()).setType(xmlType).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_XML_VALUE).setXml(xmlMsg).build();
|
||||
log.debug("sendXml: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[XML消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendImageMsgResp sendImageMsg(WxPpWcfSendImageMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[图片消息]-入参打印:{}", request);
|
||||
WxPpWcfSendImageMsgResp resp = new WxPpWcfSendImageMsgResp();
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_IMG_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendImage: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[图片消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public WxPpWcfSendEmojiMsgResp sendEmojiMsg(WxPpWcfSendEmojiMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[表情消息]-入参打印:{}", request);
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_EMOTION_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendEmotion: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[表情消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendFileMsgResp sendFileMsg(WxPpWcfSendFileMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文件消息]-入参打印:{}", request);
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_FILE_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendFile: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文件消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendPatOnePatMsgResp patOnePat(WxPpWcfPatOnePatMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[拍一拍消息]-入参打印:{}", 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);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[拍一拍消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String passFriendApply(WxPpWcfPassFriendApplyReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[好友申请]-[通过好友申请]-入参打印:{}", request);
|
||||
Wcf.Verification verification = Wcf.Verification.newBuilder().setV3(request.getApplicant()).setV4(request.getReviewer()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_ACCEPT_FRIEND_VALUE).setV(verification).build();
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[好友申请]-[通过好友申请]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String addFriendGroupMember(WxPpWcfAddFriendGroupMemberReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[添加好友]-[添加群成员为好友]-入参打印:{}", request);
|
||||
if (CollectionUtils.isEmpty(request.getGroupMembers())) {
|
||||
log.error("[添加好友]-[添加群成员为好友]-待添加人员为空,本次操作取消");
|
||||
return "";
|
||||
}
|
||||
String groupMembersStr = String.join(",", request.getGroupMembers());
|
||||
Wcf.MemberMgmt memberMgmt = Wcf.MemberMgmt.newBuilder().setRoomid(request.getGroupNo()).setWxids(groupMembersStr).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_ADD_ROOM_MEMBERS_VALUE).setM(memberMgmt).build();
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[添加好友]-[添加群成员为好友]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxPpWcfGroupMemberResp> queryGroupMemberList(WxPpWcfGroupMemberReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
List<WxPpWcfGroupMemberResp> list = new ArrayList<>();
|
||||
// 查询群成员
|
||||
@ -353,142 +527,39 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendTextMsgResp sendTextMsg(WxPpWcfSendTextMsgReq request) {
|
||||
public String inviteGroupMember(WxPpWcfInviteGroupMemberReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文本消息]-入参打印:{}", request);
|
||||
String atUser = "";
|
||||
if (request.getIsAtAll()) {
|
||||
// 艾特全体,仅管理员有效
|
||||
atUser = "@all";
|
||||
} else {
|
||||
// 处理艾特的人员
|
||||
if (!CollectionUtils.isEmpty(request.getAtUsers())) {
|
||||
atUser = String.join(",", request.getAtUsers());
|
||||
}
|
||||
log.info("[群成员]-[邀请群成员加入]-入参打印:{}", request);
|
||||
if (CollectionUtils.isEmpty(request.getGroupMembers())) {
|
||||
log.error("[群成员]-[邀请群成员加入]-待邀请进群的人员为空,本次操作取消");
|
||||
return "";
|
||||
}
|
||||
Wcf.TextMsg textMsg = Wcf.TextMsg.newBuilder().setMsg(request.getMsgText()).setReceiver(request.getRecipient()).setAters(atUser).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_TXT_VALUE).setTxt(textMsg).build();
|
||||
log.debug("sendText: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
String groupMembersStr = String.join(",", request.getGroupMembers());
|
||||
Wcf.MemberMgmt memberMgmt = Wcf.MemberMgmt.newBuilder().setRoomid(request.getGroupNo()).setWxids(groupMembersStr).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_INV_ROOM_MEMBERS_VALUE).setM(memberMgmt).build();
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
// 0 为成功,其他失败
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文本消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
log.info("[群成员]-[邀请群成员加入]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendRichTextMsgResp sendRichTextMsg(WxPpWcfSendRichTextMsgReq request) {
|
||||
public String deleteGroupMember(WxPpWcfDeleteGroupMemberReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[富文本消息]-入参打印:{}", 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 req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_RICH_TXT_VALUE).setRt(richTextMsg).build();
|
||||
log.debug("sendRichText: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[富文本消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendXmlMsgResp sendXmlMsg(WxPpWcfSendXmlMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[XML消息]-入参打印:{}", request);
|
||||
int xmlType = 0x21;
|
||||
if ("21".equals(request.getXmlType())) {
|
||||
// 小程序
|
||||
xmlType = 0x21;
|
||||
log.info("[群成员]-[删除群成员]-入参打印:{}", request);
|
||||
if (CollectionUtils.isEmpty(request.getGroupMembers())) {
|
||||
log.error("[群成员]-[删除群成员]-待删除的人员为空,本次操作取消");
|
||||
return "";
|
||||
}
|
||||
Wcf.XmlMsg xmlMsg = Wcf.XmlMsg.newBuilder().setContent(request.getXmlContent()).setReceiver(request.getRecipient())
|
||||
.setPath(request.getResourcePath()).setType(xmlType).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_XML_VALUE).setXml(xmlMsg).build();
|
||||
log.debug("sendXml: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
String groupMembersStr = String.join(",", request.getGroupMembers());
|
||||
Wcf.MemberMgmt memberMgmt = Wcf.MemberMgmt.newBuilder().setRoomid(request.getGroupNo()).setWxids(groupMembersStr).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_DEL_ROOM_MEMBERS_VALUE).setM(memberMgmt).build();
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
int state = judgeWcfCmdState(rsp);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[XML消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendImageMsgResp sendImageMsg(WxPpWcfSendImageMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[图片消息]-入参打印:{}", request);
|
||||
WxPpWcfSendImageMsgResp resp = new WxPpWcfSendImageMsgResp();
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_IMG_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendImage: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[图片消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public WxPpWcfSendEmojiMsgResp sendEmojiMsg(WxPpWcfSendEmojiMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[表情消息]-入参打印:{}", request);
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_EMOTION_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendEmotion: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[表情消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendFileMsgResp sendFileMsg(WxPpWcfSendFileMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文件消息]-入参打印:{}", request);
|
||||
Wcf.PathMsg pathMsg = Wcf.PathMsg.newBuilder().setPath(request.getResourcePath()).setReceiver(request.getRecipient()).build();
|
||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_FILE_VALUE).setFile(pathMsg).build();
|
||||
log.debug("sendFile: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[文件消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxPpWcfSendPatOnePatMsgResp patOnePat(WxPpWcfPatOnePatMsgReq request) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[拍一拍消息]-入参打印:{}", 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);
|
||||
int state = judgeSendMsgState(rsp);
|
||||
// 转发处理
|
||||
String stringJson = JSON.toJSONString(request);
|
||||
sendMsgForward(stringJson, state);
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("[发送消息]-[拍一拍消息]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return null;
|
||||
log.info("[群成员]-[删除群成员]-处理结束,耗时:{}ms", (endTime - startTime));
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -615,8 +686,8 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断发送消息状态
|
||||
* 0 为成功,其他失败
|
||||
* 判断WCF的CMD调用状态
|
||||
* 有值 为成功,其他失败
|
||||
*
|
||||
* @param rsp 响应参数
|
||||
* @return 状态
|
||||
@ -624,8 +695,8 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
||||
* @author chandler
|
||||
* @date 2024-12-23 21:53
|
||||
*/
|
||||
private int judgeSendMsgState(Wcf.Response rsp) {
|
||||
// 0 为成功,其他失败
|
||||
private int judgeWcfCmdState(Wcf.Response rsp) {
|
||||
// 有值 为成功,其他失败
|
||||
int state = -1;
|
||||
if (rsp != null) {
|
||||
state = rsp.getStatus();
|
||||
|
Loading…
Reference in New Issue
Block a user