日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

據說這個功能最近在抖音上很火,我沒有抖音,沒有看到。 但是我在掘金和CSDN上看了,相關案例確實很多,但是大家都是借助于了微信服務號,在我看來,效果很不佳。

其實我原來的初衷是這樣的,每天定時給群里推送新聞,這個原因在之前的文章中也提到過,這邊就不在細說了,然后實現了給群中推送之后,就想著,能不能每天給指定人發送消息,網上搜了搜,果然有,各種實現方式五花八門,但是都沒看上,于是就自己找了個,自己寫。

網上案例

網上最多的可能就是利用微信服務號給推送信息,如圖所示:

 


 

缺點如下:

  • 需要點進去訂閱號才能看到,沒喲起到吸引的作用
  • 申請的測試服務號,也不知道多久過期,說停就給你停掉了
  • 定制化的需求有的達不到

介于此,我就自己找了一個路子去做,昨晚剛寫完,測了測,效果還是比較不錯的。如下圖所示:

 

(有點肉麻~)

實現方式

下面我們來看看是如何實現的。

準備工作

  1. 注冊智能微秘書賬號,花20塊錢開個會員(20塊錢一點都不多)
  2. 注冊天行數據的賬號,申請三個接口(早安寄語、每日新聞、土味情話),也可以自己加入別的有意義的內容,直接申請接口就行。
  3. 準備一個微信號,可以用你現在自己的,也可以在申請一個。
  4. 準備一個服務器
  5. 準備一個JAVA項目,放服務器上跑就可以

假使你的準備工作除4、5之外,都已經做完了,下面我們來看看如何從代碼層面來實現。

實現原理

  • 調用天行數據的api,獲取自己想要的數據,封裝起來
  • 調用只能微秘書的接口,實現給微信好友發送消息
  • 給控制器controller類中添加定時任務,實現定時發送

關鍵代碼如下所示:

  1. 調用天行數據接口,獲取早安寄語:
/**
     * 獲取每日早安寄語
     *
     */
    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");
    }
復制代碼
  1. 調用天行數據接口,獲取土味情話:
/**
     * 獲取每日土味情話
     *
     */
    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");
    }
復制代碼
  1. 調用天行數據接口,獲取天氣預報:

    /**
     * 獲取天氣預報
     *
     */
    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": "晴天紫外線等級較高,外出注意補水防曬。天氣涼,適宜著一到兩件羊毛衫、大衣、毛套裝、皮夾克等春秋著裝;年老體弱者宜著風衣加羊毛衫等厚型春秋著裝??諝赓|量較好,可以參與各類戶外活動。疫情防控不松懈,出門請佩戴口罩。"
              }
            }
        * */
    }
復制代碼

日期處理關鍵代碼

  1. 獲取今天是周幾
 /**
     * 獲取漢字的今天周幾
     * @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;
    }
復制代碼
  1. 獲取紀念日的天數(兩個日期之間的差):

 /**
     * 得到二個日期間的間隔天數
     *
     * @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();
    }
復制代碼

實現給指定微信好友推送消息


    /**
     * 每天將指定信息推送到微信個人
     */
    @Override
    public 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("親愛的老婆~早nn")
                    .append("充滿希望的一天又開始了,今天也要一直開心,不能生我氣氣~")
                    .append("nn今天是:")
                    .append(todayDate)
                    .append(",星期")
                    .append(week)
                    .append(",農歷")
                    .append(nongli)
                    .append("n")
                    .append("是我們相愛的第:")
                    .append(cha)
                    .append("天")
                    .append("nn")

            ;
            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("nn")
                    .append("愛你一日言:")
                    .append(TianXingApiUtil.getLoveWords())
                    .append("nn【早安寄語】")
                    .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();
        }
    }

復制代碼

說明:

  1. WeiZhiMiShuVO 類可以參考文章:java實現給微信群中定時推送消息
  2. 代碼中涉及到的常量,都放在了常量類中,SEND_USER是要發給微信好友的好友昵稱,不是備注哈。
  3. 智能微秘書接口地址:接口地址

然后我們在控制器controller中調用該方法即可實現:

/**
     * 發送消息給指定的人
     */

    @GetMapping(value = "/sendWechatToUser")
    @Scheduled(cron ="0 0 8 * * ?")
    public void sendWechatToUser(){
        articleService.sendWechatToUser();
    }

復制代碼

cron ="0 0 8 * * ?是一個corn表達式,表示每天早上8點給指定的微信好友推送消息。


作者:穆雄雄
鏈接:
https://juejin.cn/post/7179886787706224695
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

分享到:
標簽:Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定