大屏-天气
This commit is contained in:
parent
edb974c3ce
commit
25a8f51223
@ -0,0 +1,26 @@
|
||||
package cn.iocoder.yudao.module.datacenter.controller.admin.weather;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.datacenter.controller.admin.weather.vo.WeatherInfoVO;
|
||||
import cn.iocoder.yudao.module.datacenter.utlis.GoodWeatherUtil;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Description 大屏服务-天气接口
|
||||
*/
|
||||
@Tag(name = "大屏服务 - 天气接口")
|
||||
@RestController
|
||||
@RequestMapping("/h5/weather")
|
||||
@Validated
|
||||
public class WeatherApi {
|
||||
@GetMapping(value = "/getWeather")
|
||||
public CommonResult<WeatherInfoVO> getWeather(String cityCode) {
|
||||
String weatherData = GoodWeatherUtil.getWeatherData(cityCode);
|
||||
WeatherInfoVO weatherInfo = GoodWeatherUtil.GetWeather(weatherData);
|
||||
return CommonResult.success(weatherInfo);
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package cn.iocoder.yudao.module.datacenter.controller.admin.weather.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Description 天气数据实体
|
||||
*/
|
||||
@Data
|
||||
public class WeatherInfoVO {
|
||||
private String weatherInfo;//天气
|
||||
private Integer temperature;//气温
|
||||
private String ultravioletRay;//紫外线
|
||||
private String visibility;//能见度
|
||||
private String typhoonInfo;//台风信息
|
||||
private String windPower;//风力
|
||||
private String windDirection;//风向
|
||||
}
|
@ -0,0 +1,163 @@
|
||||
package cn.iocoder.yudao.module.datacenter.utlis;
|
||||
|
||||
import cn.iocoder.yudao.module.datacenter.controller.admin.weather.vo.WeatherInfoVO;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* 获取天气数据
|
||||
*/
|
||||
|
||||
public class GoodWeatherUtil {
|
||||
|
||||
//高德地图
|
||||
private static final String WEATHER_SERVICES_URL = "https://restapi.amap.com/v3/weather/weatherInfo?city=";
|
||||
private static final String WEATHER_KEY = "&key=172993e9541be0a4f824feedeb210b7e";
|
||||
|
||||
//和风天气
|
||||
private static final String WEATHER_SERVICES_URL2 = "https://geoapi.qweather.com/v2/city/lookup?";
|
||||
private static final String LOCATION = "location="; //区县名称
|
||||
private static final String ADM = "&adm="; //城市名称
|
||||
private static final String PRIVATE_KEY = "&key=1c0db79d181441258030a633197fb429";
|
||||
|
||||
|
||||
|
||||
public static String getWeatherData(String cityCode){
|
||||
int codelength = cityCode.length();
|
||||
if (6 != codelength){
|
||||
return "500";
|
||||
}
|
||||
StringBuffer sb = new StringBuffer();
|
||||
try {
|
||||
String weather_url = WEATHER_SERVICES_URL+cityCode+WEATHER_KEY;
|
||||
URL url = new URL(weather_url);
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
connection.setRequestProperty("Charset", "utf-8");
|
||||
connection.connect();
|
||||
//读取URL的响应
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null)
|
||||
sb.append(line + " ");
|
||||
reader.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 将JSON格式数据进行解析 ,返回一个weather对象
|
||||
*/
|
||||
public static WeatherInfoVO GetWeather(String weatherInfobyJson) {
|
||||
if ("500".equals(weatherInfobyJson)){
|
||||
return null;
|
||||
}
|
||||
|
||||
JSONObject dataOfJson = JSONObject.parseObject(weatherInfobyJson);
|
||||
System.out.println(dataOfJson);
|
||||
//创建WeatherInfo对象,提取所需的天气信息
|
||||
WeatherInfoVO weatherInfoVO = new WeatherInfoVO();
|
||||
|
||||
//从json数据中提取数据
|
||||
JSONArray forecasts = dataOfJson.getJSONArray("lives");
|
||||
JSONObject weather = forecasts.getJSONObject(0);
|
||||
|
||||
// 取得当天的天气信息
|
||||
weatherInfoVO.setWeatherInfo(weather.getString("weather"));
|
||||
|
||||
// 设置气温
|
||||
String temperature = weather.getString("temperature");
|
||||
weatherInfoVO.setTemperature(Integer.parseInt(temperature));
|
||||
|
||||
//设置风力信息
|
||||
String windPower = weather.getString("windpower");
|
||||
weatherInfoVO.setWindPower(windPower);
|
||||
|
||||
//设置风向信息
|
||||
String windDirection = weather.getString("winddirection");
|
||||
weatherInfoVO.setWindDirection(windDirection);
|
||||
|
||||
return weatherInfoVO;
|
||||
}
|
||||
|
||||
//
|
||||
// public static String getWeatherDataHF(String areaName,String cityName){
|
||||
// if (areaName == null && cityName == null){
|
||||
// return "500";
|
||||
// }
|
||||
// StringBuffer sb = new StringBuffer();
|
||||
// try {
|
||||
// String weather_url = WEATHER_SERVICES_URL2+LOCATION+areaName+ADM+cityName+PRIVATE_KEY;
|
||||
// URL url = new URL(weather_url);
|
||||
// HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
// connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
// connection.setRequestProperty("Charset", "utf-8");
|
||||
// connection.connect();
|
||||
// //读取URL的响应
|
||||
// BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
|
||||
// String line = null;
|
||||
// while ((line = reader.readLine()) != null)
|
||||
// sb.append(line + " ");
|
||||
// reader.close();
|
||||
// }catch (Exception e){
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// return sb.toString();
|
||||
// }
|
||||
|
||||
/*
|
||||
* 将JSON格式数据进行解析 ,返回一个weather对象
|
||||
*/
|
||||
// public static String GetWeatherHF(String weatherInfobyJson) {
|
||||
// if ("500".equals(weatherInfobyJson)){
|
||||
// return null;
|
||||
// }
|
||||
// JSONObject dataOfJson = JSONObject.parseObject(weatherInfobyJson);
|
||||
// System.out.println(dataOfJson);
|
||||
// //创建WeatherInfo对象,提取所需的天气信息
|
||||
// WeatherInfoVO weatherInfoVO = new WeatherInfoVO();
|
||||
//
|
||||
// //从json数据中提取数据
|
||||
// JSONArray location = dataOfJson.getJSONArray("location");
|
||||
// JSONObject weather = location.getJSONObject(0);
|
||||
//
|
||||
// // 取得当天的天气信息
|
||||
// weatherInfoVO.setWeatherInfo(weather.getString("weather"));
|
||||
//
|
||||
// // 设置气温
|
||||
// String temperature = weather.getString("temperature");
|
||||
// weatherInfoVO.setTemperature(Integer.parseInt(temperature));
|
||||
//
|
||||
// //设置风力信息
|
||||
// String windPower = weather.getString("windpower");
|
||||
// weatherInfoVO.setWindPower(windPower);
|
||||
//
|
||||
// //设置风向信息
|
||||
// String windDirection = weather.getString("winddirection");
|
||||
// weatherInfoVO.setWindDirection(windDirection);
|
||||
//
|
||||
// return weatherInfoVO;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
public static void main(String [] args) {
|
||||
String weatherData = GoodWeatherUtil.getWeatherData("360730");
|
||||
|
||||
|
||||
WeatherInfoVO weatherInfoVO = GoodWeatherUtil.GetWeather(weatherData);
|
||||
|
||||
System.out.println(weatherInfoVO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user