Bind.php 7.96 KB
<?php

use Action\AbstractAction;
use LibModels\Wap\Passport\BindData;
use LibModels\Wap\Passport\RegData;
use Plugin\Helpers;

/**
 * 登录的控制器
 */
class BindController extends AbstractAction
{

    /**
     * 登录到bind页面
     */
    public function indexAction()
    {
        $refer = $this->get('refer');
        if (!empty($refer))
        {
            $this->setCookie('refer', $refer);
        }

        $this->setTitle('绑定手机号');
        
        $openId = $this->get('openId');
        $sourceType = $this->get('sourceType');
        $nickname = $this->get('nickname');
        $data = array(
            'bindIndex'=>true,//js标识
            'backUrl' => '/', // 返回的URL链接
            'showHeaderImg' => true, // 控制显示头部图片
            'isPassportPage' => true, // 模板中模块标识
            'sourceType' => $sourceType, // 第三方登录来源
            'platform'=>$sourceType,
            'openId' => $openId, // openId
            'areaCode'=>'+86',//默认区号
            'countrys'=>RegData::getAreasData(),//国别码
            'nickname' => $nickname, //昵称
        );

        // 渲染模板
        $this->_view->display('index', $data);
    }

    /**
     * 手机验证码页面
     */
    public function codeAction()
    {

        $this->setTitle('验证手机');
        $openId = $this->get('openId');
        $sourceType = $this->get('sourceType');
        $nickname = $this->get('nickname');
        $areaCode = $this->get('areaCode', '86');
        $isReg = $this->get('isReg');
        $phoneNum=$this->get('phoneNum');
        
        $data = array(
            'bindIndex'=>true,//js标识
            'backUrl' => '/', // 返回的URL链接
            'showHeaderImg' => true, // 控制显示头部图片
            'isPassportPage' => true, // 模板中模块标识
            'sourceType' => $sourceType, // 第三方登录来源
            'openId' => $openId, // openId
            'nickname' => $nickname, //昵称
            'isReg' => $isReg, //是否是已注册过的手机号
            'areaCode' => $areaCode,   //国别码
            'phoneNum'=>$phoneNum,//手机号码
        );

        // 渲染模板
        $this->_view->display('code', $data);
    }

    /**
     * 设置登录密码页面
     */
    public function passwordAction()
    {

        $this->setTitle('重新设置登录密码');
        $openId = $this->get('openId');
        $sourceType = $this->get('sourceType');
        $nickname = $this->get('nickname');
        $areaCode = $this->get('areaCode', '86');
        $data = array(
            'bindIndex'=>true,//js标识
            'backUrl' => '/', // 返回的URL链接
            'showHeaderImg' => true, // 控制显示头部图片
            'isPassportPage' => true, // 模板中模块标识
            'sourceType' => $sourceType, // 第三方登录来源
            'openId' => $openId, // openId
            'nickname' => $nickname, //昵称
            'areaCode' => $areaCode   //国别码
        );

        // 渲染模板
        $this->_view->display('password', $data);
    }

    //绑定前手机号校验
    public function bindCheckAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do
        {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax())
            {
                break;
            }

            $phoneNum = $this->post('phoneNum');
            $openId = $this->post('openId');
            $areaCode = $this->post('areaCode', '86');
            $sourceType = $this->post('sourceType');
            $nickname = $this->post('nickname');


            if (!is_numeric($phoneNum) || !$openId || !$areaCode || !$sourceType)
            {
                break;
            }

            $res = BindData::bindCheck($phoneNum, $openId, $sourceType);
            if (!isset($res['code']))
            {
                break;
            }
            if ($res['code'] == 200)
            {
                $next = Helpers::url('/passport/bind/code', array('isReg' => $res['data']['is_register'], 'openId' => $openId, 'sourceType' => $sourceType, 'nickname' => $nickname, 'areaCode' => $areaCode, 'phoneNum' => $phoneNum));
                $data = array('code' => $res['code'], 'message' => $res['message'], 'data' => array('isReg' => $res['data']['is_register'], 'next' => $next));
            }
            else
            {
                $data = array('code' => $res['code'], 'message' => $res['message'], 'data' => isset($res['data'])?$res['data']:'');
            }
        }
        while (false);

        $this->echoJson($data);
    }

    //发送验证码
    public function sendBindMsgAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do
        {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax())
            {
                break;
            }

            $phoneNum = $this->post('phoneNum');
            $areaCode = $this->post('areaCode');

            if (!is_numeric($phoneNum))
            {
                break;
            }

            $data = BindData::sendBindMsg($areaCode,$phoneNum);
            if (!isset($data['code']))
            {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    //校验短信验证码
    public function checkBindMsgAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do
        {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax())
            {
                break;
            }

            $phoneNum = $this->post('phoneNum');
            $msgCode = $this->post('msgCode');
            $areaCode = $this->post('areaCode');

            if (!is_numeric($phoneNum) || !$msgCode)
            {
                break;
            }

            $data = BindData::checkBindCode($areaCode,$phoneNum, $msgCode);
            if (!isset($data['code']))
            {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    //绑定手机号
    public function bindMobileAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do
        {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax())
            {
                break;
            }

            $phoneNum = $this->post('phoneNum');
            $openId = $this->post('openId');
            $areaCode = $this->post('areaCode', '86');
            $sourceType = $this->post('sourceType');
            $nickname = $this->post('nickname');
            $password = $this->post('password');

            if (!is_numeric($phoneNum) || !$openId || !$sourceType || !$areaCode)
            {
                break;
            }

            $res = BindData::bindMobile($openId, $nickname, $sourceType, $phoneNum, $areaCode, $password);
            if (!isset($res['code']))
            {
                break;
            }

            //绑定成功,跳转页面
            $refer = $this->getCookie('refer');
            if (empty($refer))
            {
                $refer = SITE_MAIN . '/?go=1';
            }
            else
            {
                $refer = rawurldecode($refer);
            }

            if (isset($res['code']) && $res['code'] == 200 && !empty($res['data']['uid']))
            {
                $token = Helpers::makeToken($res['data']['uid']);
                $this->setCookie('_TOKEN', $token);
                $this->setSession('_TOKEN', $token);
                $refer = Helpers::syncUserSession($data['data']['uid'], $refer);
                $data = array('code' => $res['code'], 'message' => $res['message'], 'data' => array('refer' => $refer));
            }
            else
            {
                $data = array('code' => $res['code'], 'message' => $res['message'], 'data' => array('refer' => $refer));
            }
        }
        while (false);

        $this->echoJson($data);
    }

}