个人微信api接口调用源码
1、微信好友收发消息
/** * 给微信好友发消息 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); TalkToFriendTaskMessage.Builder bd = TalkToFriendTaskMessage.newBuilder(); JsonFormat.parser().merge(contentJsonStr, bd); TalkToFriendTaskMessage req = bd.build(); // 消息记录数据库 asyncTaskService.savePcMessage(req); // 将消息转发送给手机客户端 asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TalkToFriendTask, vo, req); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } /** * 微信好友发来聊天消息通知 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) { try { FriendTalkNoticeMessage req = vo.getContent().unpack(FriendTalkNoticeMessage.class); log.debug(JsonFormat.printer().print(req)); log.debug(LocalDateTime.now()+" 微信好友发来聊天消息 对应的线程名: "+Thread.currentThread().getName()); //拦截消息 asyncTaskService.msgAopTask(ctx,req,vo.getAccessToken(), vo.getId()); //消息转发到pc端 asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.FriendTalkNotice, req); // 告诉客户端消息已收到 MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null); WxAccountInfo account = weChatAccountService.findWeChatAccountInfoByWeChatId(req.getWeChatId()); //消息记录数据库 if (null != account){ asyncTaskService.saveMessage(account, req); } } catch (Exception e) { e.printStackTrace(); MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), e.getMessage()); } }
2、触发手机推送微信好友列表及返回
/** * 触发手机推送微信好友列表 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx,TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); TriggerFriendPushTaskMessage.Builder bd = TriggerFriendPushTaskMessage.newBuilder(); JsonFormat.parser().merge(contentJsonStr, bd); TriggerFriendPushTaskMessage req = bd.build(); //TriggerFriendPushTaskMessage req = vo.getContent().unpack(TriggerFriendPushTaskMessage.class); //将消息转发送给手机客户端 asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TriggerFriendPushTask, vo, req); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } /** * 微信好友列表消息推送 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) { try { FriendPushNoticeMessage req = vo.getContent().unpack(FriendPushNoticeMessage.class); log.debug(JsonFormat.printer().print(req)); // 把消息转发给pc端 asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.FriendPushNotice, req); // 异步保存到数据库 asyncTaskService.friendListSave(req); // 告诉客户端消息已收到 MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam, vo.getId(), Constant.ERROR_MSG_DECODFAIL); } }
3、触发推送微信群聊列表及返回
/** * 触发推送微信群聊列表 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); TriggerChatRoomPushTaskMessage.Builder bd = TriggerChatRoomPushTaskMessage.newBuilder(); JsonFormat.parser().merge(contentJsonStr, bd); TriggerChatRoomPushTaskMessage req = bd.build(); // 将消息转发送给手机客户端 asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TriggerChatroomPushTask, vo, req); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } /** * 推送微信群聊列表 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) { try { ChatRoomPushNoticeMessage req = vo.getContent().unpack(ChatRoomPushNoticeMessage.class); log.debug(JsonFormat.printer().print(req)); asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.ChatroomPushNotice, req); asyncTaskService.qunListSave(req); // 告诉客户端消息已收到 MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), Constant.ERROR_MSG_DECODFAIL); } }
4、推送微信朋友圈、发朋友圈
/** * 触发推送朋友圈列表 * @author wechatno:tangjinjinwx * startTime传秒 * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); TriggerCirclePushTaskMessage.Builder bd = TriggerCirclePushTaskMessage.newBuilder(); JsonFormat.parser().merge(contentJsonStr, bd); TriggerCirclePushTaskMessage req = bd.build(); // TriggerCirclePushTaskMessage req = // vo.getContent().unpack(TriggerCirclePushTaskMessage.class); // 将消息转发送给手机客户端 asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TriggerCirclePushTask, vo, req); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } /** * 回传手机微信朋友圈数据 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) { try { CirclePushNoticeMessage req = vo.getContent().unpack(CirclePushNoticeMessage.class); log.debug(JsonFormat.printer().print(req)); //把消息转发给pc端 asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.CirclePushNotice, req); //保存朋友圈信息 asyncTaskService.asyncSaveCircleMsg(req, circleService, weChatContactService); //告诉客户端消息已收到 MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), Constant.ERROR_MSG_DECODFAIL); } } /** * 发微信朋友圈 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx,TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); PostSNSNewsTaskMessage.Builder bd = PostSNSNewsTaskMessage.newBuilder(); JsonFormat.parser().merge(contentJsonStr, bd); PostSNSNewsTaskMessage req = bd.build(); //PostSNSNewsTaskMessage req = vo.getContent().unpack(PostSNSNewsTaskMessage.class); asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.PostSNSNewsTask, vo, req); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } 5、加好友及通过好友请求 /** * 微信自动添加好友 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx ,TransportMessage vo, String contentJsonStr) { try { log.debug(contentJsonStr); FriendAddTaskSetting req = JSON.parseObject(contentJsonStr,FriendAddTaskSetting.class); if(null != req){ String resp ="fail"; resp = friendAddTaskService.savePcTask(req); //3、告诉PC客户端消息已收到 MessageUtil.sendCustomJsonMsg(ctx, "AutoFriendAddTaskResp", resp); } } catch (Exception e) { e.printStackTrace(); MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL); } } /** * 微信新增好友通知 * @author wechatno:tangjinjinwx * @blog http://www.wlkankan.cn */ @Async public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) { try { FriendAddNoticeMessage req = vo.getContent().unpack(FriendAddNoticeMessage.class); //把消息转发给pc端 asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.FriendAddNotice, req); //保存新增好友 asyncTaskService.saveFriendAddContactinfo(req); //告诉客户端消息已收到 MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null); } catch (Exception e) { e.printStackTrace(); MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), Constant.ERROR_MSG_DECODFAIL); } }