实现逐日早安推送

打印 上一主题 下一主题

主题 1003|帖子 1003|积分 3009

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
做一个程序员给女朋友的浪漫礼物吧
 整个源码已经开放,可在百度网盘进行下载。
链接:https://pan.baidu.com/s/1HdyWEFKxWbdZGp39HkgDVw 
提取码:uvdc




一花了两个多小时,简朴介绍一下怎么做的吧,纯后端java,写的比较随意,仅仅达到了功能要求。
所用知识点
1. springboot实现java背景
2.微信接口测试账号的申请
3.微信模版推送的配置
4.接入百度气候api
5.彩虹屁api或者自己写个情话库
6.逐日金句api或者自己写个金句库

一、springboot创建java背景



至于springboot怎么创建java背景,我这里就不再絮聒了,大家百度一下,一大堆的文章。这里只需要重点讲解下以下几点。
1.在pom.xml文件里引入下面类库
  1.         <!--微信模版消息推送三方sdk-->
  2.         <dependency>
  3.             <groupId>com.github.binarywang</groupId>
  4.             <artifactId>weixin-java-mp</artifactId>
  5.             <version>3.3.0</version>
  6.         </dependency>
  7.         <dependency>
  8.             <groupId>com.alibaba</groupId>
  9.             <artifactId>fastjson</artifactId>
  10.             <version>1.2.83</version>
  11.         </dependency>
复制代码
2.焦点推送代码如下
  1. import com.alibaba.fastjson.JSONObject;
  2. import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
  3. import me.chanjar.weixin.mp.api.WxMpService;
  4. import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
  5. import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
  6. import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
  7. /**
  8. * @ClassName Pusher
  9. * @Description TODO
  10. * @Author Ljc
  11. * @Date 2022/8/2 16:03
  12. */
  13. public class Pusher {
  14.     /**
  15.      * 测试号的appId和secret
  16.      */
  17.     private static String appId = "";
  18.     private static String secret = "XXX";
  19.     //模版id
  20.     public static String templateId = "";
  21.     public static void push(String openId) {
  22.         JSONObject todayWeather = Tianqi.getNanjiTianqi();
  23.         //1,配置
  24.         WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
  25.         wxStorage.setAppId(appId);
  26.         wxStorage.setSecret(secret);
  27.         WxMpService wxMpService = new WxMpServiceImpl();
  28.         wxMpService.setWxMpConfigStorage(wxStorage);
  29.         //2,推送消息
  30.         WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
  31.                 .toUser(openId)
  32.                 .templateId(templateId)
  33.                 //.url("https://30paotui.com/")//点击模版消息要访问的网址
  34.                 .build();
  35.         //3,如果是正式版发送模版消息,这里需要配置你的信息
  36.         //        templateMessage.addData(new WxMpTemplateData("name", "value", "#FF00FF"));
  37.         //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));
  38.         //填写变量信息,比如天气之类的
  39.         templateMessage.addData(new WxMpTemplateData("riqi", todayWeather.getString("date") + "  " + todayWeather.getString("week"), "#00BFFF"));
  40.         templateMessage.addData(new WxMpTemplateData("tianqi", todayWeather.getString("text_day"), "#00BFFF"));
  41.         templateMessage.addData(new WxMpTemplateData("low", todayWeather.getString("low") + "", "#7FFFD4"));
  42.         templateMessage.addData(new WxMpTemplateData("high", todayWeather.getString("high") + "", "#FF6347"));
  43.         templateMessage.addData(new WxMpTemplateData("fengxiang", todayWeather.getString("wd_day") + "", "#8A2BE2"));
  44.         templateMessage.addData(new WxMpTemplateData("fengli", todayWeather.getString("wc_day") + "", "#8B0000"));
  45.         templateMessage.addData(new WxMpTemplateData("caihongpi", CaiHongPi.getCaiHongPi(), "#FF69B4"));
  46.         templateMessage.addData(new WxMpTemplateData("lianai", JiNianRi.getLianAi() + "", "#FF1493"));
  47.         templateMessage.addData(new WxMpTemplateData("shengri", JiNianRi.getShengRi() + "", "#FFA500"));
  48.         templateMessage.addData(new WxMpTemplateData("jinju", CaiHongPi.getJinJu() + "", "#C71585"));
  49.         templateMessage.addData(new WxMpTemplateData("jiehun", JiNianRi.getJieHun() + ""));
  50.         String beizhu = "";
  51.         if (JiNianRi.getJieHun() % 365 == 0) {
  52.             beizhu = "今天是结婚纪念日!";
  53.         }
  54.         if (JiNianRi.getLianAi() % 365 == 0) {
  55.             beizhu = "今天是恋爱纪念日!";
  56.         }
  57.         templateMessage.addData(new WxMpTemplateData("beizhu", beizhu, "#FF0000"));
  58.         try {
  59.             System.out.println(templateMessage.toJson());
  60.             System.out.println(wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage));
  61.         } catch (Exception e) {
  62.             System.out.println("推送失败:" + e.getMessage());
  63.             e.printStackTrace();
  64.         }
  65.     }
  66. }
复制代码
 二、注册微信测试账号,并实现推送功能

1.微信扫码登录下面网址https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login扫码登录成功后,就会给我们生成微信公号的appid和appsecret。

 2.微信扫码关注 测试号二维码,微信给我们返回我们的openid,这个openid在推送时特别重要。因为你推送肯定要知道推送给 谁啊,就比如你打电话,肯定要知道用户的电话号码吧。这个openid就是我们要推送给那个用户的唯一标示。

3.生成自己的模板

参数需以{{开头,以.DATA}}结尾 ,ex:{{caihongpi.DATA}},代码内里替换就可以了
  1. templateMessage.addData(new WxMpTemplateData("caihongpi",CaiHongPi.getCaiHongPi(),"#FF69B4"));
复制代码
 4.拿到模板id,用户微信号id,就可以推送消息了
三、丰富功能

1.接入百度气候api

控制台 | 百度地图开放平台 (baidu.com)
注册百度开发者,申请开放百度气候的api。具体如何接入网上教程许多,可以自行百度
1、创建应用

2、在设置中设白名单

2.接入彩虹屁的api或者自己开发一个彩虹屁库

彩虹屁的api:天行数据TianAPI - 开发者API数据平台
网上有一些调用彩虹屁库的api,或者自己写一堆情话放在文件里,读取到内存里,用当前的天数取模就可以了。也可以选择早安心语。


 申请接口即可使用

3.怀念日计算
这里写了个粗略的计算方法,计算另有多少天。
  1. public static int before(String date) {
  2.         int day = 0;
  3.         try {
  4.             long time = simpleDateFormat.parse(date).getTime() - System.currentTimeMillis();
  5.             day = (int) (time / 86400000L);
  6.         } catch (ParseException e) {
  7.             e.printStackTrace();
  8.         }
  9.         return day;
  10.     }
复制代码
 计算已经已往多少天。
  1. /**
  2.      * 已经过去date多少天
  3.      * @param date
  4.      * @return
  5.      */
  6.     public static int after(String date) {
  7.         int day = 0;
  8.         try {
  9.             long time = System.currentTimeMillis() - simpleDateFormat.parse(date).getTime();
  10.             day = (int) (time / 86400000L);
  11.         } catch (ParseException e) {
  12.             e.printStackTrace();
  13.         }
  14.         return day;
  15.     }
复制代码
4.定时使命
写个定时使命天天早上8点起床的时间推送
  1.   @Scheduled(cron = "0 0 8 * * ?")
  2.     public void goodMorning() {
  3.         Pusher.push(openId);
  4.     }
复制代码
写个定时使命提醒该喝水啦,从10-18点,每个小时发送一次
  1. @Scheduled(cron = "0 0 10-18/1 * * ?")
  2.     public void goodLook() {
  3.         Pusher.push(openId);
  4.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表