Token.php 2.0 KB
<?php

namespace addons\jiangxingapi\controller;

use app\common\controller\Api;
use think\addons\Controller;
use think\Db;
use think\exception\ErrorException;

class Token extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * 获取token
     */
    public function gettoken(){
        $appkey = $this->request->param("appkey");
        $appsecret = $this->request->param("appsecret");
        //判断参数
        if(empty($appkey)){
            $this->error("appkey不能为空");
        }
        if(empty($appsecret)){
            $this->error("appsecret不能为空");
        }
        //查询token
        $res=Db::name("jxapi_jxtoken")
            ->where("appkey",$appkey)
            ->where("appsecret",$appsecret)
            ->find();
        if(empty($res)){
            $this->error("appkey或appsecret错误");
        }
        //判断token是否过期
        if($res['expiretime']<time()){
            //过期重新生成
            $res=$this->createtoken($res["id"],$appkey,$appsecret);
            //重新获取
            $res=Db::name("jxapi_jxtoken")
                ->where("id",$res)
                ->find();
        }
        $data=[
            'appkey'=>$appkey,
            'appsecret'=>$appsecret,
            'token'=>$res['token']
        ];
        $this->success("请求成功",$data);
    }

    /**
     * 创建token
     * @return void
     */
    public function createtoken($id,$appkey,$appsecret){
        $time=time();
//        $appkey=rand(42323456,99999999);
//        $appsecret=md5($appkey.$time);
        $token=md5($appkey.$appsecret.$time);
        $expiretime = strtotime(date('Y-m-d', $time) . ' +1 month');
        $data=[
            "appkey"=>$appkey,
            "appsecret"=>$appsecret,
            "token"=>$token,
            "createtime"=>$time,
            "expiretime"=>$expiretime,
        ];
        $res=Db::name("jxapi_jxtoken")->where("id",$id)->update($data);
        return $res;
    }
}