1. 程式人生 > 其它 >Springboot整合forest獲取天氣資訊

Springboot整合forest獲取天氣資訊

技術標籤:springbootjavaspring boot

Springboot整合forest獲取天氣資訊

匯入依賴

        <dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>spring-boot-starter-forest</artifactId>
            <version>1.4.0</version>
        </dependency>

註冊彩雲科技

彩雲科技平臺註冊地址
在這裡插入圖片描述
等稽核通過後得到令牌

建立獲取天氣的介面

這裡需要先註冊有些彩雲科技,通過第三方api來獲取實時天氣;

@Repository
public interface MyClient {
   // localtion是指目標地址的經度和緯度
    @Get(url = "http://api.caiyunapp.com/v2.5/你的令牌/${localtion}/realtime.json")
    Map getWeather(@DataVariable("localtion")String localhost);
}

編寫service呼叫程式碼

@Scheduled(cron = "0 0 0/2 * * ?") //設定定時任務,執行方法
    public ResponseWrapper updateWeather(){
        List<Scenic> scenicList = scenicMapper.selectList(null); //從資料庫獲取景區經緯度
        for (Scenic scenic :scenicList){
            String localtion = scenic.getScenicLongitude()+","
+scenic.getScenicLatitude(); //獲取目標地方的經緯度 Map weather = myClient.getWeather(localtion); //傳入經緯度,然後查詢實時天氣 Map result = (Map) weather.get("result"); Map realtime = (Map) result.get("realtime"); String temperature = realtime.get("temperature").toString();//獲取溫度 String skycon = realtime.get("skycon").toString(); //獲取下雨或者晴天的資訊 String skycons = null; if (skycon.equals("CLEAR_DAY")){ skycons="晴(白天)"; }else if (skycon.equals("CLEAR_NIGHT")){ skycons="晴(夜間)"; } else if (skycon.equals("PARTLY_CLOUDY_DAY")){ skycons="多雲(白天)"; } else if (skycon.equals("PARTLY_CLOUDY_NIGHT")){ skycons="多雲(夜間)"; } else if (skycon.equals("CLOUDY")){ skycons="陰"; } else if (skycon.equals("LIGHT_HAZE")){ skycons="輕度霧霾"; } else if (skycon.equals("MODERATE_HAZE")){ skycons="中度霧霾"; } else if (skycon.equals("HEAVY_HAZE")){ skycons="重度霧霾"; } else if (skycon.equals("LIGHT_RAIN")){ skycons="小雨"; } else if (skycon.equals("MODERATE_RAIN")){ skycons="中雨"; } else if (skycon.equals("HEAVY_RAIN")){ skycons="大雨"; } else if (skycon.equals("STORM_RAIN")){ skycons="暴雨"; } else if (skycon.equals("FOG")){ skycons="霧"; } else if (skycon.equals("LIGHT_SNOW")){ skycons="小雪"; } else if (skycon.equals("MODERATE_SNOW")){ skycons="中雪"; } else if (skycon.equals("HEAVY_SNOW")){ skycons="大雪"; } else if (skycon.equals("STORM_SNOW")){ skycons="暴雪"; } else if (skycon.equals("DUST")){ skycons="浮塵"; } else if (skycon.equals("SAND")){ skycons="沙塵"; } else if (skycon.equals("WIND")){ skycons="大風"; } String weathers = temperature.substring(0,temperature.indexOf(".")) + "°C "+skycons; scenic.setWeather(weathers); scenicMapper.updateById(scenic); //將天氣資訊存入資料庫 } return null; }

開啟定時任務的主方法註解

@SpringBootApplication
@EnableScheduling //開啟定時任務
@ForestScan(basePackages = "com.tour.client") //掃描client
public class TourApplication {

    public static void main(String[] args) {
        SpringApplication.run(TourApplication.class, args);
    }

}