<?php

namespace app\api\controller;

use addons\epay\library\Service;
use app\admin\model\school\help\Cate;
use app\common\controller\Api;
use app\common\job\test\DemoJob;
use app\common\model\appointment\car\MockOrder;
use bw\UrlLock;
use think\Cache;

/**
 * 示例接口
 */
class Demo extends Api
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['test', 'test1','test2'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['test2'];

    /**
     * 测试方法
     *
     * @ApiTitle    (测试名称)
     * @ApiSummary  (测试描述信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/demo/test/id/{id}/name/{name})
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", required=true, description="会员ID")
     * @ApiParams   (name="name", type="string", required=true, description="用户名")
     * @ApiParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功'
        })
     */
    public function test()
    {
        \think\Queue::push(DemoJob::class, ["name"=>"hello world!"], "school");
        $this->success('返回成功', $this->request->param());
    }

    /**
     * 无需登录的接口
     *
     */
    public function test1()
    {

        try{

            $lock = new UrlLock(1,"mock-create-lock-suffix",120,"您的请求过于频繁，请您稍后再试！请求最大锁定间隔5秒/一次！");
            $lock->lock();
            //往缓存里取出数字
            $num =  cache('test');
            if(!$num){
                $num = 1;
                cache('test',$num);
            }else{
                $num++;
                cache('test',$num);
            }
            //数字加1
            //再存入缓存
             //再写入test.txt文件末尾（记得回车换行）
//            file_put_contents("test.txt",$num."\r\n",FILE_APPEND);

            // 实例对应的接口对象
            $scheme = new \WeMini\Total(Service::wechatConfig());
            $res=  $scheme->create($q_params);


        }catch (\Throwable $e){
            $lock->free();
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件，一般做正式环境测试
            $this->error($e->getMessage());
        }
        $lock->free();

        $this->success('返回成功', ['action' => 'test1']);
    }

    /**
     * 需要登录的接口
     *
     */
    public function test2()
    {
        try{

            $lock = new UrlLock(1,"mock-create-lock-suffix",120,"您的请求过于频繁，请您稍后再试！请求最大锁定间隔5秒/一次！");
            $lock->lock();
            var_dump(time());
            sleep(5);
        }catch (\Throwable $e){
            $lock->free();
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件，一般做正式环境测试
            $this->error($e->getMessage());
        }
        $lock->free();

        $this->success('返回成功', ['action' => 'test1']);
    }

    /**
     * 需要登录且需要验证有相应组的权限
     *
     */
    public function test3()
    {
        $this->success('返回成功', ['action' => 'test3']);
    }

}
