Springboot整合forest獲取天氣資訊
阿新 • • 發佈:2021-02-09
技術標籤: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);
}
}