目录
1. 配置微信公众平台测试号
2. 数据接口封装
2.1 天行数据接口封装
2.2 日期计算工具封装
3. 封装推送逻辑
3.1 封装配置类
3.2 封装实体类
3.3 推送逻辑Controller实现
4. 封装定时任务
5. 打包部署腾讯云
近期网上又出现一股给女朋友做微信公众号推送的潮流,那么别人有的我女朋友也得有不是O.o 简单研究了一下做微信公众号推送的原理,简单来说就是后台服务器做个定时任务,然后定时调用微信公众平台提供的Web API接口(HTTP),发送模板消息(JSON数据)即可。技术栈及开发流程总结如下:
- 前端:微信公众号-订阅号-测试号
- 后端:SpringBoot + RestTemplate
点击打开微信公众平台链接( 微信公众平台 ),注册申请微信公众测试号。测试号可以体验微信公众平台所有的功能API接口,我们这里主要使用的是模板消息推送API。但测试号的局限性是只能使用默认的公众号名称且功能随时可能被下架。有条件的可以申请企业订阅号/服务号(个人认证的订阅号不具有模板消息推送API权限,只有企业可以认证服务号)。测试号配置中比较重要的是以下几部分(参考开发文档 模板消息 | 微信开放文档 (qq.com)):
测试号信息:包括appID和appsecret,用于获取Token与API接口进行身份校验
用户列表:用于获取订阅用户的openId,推送到目标用户(必须先关注此订阅号)
模板消息接口:用于配置推送的消息模板,包括模板ID(用于接口调用)、模板内容等。模板内容可设置参数(模板标题不可),供接口调用时使用,参数需以 {{params.DATA}} 格式配置。其中params是后端服务器传输过来的对应的JSON数据变量名称,DATA是前端模板消息的固定语法。
在消息推送模板中,我们需要用到的数据包括气候(天气、温度、城市等)、恋爱天数、生日倒计时天数、彩虹屁语句这几部分,数据的获取方式如下:
- 气候(天气、温度、城市等)、彩虹屁语句:使用 天行数据接口Web API(天行数据TianAPI - 开发者API数据平台)
- 恋爱天数、生日倒计时天数: 本地封装计算工具
天行接口数据的获取也是通过Web API 发送请求的方式在response中来获取数据(RestTemplate),接口文档如下:
- 天气接口:天气预报API接口 - 天行数据TianAPI
- 彩虹屁:彩虹屁API接口 - 天行数据TianAPI
计算生日倒计时和计算恋爱天数的逻辑不同。计算生日倒计时需要判断生日日期是否已过,而计算恋爱天数相对简单,直接统计时间即可。
项目打包成 jar 包后传到腾讯云服务器上,直接运行即可实现每日推送。