微信每日早安推送
七夕到啦,做一个程序员给女朋友的浪漫礼物吧。
整个源码已经开放,GitHub地址:
一个摸鱼的下午,简单介绍一下怎么做的吧,纯后端java,写的比较随意,仅仅达到了功能要求。
所用知识点
一、springboot创建java后台
至于springboot怎么创建java后台,我这里就不再唠叨了,大家百度一下,一大堆的文章。这里只需要重点讲解下以下几点。
-
1.在pom.xml文件里引入下面类库
2.核心推送代码如下
import com.alibaba.fastjson.JSONObject; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; /** *@ClassName Pusher *@Description TODO *@Author ydzhao *@Date 2022/8/2 */ public class Pusher { private static String appId = "xxxx"; private static String secret = "xxx"; public static void push(String openId,String templateId){ //1,配置 WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage(); wxStorage.setAppId(appId); wxStorage.setSecret(secret); WxMpService wxMpService = new WxMpServiceImpl(); wxMpService.setWxMpConfigStorage(wxStorage); //2,推送消息 WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() .toUser(openId) .templateId(templateId) .build(); //3,如果是正式版发送模版消息,这里需要配置你的信息 JSONObject todayWeather = Tianqi.getNanjiTianqi(); templateMessage.addData(new WxMpTemplateData("riqi",todayWeather.getString("date") + " "+ todayWeather.getString("week"),"#00BFFF")); templateMessage.addData(new WxMpTemplateData("tianqi",todayWeather.getString("text_day"),"#00FFFF")); templateMessage.addData(new WxMpTemplateData("low",todayWeather.getString("low") + "","#173177")); templateMessage.addData(new WxMpTemplateData("high",todayWeather.getString("high")+ "","#FF6347" )); templateMessage.addData(new WxMpTemplateData("caihongpi",CaiHongPi.getCaiHongPi(),"#FF69B4")); templateMessage.addData(new WxMpTemplateData("lianai",JiNianRi.getLianAi()+"","#FF1493")); templateMessage.addData(new WxMpTemplateData("shengri",JiNianRi.getShengRi()+"","#FFA500")); templateMessage.addData(new WxMpTemplateData("jinju",CaiHongPi.getJinJu()+"","#C71585")); //templateMessage.addData(new WxMpTemplateData("jiehun",JiNianRi.getJieHun()+"")); templateMessage.addData(new WxMpTemplateData("linzhen",JiNianRi.getLinZhen()+"","#FF6347")); String beizhu = "情人节快乐!"; if(JiNianRi.getJieHun() % 365 == 0){ beizhu = "今天是结婚纪念日!"; } if(JiNianRi.getLianAi() % 365 == 0){ beizhu = "今天是恋爱纪念日!"; } if(JiNianRi.getLinZhen() % 365 == 0){ beizhu = "今天是结婚纪念日!"; } templateMessage.addData(new WxMpTemplateData("beizhu",beizhu,"#FF0000")); try { System.out.println(templateMessage.toJson()); System.out.println(wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage)); } catch (Exception e) { System.out.println("推送失败:" + e.getMessage()); e.printStackTrace(); } } }
3.生成自己的模板
参数需以{ {开头,以.DATA}}结尾 ,ex:{ {caihongpi.DATA}},代码里面替换就可以了
templateMessage.addData(new WxMpTemplateData("caihongpi",CaiHongPi.getCaiHongPi(),"#FF69B4"));
三、丰富功能
1.接入百度天气api
注册百度开发者,申请开放百度天气的api。具体如何接入网上教程很多,可以自行百度
2.接入彩虹屁的api或者自己开发一个彩虹屁库
彩虹屁的api:
网上有一些调用彩虹屁库的api,或者自己写一堆情话放在文件里,读取到内存里,用当前的天数取模就可以了。每日金句同理
3.纪念日计算
这里写了个粗略的计算方法,计算多少天。
public static int jiNianRi(String date) { int day = 0; try { long time = System.currentTimeMillis() - simpleDateFormat.parse(date).getTime(); day = (int) (time / 86400000L); } catch (ParseException e) { e.printStackTrace(); } return day; }
4.定时任务
写个定时任务每天早上7点半起床的时候推送
@Scheduled(cron = "0 30 7 * * ?") public void goodMorning(){ Pusher.push(openId,templateId); }