<?php
/**
 * Created by PhpStorm.
 * User: YRF
 * Date: 2024/6/13
 * Time: 14:12
 */

namespace app\api\controller\v6;
//允许所有的跨域请求
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: *");
header('Access-Control-Allow-Methods: POST,GET,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
date_default_timezone_set('PRC');


use app\common\controller\Api;
use think\Db;
use fast\Http;
use think\Request;

//无人机相关,调用saas的开放api
class Fly extends Api
{
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['*'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['*'];
    protected $baseUrl = "https://flycloud.tenyes.cn";
    protected $AppKey = "flyCloud_21207808";
    protected $AppSecret = "7f59d21bd34ab50815fe1bc915f10cd1";//"0eeb4c061cdf2052137101e5eec104cf";

    //获得最新1张全景图
    public function getpano()
    {
        $data = $this->request->param();
        $url = $this->baseUrl . '/project/getOneNewPanoShot';

        $res = Http::post($url, $data);

        $res = json_decode($res, true);
        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    /**
     * 获得token
     */
    public function getToken()
    {
        //获得token
        $token = Db::name('fly_token')
            ->order('id desc')
            ->where(['id' => 1])
            ->value('token');

        //判断token是否过期
        $row = false;
        if (!empty($token)) {
            $row = $this->tokenCheck($token);
            if ($row == true) {
                $this->success("获取成功", $token);
            }
        }
        if (empty($token) || $row == false) {
            //获得新token
            $tokenNew = $this->uptoken();
            if (!empty($tokenNew)) {
                //更新token
                $to['token'] = $tokenNew;
                $to['createtime'] = time();
                if (empty($token)) {
                    Db::name('fly_token')->insertGetId($to);
                } else {
                    Db::name('fly_token')->where(['id' => 1])->update($to);
                }
                $this->success("获取成功", $tokenNew);
            } else {
                $this->error("获取失败");
            }
        }
    }

    //获得新token
    protected function uptoken()
    {
        $url = $this->baseUrl . '/openapi/v1/getToken';

        $data['AppKey'] = $this->AppKey;
        $data['AppSecret'] = $this->AppSecret;
        $res = Http::post($url, $data);

        $res = json_decode($res, true);
        if ($res['code'] == 200) {
            return $res['data']['data'];
        } else {
            return '';
        }
    }

    //判断token是否过期
    protected function tokenCheck($authorization)
    {
        $data = [];
        $url = $this->baseUrl . '/openapi/v1/tokenGetUserInfo';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 按token获得用户信息
     */
    public function getUserInfo()
    {
        $data = $this->request->param();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/tokenGetUserInfo';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);
        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    //获得组织下的设备列表
    public function getDeviceList()
    {
        $data = $this->request->param();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/getOrgDeviceList';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);
        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    //获得机场直播
    public function getDockLive()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/dockLiveStart';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);
        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    //获得飞机直播
    public function getAirLive()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/airLiveStart';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    //获得机顶直播
    public function getAirTopLive()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/airTopLiveStart';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    /**
     * 获得媒体分类信息统计
     */
    public function getMediaCount()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/apiMediaCount_app';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    /**
     * 按分类获得媒体列表
     */
    public function getCatsMediaList()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/apiGetTypeMedia_app';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    /**
     * 获得航线列表
     *
     */
    public function getFightfileList()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/getFightfileList';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    /***
     *
     * 获得航线航点详情
     * /openapi/v1/apiGetRoutean
     */
    public function getRoutean()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/apiGetRoutean';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    //创建计划
    public function createPlan()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/apiCreatePlan';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }

    // 一键返航
    public function goHome()
    {
        $data = $this->request->getContent();
        $authorization = $this->request->header('Authorization');
        $url = $this->baseUrl . '/openapi/v1/apiGohome';

        $res = Http::postHeader($url, $data, [], $authorization);

        $res = json_decode($res, true);

        if ($res['code'] == 200) {
            $this->success("获取成功", $res['data']);
        } else {
            $this->error($res['msg']);
        }
    }


}