牛掰!我是这么把个人博客粉丝转到公众号的 (3)

WeixinMsgController 类的 processInTextMsg() 方法用来处理接收到的文本消息,我们可以在这个方法里保存 openid 和 token,成功后提示读者:恭喜您已经解锁博客全部文章~

protected void processInTextMsg(InTextMsg inTextMsg) { String msgContent = inTextMsg.getContent().trim(); if ("2048".equals(msgContent)) { } else if (msgContent.length() == 6) { Weixin param = new Weixin(); param.setOpenid(inTextMsg.getFromUserName()); param.setToken(msgContent); param.save(); OutTextMsg outMsg = new OutTextMsg(inTextMsg); outMsg.setContent("恭喜您已经解锁博客全部文章~"); render(outMsg); } else { renderDefault(); } }

3)响应前端的定时查询

WeixinController 类的 index() 方法用来响应前端的定时查询。

public void index() { // 跨域 getResponse().addHeader("Access-Control-Allow-Origin", "*"); String token = getPara("token"); String openid = service.findByToken(token); if (openid == null || "".equals(openid)) { renderJson("locked", true); } else { renderJson("locked", false); } }

①、getResponse().addHeader("Access-Control-Allow-Origin", "*") 这行代码可以解决跨域的问题。

②、根据 token 查询读者是否已经关注了公众号,关注过的话返回 false,否则返回 true。

4)读者取消关注订阅号后删除记录

WeixinMsgController 类的 processInFollowEvent() 方法用来处理接收到的关注/取消关注事件,如果取消关注的话,根据 openid 删除记录。

protected void processInFollowEvent(InFollowEvent inFollowEvent) { if (InFollowEvent.EVENT_INFOLLOW_SUBSCRIBE.equals(inFollowEvent.getEvent())) { else if (InFollowEvent.EVENT_INFOLLOW_UNSUBSCRIBE.equals(inFollowEvent.getEvent())) { log.debug("取消关注:" + inFollowEvent.getFromUserName()); service.deleteByOpenid(inFollowEvent.getFromUserName()); } }

04、注意事项

后端的工作完成后,就需要将其打包运行到服务器上了。

1)打包项目

命令行进入项目根目录,然后运行 mvn clean package 即可打包。

牛掰!我是这么把个人博客粉丝转到公众号的

打包完成后,可以在 target 目录下看到以下内容。

牛掰!我是这么把个人博客粉丝转到公众号的

tar.gz 文件为 target/jfinal_weixin_demo_for_maven-release/jfinal_weixin_demo_for_maven 目录的压缩包,方便上传至服务器。

2)将 tar.gz 文件上传至服务器,并启动服务

上传工具可以使用 FileZilla,上传成功后可以通过 tar -xzvf xxx.tar.gz 命令进行解压。然后进入 jfinal_weixin_demo_for_maven 目录下,输入 ./jfinal.sh start 即可启动服务。

3)配置 Nginx

由于服务器上 80 端口已经被占用,所以我们需要 Nginx 反向代理一下。简单介绍一下 Nginx(发音同 engine x),它是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。

打开 nginx.conf 文件,增加以下内容。

location ^~ /jfinal/ { proxy_pass :8089/; rewrite :8089/ last; }

配置之前,假如域名是 itwanger.com,访问该服务的地址为::8089。配置之后,访问该服务的地址就可以是:。这样请求的 URL 中就不需要指定端口了——有没有感觉到 Nginx 的一丝牛逼之处?

4)启用微信订阅号服务器配置

一切准备就绪后,就可以进入微信订阅号后台,填写服务器地址、令牌,然后启用服务器配置了。

牛掰!我是这么把个人博客粉丝转到公众号的

5)实际效果

可能大家想知道效果如何,这里截几张图大家看看。这个功能已经在小白学堂(itmind.net)上线了,感兴趣的可以进去体验一把,测到 bug 有奖励哟。

首先进去文章是这个样子的:

牛掰!我是这么把个人博客粉丝转到公众号的

然后关注了订阅号,发送了口令:

牛掰!我是这么把个人博客粉丝转到公众号的

于是同时,博客上的文章也解锁了!

牛掰!我是这么把个人博客粉丝转到公众号的

牛掰!

05、后记

一周时间,我几乎把所有的事情都滞后了,但总算是把这个方案落地了!内心还是非常激动的。再次感谢崔庆才大佬的思路,也为自己顽强的斗志点个赞!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwyxjz.html