<?php
// +----------------------------------------------------------------------
// | [ WE CAN DO IT MORE SIMPLE  ]
// +----------------------------------------------------------------------
// | Copyright (c) 2018-2020 rights reserved.
// +----------------------------------------------------------------------
// |
// +----------------------------------------------------------------------
// | Date: 2020-08-25 17:23
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace app\system\controller;

use app\BaseViewController;
use app\model\system\Admin as AdminModel;
use app\model\system\AdminMenu;
use app\Request;
use library\exceptions\GeneralException;
use library\lib\hupun;
use library\lib\weixina;
use library\services\UtilService;
use library\utils\Captcha;
use library\utils\Qiniu;
use think\facade\Db;

class Login extends BaseViewController
{

    /**
     * 后台登录
     * @param Request $request
     * @return mixed
     * @throws \Psr\SimpleCache\InvalidArgumentException
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function index(Request $request)
    {
        [$account, $pwd, $imgcode] = UtilService::getMore([
            ['account', '', 'empty', '请输入登录账户'],
            ['pwd', '', 'empty', '请输入登录密码'],
            ['imgcode', '', 'empty', '验证码不能为空'],
        ], $request, true);
        //验证码
        if (!(new Captcha)->check($imgcode)) {
               return app('json')->fail('验证码错误，请重新输入');
        }
        //获取登录
        $adminInfo = AdminModel::login($account, $pwd);
        if (empty($adminInfo)) {
            return app('json')->fail(AdminModel::getErrorInfo('用户名错误，请重新输入'));
        }
        //生成令牌
        $token = AdminModel::createToken($adminInfo, 'admin');
        if (empty($token)) {
            return app('json')->fail(AdminModel::getErrorInfo());
        }
        //获取管理菜单
        $menuMenu = new AdminMenu();
        [$menus, $paths] = $menuMenu->getRoute($adminInfo->role_id);
        return app('json')->success([
            'token'        => md5($token['token']),
            'expires_time' => $token['params']['exp'],
            'menus'        => $menus,
            'paths'        => $paths,
            'user_info'    => [
                'id'       => $adminInfo->getData('id'),
                'username' => $adminInfo->getData('username'),
                'name'     => $adminInfo->getData('name'),
                'avatar'   => $adminInfo->getData('avatar'),
            ],
        ]);
    }


    /**
     * 用户发生退出
     * @param Request $request
     */
    public function logut(Request $request)
    {
        echo 'a';
        var_dump($request->post());
        exit;
    }


    /**
     * 验证码
     * @return \app\adminapi\controller\Login|\think\Response
     */
    public function captcha()
    {
        return (new Captcha(["length"=>4]))->create();
    }

}