文档章节

使用jfinal-weixin实现微信多帐号、多公众号平台

YangTao
 YangTao
发布于 2014/11/06 18:41
字数 572
阅读 1435
收藏 5

看了波总在群里给一个兄弟的回复,刚开始想按波总的思路搞,其实很简单,甚至都没有自己写拦截器 @jfinal

微信的每个touser 和fromuser都是不一样的,就根据传过来的原始ID与系统的用户表匹配,然后查询出相应信息,包括生成菜单、配置的回复消息什么的之类,思路就这样。

  1. 新建一张公众账号的数据库表 ,保存公众号的appid ,appsecret,原始ID等,当然,还有一个字段和系统用户表关联,如user_id

  2. 新建一张系统用户表,如sys_user  ,其中有user_id

  3. Controller如下,BsPublic是我的微信公众账号信息表 ,bsmsg表是配置的关键字表(微信的菜单都有个event_key,即在这个表里配置对应关系,或自动消息回复也可以依此配置)

public class WechatCtrl extends WeixinController   {
/**
     * 获取userid
     * @param oriId 微信的原始ID
     */
    private int getUserId(String oriId){
        int userId = BsPublic.dao.getByOriId(oriId).getInt("user_id");
        return userId;
    }
    
    //
    protected void processInTextMsg(InTextMsg inTextMsg) {

        int userId = getUserId(inTextMsg.getToUserName());

        BsReceivedMsg bsReceivedMsg = new BsReceivedMsg();
        bsReceivedMsg.set("user_id",userId);
        bsReceivedMsg.set("msg_type","text");
        bsReceivedMsg.set("msg_content",inTextMsg.getContent());
        bsReceivedMsg.set("msgid",inTextMsg.getMsgId());
        bsReceivedMsg.set("sender_openid",inTextMsg.getFromUserName());

        bsReceivedMsg.save();

        OutTextMsg outTextMsg = new OutTextMsg(inTextMsg);
        outTextMsg.setContent("您的消息已记录,如果有需要,我们将会在2个工作日内答复您");
        render(outTextMsg);

    }
    
    //关注时回复(这里是从bsmsg表根据key取到的信息,当然也需要用user_id条件)
    protected void processInFollowEvent(InFollowEvent inFollowEvent) {

        int userId = getUserId(inFollowEvent.getToUserName());

        BsMsg bsMsg = BsMsg.dao.getByKey(userId,"follow_msg");

        OutTextMsg outTextMsg = new OutTextMsg(inFollowEvent);
        outTextMsg.setContent(bsMsg.getStr("msg_content"));
        render(outTextMsg);
    }
}

生成菜单的简单代码如下

public class PublicMenuCtrl extends BaseController {

    /**
     * 生成
     */
    public void generate(){


        String userId = getPara("u");

        String str = BsMenu.dao.getJsonMenu(userId);

        Map<String, String> postParams=new HashMap<String,String>();
        postParams.put("body",str);

        BsPublic bsPublic = BsPublic.dao.getByUserId(userId);
        renderJson(WechatUtil.generateMenu(bsPublic.getStr("app_id"), bsPublic.getStr("app_secret"), postParams));
    }
}

基本上就这样,感觉还是挺简单的,并且暂时没有发现什么问题。

© 著作权归作者所有

共有 人打赏支持
YangTao
粉丝 4
博文 41
码字总数 7452
作品 0
长沙
架构师
加载中

评论(6)

YangTao
YangTao

引用来自“j2ee小菜鸟”的评论

楼主能贴全一点吗?新手正在学习中啊!!!
weixin1.2已经支持了。。
J2EE小菜鸟
J2EE小菜鸟
楼主能贴全一点吗?新手正在学习中啊!!!
YangTao
YangTao

引用来自“wuleibeyond”的评论

运行不起来呀
呵呵,因为只是关键代码,如果贴全的话,包括页面文件,会好些个文件。示意而已
wuleibeyond
wuleibeyond
运行不起来呀
YangTao
YangTao

引用来自“夏日滴凉风”的评论

感谢楼主,很有帮助!
谢谢你拍的马屁
夏日滴凉风
夏日滴凉风
感谢楼主,很有帮助!
JFinal Weixin 2.1 发布,微信极速 SDK

JFinal Weixin 发布四年多以来,以其简单性、稳定性,获得了大量用户的喜爱,这四年多以来 JFinal Weixin 紧跟微信官方动态,不断增加、完善功能,例如跟随本次微信官方发布的 XXE 漏洞,第一...

JFinal
07/10
0
0
基于 jfinal 的内容发布系统 - wxcms

项目介绍 wxcms 是一个内容发布系统。 一,使用的相关技术 (1)jfinal作为核心框架,感谢波总开源如此好用的框架 (2)使用shiro作权限控制 (3)整合了百度编辑器ueditor (4)使用mysql数...

风灬云
09/19
0
0
Jfinal微信项目运行机理分析

微信时代的来临!!! 最近今天,越来越多的人都来问我,什么是微信?这里的微信我默认指我们的公众账号或者服务号之类的,所以下文如果不明确指出,就是指这个! 话回主题,什么是微信?他和...

天蓬小猪
2014/12/16
0
32
WordPress 的 Java 代替版 - JPress

JPress,一个wordpress的java代替版本,使用JFinal开发。支持类似wordpress的几乎所有功能,比如:模板,插件等。同时在模板上,JPress提出了“模板即模型”的概念,方便模板制作人灵活制作业...

理工男海哥
2016/06/09
0
51
记一次外包项目微信接口开发流程-spring-boot

近期帮朋友做了几个用到微信公众号接口的活,所以总结下。 一、微信公众号后台配置 公众号分订阅号,服务号,企业号,可以调用的接口权限各不相同,这里就不赘述,参考官方说明。 登陆公众号...

北风刮的不认真了
2017/10/20
0
5

没有更多内容

加载失败,请刷新页面

加载更多

区块链教程以太坊源码分析chain-indexer区块链索引一

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引一 chain_indexer 区块链索引 chain_indexer.go 源码解析 chain_indexer 顾名思义, 就是用来给区块链创建索引的功能。 之前在eth协议...

兄弟连区块链入门教程
26分钟前
2
0
社会化分享插件集成分享

一.前提摘要 社会化分享每个app必备的推广需求,无论是拉新,邀请,游戏奖励,等等都离不开分享的影子,下面我们介绍下社会化分享的插件; 首先要说下,现在的社交App,社区App等,国内外的...

佳妮
26分钟前
3
0
IOC 之 Spring 统一资源加载策略

统一资源:Resource org.springframework.core.io.Resource 为 Spring 框架所有资源的抽象和访问接口 它继承 org.springframework.core.io.InputStreamSource接口 作为所有资源的统一抽象,S...

职业搬砖20年
27分钟前
2
0
Python爬虫实战入门一:工具准备

一、基础知识 使用Python编写爬虫,当然至少得了解Python基本的语法,了解: 基本数据结构 数据类型 控制流 函数的使用 模块的使用 不需要过多过深的Python知识,仅此而已。 个人推荐《Pytho...

糖宝lsh
30分钟前
2
0
Hanlp中使用纯JAVA实现CRF分词

Hanlp中使用纯JAVA实现CRF分词 与基于隐马尔可夫模型的最短路径分词、N-最短路径分词相比,基于条件随机场(CRF)的分词对未登录词有更好的支持。本文(HanLP)使用纯Java实现CRF模型的读取与...

左手的倒影
33分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部