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

//use app\model\admin\Product;
use app\model\admin\Admin;
use app\model\admin\AdminMenu;
use app\Request;
use library\exceptions\GeneralException;
use library\lib\weixina;
use library\services\UtilService;
use library\utils\Captcha;
use library\utils\Qiniu;
use think\facade\Db;

class Login
{

    /**
     * 用户登录端
     * @param Request $request
     */
    public function index(Request $request)
    {
        [$account, $pwd, $imgcode] =  UtilService::getMore([
            ['account','','empty','请输入登录账户'],
            ['pwd','','empty','请输入登录密码'],
            ['imgcode','','empty','验证码不能为空'],
        ],$request,true);
        //当前站点信息(中间件获取)
        $site = $request->site;
        if (!(new Captcha)->check($imgcode)) {
            return app('json')->fail('验证码错误，请重新输入');
        }
        //获取登录
        $adminInfo = Admin::login($account,$pwd,$site['sassid']);
        if(empty($adminInfo)) {
            return app('json')->fail(Admin::getErrorInfo('用户名错误，请重新输入'));
        }
        //生成令牌
        $token = Admin::createToken($adminInfo, 'admin');
        if(empty($token)) {
            return app('json')->fail(Admin::getErrorInfo());
        }
        //获取管理菜单
        $menuMenu = new AdminMenu();
        $menuMenu->setSassId($site['sassid']);
        $menus = $menuMenu->getRoute($adminInfo->role_id);
        return app('json')->success([
            'token' => $token['token'],
            'expires_time' => $token['params']['exp'],
            'menus' => $menus,
            'user_info' => [
                'id'        => $adminInfo->getData('id'),
                'sassid'    => $adminInfo->getData('sassid'),
                'username'  => $adminInfo->getData('username'),
                'name'      => $adminInfo->getData('name'),
                'avatar'    => $adminInfo->getData('avatar')
            ],
        ]);
    }

    /**
     * 用户发生退出
     */
    public function logut(){

    }


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


}