前言
据说这个性能最近在抖音上很火,我没有抖音,没有看到。
然而我在掘金和CSDN上看了,相干案例的确很多,然而大家都是借助于了微信服务号,在我看来,成果很不佳。
其实我原来的初衷是这样的,每天定时给群里推送新闻,这个起因在之前的文章中也提到过,这边就不在细说了,而后实现了给群中推送之后,就想着,能不能每天给指定人发送音讯,网上搜了搜,果然有,各种实现形式形形色色,然而都没看上,于是就本人找了个,本人写。
网上案例
网上最多的可能就是利用微信服务号给推送信息,如图所示:

毛病如下:

须要点进去订阅号能力看到,没哟起到吸引的作用
申请的测试服务号,也不晓得多久过期,说停就给你停掉了
定制化的需要有的达不到

介于此,我就本人找了一个路子去做,昨晚刚写完,测了测,成果还是比拟不错的。如下图所示:

(有点肉麻~)
实现形式
上面咱们来看看是如何实现的。
筹备工作

注册智能微秘书账号,花20块钱开个会员(20块钱一点都不多)
注册天行数据的账号,申请三个接口(早安寄语、每日新闻、土味情话),也能够本人退出别的有意义的内容,间接申请接口就行。
筹备一个微信号,能够用你当初本人的,也能够在申请一个。
筹备一个服务器
筹备一个java我的项目,放服务器上跑就能够

倘若你的筹备工作除4、5之外,都曾经做完了,上面咱们来看看如何从代码层面来实现。
实现原理

调用天行数据的api,获取本人想要的数据,封装起来
调用只能微秘书的接口,实现给微信好友发送音讯
给控制器controller类中增加定时工作,实现定时发送

要害代码如下所示:

调用天行数据接口,获取早安寄语:

/**

 * 获取每日早安寄语 * */public static String getGoodMorning() {    String path = "zaoan/index";    //调用每日简报的接口    String body = HttpUtil            .createGet(Constants.TIAN_XING_API + path + "?key=" + TIAN_KEY)            .execute()            .body();    JSONObject jsonObjectResult = JSON.parseObject(body);    Integer code = jsonObjectResult.getInteger("code");    if (code != 200) {        log.error("申请每日新闻的接口出错,出错信息:" + body);        return "一切都是最好的安顿~";    }    log.info("申请每日新闻的接口胜利:" + body);    JSONObject resultObject = jsonObjectResult.getJSONObject("result");    return resultObject.getString("content");}

复制代码

调用天行数据接口,获取土味情话:

/**

 * 获取每日土味情话 * */public static String getLoveWords(){    String path = "saylove/index";    //调用每日简报的接口    String body = HttpUtil            .createGet(Constants.TIAN_XING_API + path + "?key=" + TIAN_KEY)            .execute()            .body();    JSONObject jsonObjectResult = JSON.parseObject(body);    Integer code = jsonObjectResult.getInteger("code");    if(code!=200){        log.error("申请每日新闻的接口出错,出错信息:"+body);        return "一切都是最好的安顿~";    }    JSONObject resultObject = jsonObjectResult.getJSONObject("result");    log.info("申请每日新闻的接口胜利:"+resultObject);    return resultObject.getString("content");}

复制代码

调用天行数据接口,获取天气预报:

/** * 获取天气预报 * */public static JSONObject getWeather(){    String path = "tianqi/index";    //调用每日简报的接口    String body = HttpUtil            .createGet(Constants.TIAN_XING_API + path + "?key=" + TIAN_KEY+"&type=1&city=370100")            .execute()            .body();    JSONObject jsonObjectResult = JSON.parseObject(body);    Integer code = jsonObjectResult.getInteger("code");    if(code!=200){        log.error("申请每日新闻的接口出错,出错信息:"+body);        return null;    }    return jsonObjectResult.getJSONObject("result");    /*    * {      "code": 200,      "msg": "success",      "result": {        "date": "2022-12-19",        "week": "星期一",        "province": "上海",        "area": "上海",        "areaid": "101020100",        "weather": "晴",        "weatherimg": "qing.png",        "weathercode": "qing",        "real": "3℃",        "lowest": "2℃",        "highest": "9℃",        "wind": "北风",        "windspeed": "0",        "windsc": "0级",        "sunrise": "06:47",        "sunset": "16:54",        "moonrise": "",        "moondown": "",        "pcpn": "0",        "uv_index": "0",        "aqi": "54",        "quality": "良",        "vis": "18",        "humidity": "48",        "alarmlist": [        ],        "tips": "晴天紫外线等级较高,外出留神补水防晒。天气凉,合适着一到两件羊毛衫、大衣、毛套装、皮夹克等春秋着装;年老体弱者宜着风衣加羊毛衫等厚型春秋着装。空气质量较好,能够参加各类户外活动。疫情防控不松散,出门请佩戴口罩。"          }        }    * */}

复制代码
日期解决要害代码

获取明天是周几

/**

 * 获取汉字的明天周几 * @param dateTime * @return * @throws ParseException */public static String getDaysByWeekChina(String dateTime) throws ParseException {    Calendar cal = Calendar.getInstance();    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    Date date = dateFormat.parse(dateTime);    cal.setTime(date);    int day = cal.get(Calendar.DAY_OF_WEEK);    day = day - 1;    //周的汉字    String week = "";    switch (day) {        case 0:            week = "日";            break;        case 1:            week = "一";            break;        case 2:            week = "二";            break;        case 3:            week = "三";            break;        case 4:            week = "四";            break;        case 5:            week = "五";            break;        case 6:            week = "六";            break;    }    return week;}

复制代码

获取纪念日的天数(两个日期之间的差):

/**

 * 失去二个日期间的距离天数 * * @param date1 * @param date2 * @return */public static int getDayByTwoDay(String date1, String date2) {    SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");    Long day = 0L;    try {        java.util.Date date = myFormatter.parse(date1);        java.util.Date mydate = myFormatter.parse(date2);        day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);    } catch (Exception e) {        return 0;    }    return day.intValue();}

复制代码
实现给指定微信好友推送音讯

/** * 每天将指定信息推送到微信集体 */@Overridepublic void sendWechatToUser() {    String url = WEI_MI_SHU_API + "/openapi/v1/chat/contact";    WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO();    //发送文字信息    weiZhiMiShuVO.setType(1);    try {        //拿到发送的音讯列表        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");        SimpleDateFormat format_h = new SimpleDateFormat("yyyy-MM-dd");        //明天的日期        String toDate = format_h.format(new Date());        //相恋的日期        String lian = "2022-03-28";        //两个日期相差的天数        int cha = DateUtils.getDayByTwoDay(toDate, lian);        String todayDate = format.format(new Date());        //依据阳历计算农历        Calendar today = Calendar.getInstance();        String week = DateUtils.getDaysByWeekChina(toDate);        today.setTime(DateUtils.chineseDateFormat.parse(todayDate));        DateUtils lunar = new DateUtils(today);        String nongli = lunar.toString();        nongli = nongli.substring(nongli.indexOf("年") + 1);        StringBuilder sb = new StringBuilder();        sb.append("敬爱的老婆~早\n\n")                .append("充满希望的一天又开始了,明天也要始终开心,不能生我气气~")                .append("\n\n明天是:")                .append(todayDate)                .append(",星期")                .append(week)                .append(",农历")                .append(nongli)                .append("\n")                .append("是咱们相爱的第:")                .append(cha)                .append("天")                .append("\n\n")        ;        JSONObject tianqiObject = TianXingApiUtil.getWeather();        sb.append("目前济南天气:")                .append(tianqiObject.getString("weather"))                .append("\n")                .append("以后气温:")                .append(tianqiObject.getString("real"))                .append("\n")                .append("明天最高温度:")                .append(tianqiObject.getString("highest"))                .append("\n")                .append("最低温度:")                .append(tianqiObject.getString("lowest"))                .append("\n")                .append("风向:")                .append(tianqiObject.getString("wind"))                .append("\n")                .append("空气质量:")                .append(tianqiObject.getString("quality"))                .append("\n")                .append("空气质量指数:")                .append(tianqiObject.getString("aqi"))                .append("\n")                .append("小提示:")                .append(tianqiObject.getString("tips"));        //土味情话        sb.append("\n\n")                .append("爱你一日言:")                .append(TianXingApiUtil.getLoveWords())                .append("\n\n【早安寄语】")                .append(goodMorning());        weiZhiMiShuVO.setContent(sb.toString());        for (String str : SEND_USER) {            JSONObject object = new JSONObject();            object.put("apiKey", WEI_MI_SHU_KEY);            //好友昵称            object.put("name", str);            //好友备注            object.put("alias", str);            object.put("message", weiZhiMiShuVO);            String body = HttpUtil.createPost(url)                    .body(JSON.toJSONString(object))                    .execute()                    .body();            System.out.println("传递的参数是:" + JSON.toJSONString(object));            System.out.println("发送胜利了吗?" + body);        }    } catch (ParseException e) {        e.printStackTrace();    }}

复制代码
阐明:

WeiZhiMiShuVO 类能够参考文章:java实现给微信群中定时推送音讯
代码中波及到的常量,都放在了常量类中,SEND_USER是要发给微信好友的好友昵称,不是备注哈。
智能微秘书接口地址:接口地址

而后咱们在控制器controller中调用该办法即可实现:
/**

 * 发送音讯给指定的人 */@GetMapping(value = "/sendWechatToUser")@Scheduled(cron ="0 0 8 * * ?")public void sendWechatToUser(){    articleService.sendWechatToUser();}

复制代码
cron ="0 0 8 ?是一个corn表达式,示意每天早上8点给指定的微信好友推送音讯。作者:穆雄雄链接:https://juejin.cn/post/717988...起源:稀土掘金著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。