<?php
namespace app\api\controller\screen;
use app\hander\HelpHander;
use think\Controller;
use think\Db;
use think\Exception;
/**
* 天气接口
*/
class Weather extends Controller
{
//根据ip 获取城市
public function address() {
$getIp = request()->ip();//获取真实IP
$url = "http://apis.juhe.cn/ip/ipNewV3";
$param = [
"key" => "40d20d107ede1653b5c3260d639362e3",
"ip" => $getIp
];
$content = $this->juheHttpRequest($url,$param);
$address = json_decode($content);
$address = $address->result;
$return['province'] = $address->Province;//省份
$return['city'] = $address->City;//城市
$return['district'] = $address->District;//区
return $return;
}
//根据城市获取当天天气
public function getTodayWeather(){
try {
// 请求的接口URL
$apiUrl = 'http://apis.juhe.cn/simpleWeather/query';
// 请求参数
$addr = $this->address();
$params = [
'city' => $addr['city'], // 要查询的城市
'key' => config('app.weather_key')
];
$paramsString = http_build_query($params);
// 发起接口网络请求
$response = $this->juheHttpRequest($apiUrl, $paramsString , 1);
$result = json_decode($response, true);
$data = [];
if($result){
$temperature = '';
if($result['result']['realtime']['temperature']){
$temperature =$result['result']['realtime']['temperature'].'℃';
}
$wid = $result['result']['realtime']['wid'];
$data = [
'city'=>$addr['city'],
'direct'=>$result['result']['realtime']['info'],
'temperature'=>$temperature,
'img'=>config("app.app_host").'/admin/weather/'.$wid.'.png',
];
}
HelpHander::success($data);
}catch (Exception $e){
HelpHander::success($data = [
'city'=>'',
'direct'=>'',
'temperature'=>'',
'img'=>''
]);
}
}
/**
* 发起网络请求函数
* @param $url 请求的URL
* @param bool $params 请求的参数内容
* @param int $ispost 是否POST请求
* @return bool|string 返回内容
*/
function juheHttpRequest($url, $params = false, $ispost = 0)
{
$httpInfo = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 12);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_PROXY, 'http://10.10.134.94:3128');
if ($ispost) {
curl_setopt($ch, CURLOPT_POST, true);
if($params){
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
curl_setopt($ch, CURLOPT_URL, $url);
} else {
if ($params) {
curl_setopt($ch, CURLOPT_URL, $url.'?'.http_build_query($params));
} else {
curl_setopt($ch, CURLOPT_URL, $url);
}
}
$response = curl_exec($ch);
if ($response === FALSE) {
// echo "cURL Error: ".curl_error($ch);
return false;
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$httpInfo = array_merge($httpInfo, curl_getinfo($ch));
curl_close($ch);
return $response;
}
}