微信云linux sdk,微信云控开发SDK使用教程--手机端推送好友列表通知服务端
微信云控开发SDK使用教程--手机端推送好友列表通知服务端
case FriendPushNotice : {//手机端推送好友列表 log.debug("socket:msgtype=FriendPushNotice"); friendPushNoticeHandler.handleMsg(ctx, msgVo); break; }
package com.jubotech.framework.netty.handler.socket;
import java.util.List;
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;
import com.google.protobuf.util.JsonFormat; import com.jubotech.business.web.domain.AccountInfo; import com.jubotech.business.web.domain.WeChatAccountInfo; import com.jubotech.business.web.domain.WeChatContactInfo; import com.jubotech.business.web.service.AccountService; import com.jubotech.business.web.service.WeChatAccountService; import com.jubotech.business.web.service.WeChatContactService; import com.jubotech.framework.netty.common.Constant; import com.jubotech.framework.netty.utils.MessageUtil; import com.jubotech.framework.netty.utils.NettyConnectionUtil;
import Jubo.JuLiao.IM.Wx.Proto.FriendAddNotice.FriendMessage; import Jubo.JuLiao.IM.Wx.Proto.FriendPushNotice.FriendPushNoticeMessage; import Jubo.JuLiao.IM.Wx.Proto.TransportMessageOuterClass.EnumErrorCode; import Jubo.JuLiao.IM.Wx.Proto.TransportMessageOuterClass.EnumMsgType; import Jubo.JuLiao.IM.Wx.Proto.TransportMessageOuterClass.TransportMessage; import io.netty.channel.ChannelHandlerContext;
@Service public class FriendPushNoticeHandler{ private final Logger log = LoggerFactory.getLogger(getClass()); @Autowired private WeChatAccountService weChatAccountService; @Autowired private AccountService accountService; @Autowired private WeChatContactService weChatContactService;
/**
* 手机端主动推送好友列表消息
* @author wechatno:tangjinjinwx
* @param ctx
* @param vo
*/
public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) {
try {
FriendPushNoticeMessage req = vo.getContent().unpack(FriendPushNoticeMessage.class);
log.info(JsonFormat.printer().print(req));
// 把消息转发给pc端
// a、根据wechatId找到accountid
// b、通过accountid找到account
// c、通过account账号找到通道
WeChatAccountInfo account = weChatAccountService.findWeChatAccountInfoByWeChatId(req.getWeChatId());
if (null != account && null != account.getAccountid() && 1 != account.getIslogined()) {
AccountInfo accInfo = accountService.findAccountInfoByid(account.getAccountid());
if (null != accInfo) {
// 转发给pc端
ChannelHandlerContext chx = NettyConnectionUtil.getClientChannelHandlerContextByUserId(accInfo.getAccount());
if (null != chx) {
asyncSendMsg(chx, req);
}
}
// 告诉客户端消息已收到
MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null);
//异步保存到数据库
friendListSave(req, account);
} else {
// 对方不在线
MessageUtil.sendErrMsg(ctx, EnumErrorCode.TargetNotOnline, Constant.ERROR_MSG_NOTONLINE);
}
} catch (Exception e) {
e.printStackTrace();
MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL);
}
}
@Async
private void asyncSendMsg(ChannelHandlerContext chx,FriendPushNoticeMessage req){
MessageUtil.sendJsonMsg(chx, EnumMsgType.FriendPushNotice, NettyConnectionUtil.getNettyId(chx),null, req);
}
@Async
private void friendListSave(FriendPushNoticeMessage req,WeChatAccountInfo account) {
List friendList = req.getFriendsList();
if(null != friendList && friendList.size()>0){
String wechatId = req.getWeChatId();
for(int i=0;i
FriendMessage friend = friendList.get(i);
if(null != friend){
WeChatContactInfo contactinfo = weChatContactService.findContactinfoByfriendid(account.getCid(),wechatId,friend.getFriendId());
try {
if(null != contactinfo){
setContActinfo(contactinfo, friend);
weChatContactService.update(contactinfo);
}else{
contactinfo = new WeChatContactInfo();
setContActinfo(contactinfo, friend);
contactinfo.setCid(account.getCid());
contactinfo.setWechatid(req.getWeChatId());
contactinfo.setFriendid(friend.getFriendId());
weChatContactService.insert(contactinfo);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
private static void setContActinfo(WeChatContactInfo contactinfo,FriendMessage friend){
contactinfo.setFriend_wechatno(friend.getFriendNo());
contactinfo.setNickname(friend.getFriendNick());
contactinfo.setGender(friend.getGenderValue());
contactinfo.setAvatar(friend.getAvatar());
contactinfo.setCountry(friend.getCountry());
contactinfo.setProvince(friend.getProvince());
contactinfo.setCity(friend.getCity());
contactinfo.setState(0);
}
}
微信云linux sdk,微信云控开发SDK使用教程--手机端推送好友列表通知服务端相关推荐
- 微信云控开发SDK使用教程--手机机端回传检测清粉好友数通知服务端
微信云控开发SDK使用教程--手机机端回传检测清粉好友数通知服务端 case PostFriendDetectCountNotice : {//手机机端回传检测清粉好友数 log.debug(&quo ...
- .net 服务器推送信息,.net websocket服务端开发,实现消息推送功能
WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是它和http最大的不同有两点: WebSocket是一种双向通信协议,在建立连接后,WebSock ...
- 微信二次开发SDK使用教程--手机检测到有人点赞/取消点赞通知服务端
微信二次开发SDK使用教程--手机检测到有人点赞/取消点赞通知服务端 case CircleLikeNotice : {//手机检测到有人点赞/取消点赞通知 log.debug("socke ...
- 微信开发SDK使用教程--手机微信好友发来聊天消息通知服务端
微信开发SDK使用教程--手机微信好友发来聊天消息通知服务端 case FriendTalkNotice: {// 微信好友发来聊天消息 log.debug("socket:msgtype= ...
- 微信开发SDK使用教程--手机微信个人号新增好友通知服务端
微信开发SDK使用教程--手机微信个人号新增好友通知服务端 case FriendAddNotice: {// 微信个人号新增好友通知 log.debug("socket:msgtype=F ...
- 阿里云Linux服务器部署Mysql,JDK以及Tomcat教程
阿里云Linux服务器部署Mysql,JDK以及Tomcat教程 最近趁着阿里云服务器优惠在阿里云租用了一个轻型应用服务器,本来可以选择已经搭配好的服务器类型,但自己选择了ubantu Linux系统 ...
- 企业微信sdk调用,触发企业微信推送联系人列表
企业微信sdk调用,触发企业微信推送联系人列表 /** * 触发推送企业微信联系人列表任务 * @author wechat:happybabby110 * @blog ...
- python生成QQ机器人爬取百度文库链接推送好友并生成词云
QQ机器人爬取百度文库链接推送好友并生成词云 一.环境准备 二.实现QQ机器人 1.QQ机器人介绍 2.安装方法 3.实现自己的QQ机器人 三.百度文库内容链接爬取推送好友 代码实现: 思路分析 1. ...
- php 微信图文推送,微信单图文、多图文推送、列表中排序
/** * @author yinhuiying(改于) * @since version - 2014-10-31 * @deprecated version - 2014-10-31 * 腾讯客服 ...
- 微信小程序一次获取多个formid插件,实现主动推送多次消息
微信小程序一次获取多个formid 微信小程序一次获取多个formid插件,实现主动推送多次消息 版本号:1.0.0 作者:chen-yt github: https://github.com/che ...
最新文章
- wxpython富文本_Python实例讲解 -- wxpython 基本的控件 (文本)
- 疯狂秀才权限管理系统,开源了
- Missing you is a kind of my deep-pain in my life
- 20172317 2018-2019-1 《程序设计与数据结构》 第五周学习总结
- EtherCAT 网站链接
- Qt——P26 Label控件显示图片
- With great power comes great responsibility
- Flutter业务开发常用小技巧(样式布局篇)
- 卡巴斯基终生免费使用方法
- 支持HEVC格式的浏览器推荐(windows 10)
- log4cxx OutputDebugString DebugView dbgview
- 接口测试用例设计和sql注入
- 平安京因服务器升级维护什么意思,阴阳师4月27日维护更新公告 堀江由衣猫掌柜降临平安京...
- 阿里云ECS服务器很多台共用一个公网ip吗?
- python3 实现自动生成入账记录表
- root后开启指纹支付,root之后不能用指纹支付
- 【笔记】MS5837-30BA压力传感器调试笔记
- (深度学习入门)sigmoid型函数和 sigmoid函数的区别
- NFT 的价值与法律风险
- 肯德基微信小程序连接服务器异常,微信小程序平台常见问题及解决方案