Weatherwarning.php 5.0 KB
<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;

/**
 * 首页接口
 */
class Weatherwarning extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];
    protected $url = "https://api.caiyunapp.com/";
    /**
     * 天气预警计划任务
     * @return void
     */
    public function weatherwarning(){
        //查询需要检测点
        $detectionaddress=Db::name("detectionaddress")->select();
        foreach ($detectionaddress as $k=>$v){
            $url="v2.6/HQi1gyemirzw5Nfd/".$v['lng'].','.$v['lat']."/realtime?alert=true";
            $res=send_post($this->url.$url,[],'GET');
            $res=json_decode($res,true);
            if($res['result']['alert']['content']){
                foreach ($res['result']['alert']['content'] as $ks=>$vs){
                    $warning_grade=substr($res['result']['alert']['content'][$ks]['code'],'2',2);//截取预警等级
                    $res['result']['alert']['content'][$ks]['code'];
                    $data=[
                        'detectionaddress_id'=>$detectionaddress[$k]['id'],
                        'warning_grade'=>$warning_grade,
                        'describe'=>$res['result']['alert']['content'][$ks]['description'],
                        'createtime'=>time()
                    ];
                    Db::name('weatherwarning')->insert($data);
                }
            }else{
                $data=[
                    'detectionaddress_id'=>$detectionaddress[$k]['id'],
                    'warning_grade'=>5,
                    'describe'=>"暂无天气预警信息",
                    'createtime'=>time()
                ];
                Db::name('weatherwarning')->insert($data);
            }
        }
        $this->success("天气预警成功");

    }

    /**
     * 获取最新一条天气信息
     * @return void
     */
    public function weatherinfo(){
        //瞬时信息
        $url="v2.6/HQi1gyemirzw5Nfd/103.72057,24.72441/hourly?hourlysteps=1";
        $res=send_post($this->url.$url,[],'GET');
        $res=json_decode($res,true);
        //天气现象
        if($res['result']['hourly']['skycon'][0]['value']=="CLEAR_DAY"){
            $data['skycon_value']="晴";
        }else if($res['result']['hourly']['skycon'][0]['value']=="CLEAR_NIGHT"){
            $data['skycon_value']="晴";
        }else if($res['result']['hourly']['skycon'][0]['value']=="PARTLY_CLOUDY_DAY"){
            $data['skycon_value']="多云";
        }else if($res['result']['hourly']['skycon'][0]['value']=="PARTLY_CLOUDY_NIGHT"){
            $data['skycon_value']="多云";
        }else if($res['result']['hourly']['skycon'][0]['value']=="CLOUDY"){
            $data['skycon_value']="阴";
        }else if($res['result']['hourly']['skycon'][0]['value']=="LIGHT_HAZE"){
            $data['skycon_value']="轻度雾霾";
        }else if($res['result']['hourly']['skycon'][0]['value']=="MODERATE_HAZE"){
            $data['skycon_value']="中度雾霾";
        }else if($res['result']['hourly']['skycon'][0]['value']=="HEAVY_HAZE"){
            $data['skycon_value']="重度雾霾";
        }else if($res['result']['hourly']['skycon'][0]['value']=="LIGHT_RAIN"){
            $data['skycon_value']="小雨";
        }else if($res['result']['hourly']['skycon'][0]['value']=="MODERATE_RAIN"){
            $data['skycon_value']="中雨";
        }else if($res['result']['hourly']['skycon'][0]['value']=="HEAVY_RAIN"){
            $data['skycon_value']="大雨";
        }else if($res['result']['hourly']['skycon'][0]['value']=="STORM_RAIN"){
            $data['skycon_value']="暴雨";
        }else if($res['result']['hourly']['skycon'][0]['value']=="FOG"){
            $data['skycon_value']="雾";
        }else if($res['result']['hourly']['skycon'][0]['value']=="LIGHT_SNOW"){
            $data['skycon_value']="小雪";
        }else if($res['result']['hourly']['skycon'][0]['value']=="MODERATE_SNOW"){
            $data['skycon_value']="中雪";
        }else if($res['result']['hourly']['skycon'][0]['value']=="HEAVY_SNOW"){
            $data['skycon_value']="大雪";
        }else if($res['result']['hourly']['skycon'][0]['value']=="STORM_SNOW"){
            $data['skycon_value']="暴雪";
        }else if($res['result']['hourly']['skycon'][0]['value']=="DUST"){
            $data['skycon_value']="浮尘";
        }else if($res['result']['hourly']['skycon'][0]['value']=="SAND"){
            $data['skycon_value']="沙尘";
        }else if($res['result']['hourly']['skycon'][0]['value']=="WIND"){
            $data['skycon_value']="大风";
        }
        $data['precipitation_value']=$res['result']['hourly']['precipitation'][0]['value'];
        $data['createtime']=time();
        $urlday="v2.6/HQi1gyemirzw5Nfd/103.72057,24.72441/daily?dailysteps=1";
        $resday=send_post($this->url.$urlday,[],'GET');
        $resday=json_decode($resday,true);
        $data['day_precipitation_value']=$resday['result']['daily']['precipitation'][0]['avg'];
        $res=Db::name("weatherinfo")->insert($data);
        $this->success("天气预报成功");
    }
}