Login.php 7.1 KB
<?php


namespace app\api\controller;

use app\common\controller\Api;
use app\common\model\User as UserModel;
use app\common\model\UserLevel;
use app\common\model\UserToken;
use think\Db;
use EasyWeChat;

/**
 * 登录接口
 */
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="openid", type="string", required=true, description="openid")
     * @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']]);
        }
        $user2 = $model::get(['open_id' => $curl_result['openid']]);
        $model::get(['open_id' => $curl_result['openid']]);
        $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,
            'openid' => $curl_result['openid'],
            'sessionkey' => $curl_result['session_key']
        ];
        if (!empty($param['openid']) || !($param['openid']) == '' || !($param['openid']) == "" || !($param['openid']) == null) {
            $father_user_id = Db::name('user_token')->where(['open_id' => $param['openid']])->find();
            $level_model = new UserLevel();
            $quchong = $level_model->where(['user_son_id' => $user['id']])->find();
            if (!$quchong) {
                if (!($father_user_id['id'] == $user2['id'])) {
                    $ress = $level_model->save(['user_id' => $father_user_id['id'], 'user_son_id' => $user2['id']]);
                    if (!$ress) {
                        $this->error('邀请失败');
                        die;
                    }
                    $is_login_user_yue = Db::name('yue')->where(['user_id' => $user2['id']])->find();
                    if (!$is_login_user_yue) {
                        Db::name('yue')->insert(['user_id' => $user2['id'], 'tixian_yes' => 0, 'tixian_no' => 0, 'createtime' => time(), 'updatetime' => time()]);
                    }
                    $this->success('成功', $return);
                }
            }
        }
        $is_login_user_yue = Db::name('yue')->where(['user_id' => $user2['id']])->find();
        if (!$is_login_user_yue) {
            Db::name('yue')->insert(['user_id' => $user2['id'], 'tixian_yes' => 0, 'tixian_no' => 0, 'createtime' => time(), 'updatetime' => time()]);
        }
        $this->success('成功', $return);
    }


    /**
     * @ApiTitle    (登录接口-头像微信名)
     * @ApiSummary  (头像微信名)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/login/is_save)
     * @ApiParams   (name="token", type="string", required=true, description="token")
     * @ApiParams   (name="avatar", type="string", required=true, description="微信头像")
     * @ApiParams   (name="nickname", 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':'返回成功',
    })
     */
    public function is_save()
    {
        $token['token'] = input('token');
        if (empty($token['token'])) {
            $this->error('请登陆后再操作!', '', '9');
        }
        $token_model = new UserToken();
        $user_id = $token_model::get(['token' => $token['token']])->toArray();
        if (!$user_id) {
            $this->error('Token不存在', '', '8');
        }
        $param = $this->request->param();
        $model = new UserModel();
        $is_save = $model->save(['avatar' => $param['avatar'], 'nickname' => $param['nickname']], ['user_id' => $user_id['id']]);
        if ($is_save) {
            $this->success('成功');
        } else {
            $this->error('失败');
        }
    }


    public function ceshi()
    {
        $param = $this->request->param();;
        //把openid保存到数据库中
        $model = new UserToken();
        $model2 = new UserModel();
        $user = $model::get(['open_id' => $param['openid1']]);
        if (!$user) {
            $model->save(['open_id' => $param['openid1']]);
            $user2 = $model::get(['open_id' => $param['openid1']]);
            $model2->save(['user_id' => $user2['id']]);
        }
        $model::get(['open_id' => $param['openid1']]);
        $token = $this->request->token();
        $user_open = $model::get(['open_id' => $param['openid1']]);
        $model->save(['token' => $token], ['open_id' => $user_open['open_id']]);
        $return = [
            'token' => $token,
            'openid' => $param['openid1']
        ];
        if (!empty($param['openid'])) {
            $father_user_id = Db::name('user_token')->where(['open_id' => $param['openid']])->find();
            $level_model = new UserLevel();
            $ress = $level_model->save(['user_id' => $father_user_id['id'], 'user_son_id' => $user2['id']]);
            if (!$ress) {
                $this->error('邀请失败');
                die;
            }
        }
        $this->success('成功', $return);
    }
}