Login.php 3.0 KB
<?php


namespace app\api\controller;

use app\common\controller\Api;
use app\common\model\User as UserModel;
use app\common\model\UserToken;


/**
 * 登录接口
 */
class Login extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = '*';

    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * 登录接口
     *
     */
    public function index()
    {
        $this->success('');
    }


    /**
     * @ApiTitle    (登录接口-小程序登录)
     * @ApiSummary  (小程序登录)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/login/login_sign)
     * @ApiParams   (name="code", type="string", required=true, description="code")
     * @ApiParams   (name="mobile", type="int", required=true, description="用户手机号")
     * @ApiParams   (name="avatar", type="string", required=true, description="用户头像")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "token":"用户token"
    }
    })
     */
    public function login_sign()
    {
        $param = $this->request->param();
        //授权登录
        $ch = curl_init();
        $appid = "wx9fff7b42aede19e4";
        $secret = "97f23d67dc029b2b2244637e7b47bb8b";
        $code = $param['code'];
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        if ($output === FALSE) {
            echo "CURL Error:" . curl_error($ch);
        }
        curl_close($ch);
        $curl_result = json_decode($output, true);
        //把openid保存到数据库中
        $model = new UserToken();
        $model2 = new UserModel();
        $user = $model::get(['open_id' => $curl_result['openid']]);
        if (!$user) {
            $model->save(['open_id' => $curl_result['openid']]);
            $user2 = $model::get(['open_id' => $curl_result['openid']]);
            $model2->save(['user_id' => $user2['id']]);
        }
        $user_up = $model::get(['open_id' => $curl_result['openid']]);
        $model2->save(['avatar' => $param['avatar'], 'mobile' => $param['mobile']], ['id' => $user_up['id']]);
        $token = $this->request->token();
        $user_open = $model::get(['open_id' => $curl_result['openid']]);
        $model->save(['token' => $token], ['open_id' => $user_open['open_id']]);
        $return = [
            'token' => $token,
        ];
        $this->success('成功', $return);
    }
}