LoginController.php 5.39 KB
<?php

namespace app\wx\modules\user\controllers;

use Yii;
use common\helpers\Utils;
use app\wx\models\UserIdentity;
use domain\PhoneCodeHelper;
use stdClass;

/**
 * 注册和登录 控制器
 */
class LoginController extends BaseController
{
    const CODE_EXPIRE = 120;
    /**
     * @return string
     */
    public function actionGetCode()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'ok';
        $e->codeDuration = self::CODE_EXPIRE;
        $action = $this->request->get('action');
        $mobile = $this->request->get('mobile');
        if (!Utils::isPhone($mobile)) {
            $e->message = '请输入合格手机号码';
            return $this->renderJson($e);
        }

        if ('login' == $action) {
            $codeRe = UserIdentity::getLoginVCode($mobile);
            $e->success = $codeRe->success;
            $e->message = $codeRe->message;
            $code = $codeRe->code;
        } else {
            $codeRe = UserIdentity::getRegisterVCode($mobile);
            $e->success = $codeRe->success;
            $e->message = $codeRe->message;
            $code = $codeRe->code;
        }

        // 测试用 - 正式启用的时候这里要关闭了
        $e->testCode = $code;

        return $this->renderJson($e);
    }

    /**
     * 注册界面
     * @return string
     */
    public function actionRegister()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'ok';
        $name = $this->request->post('name');
        $mobile = $this->request->post('mobile');
        $code = $this->request->post('code');
        $licensePic = $this->request->post('licensePic');
        $headPic = $this->request->post('headPic');
        $techChargePic = $this->request->post('techChargePic');
        $QAChargePic = $this->request->post('QAChargePic');
        $emergencyContact = $this->request->post('emergencyContact');
        $emergencyPerson = $this->request->post('emergencyPerson');
        $address = $this->request->post('address');

        if (empty($name)) {
            $e->message = '车厂名称必填';
            return $this->renderJson($e);
        }

        if (!Utils::isPhone($mobile)) {
            $e->message = '手机号码格式不对';
            return $this->renderJson($e);
        }

        if (empty($code)) {
            $e->message = '验证码必填';
            return $this->renderJson($e);
        }

        if (empty($emergencyPerson)) {
            $e->message = '紧急联系人必填';
            return $this->renderJson($e);
        }
        if (empty($emergencyContact)) {
            $e->message = '紧急联系电话必填';
            return $this->renderJson($e);
        }
        if (empty($address)) {
            $e->message = '维修厂地址必填';
            return $this->renderJson($e);
        }
        if (empty($licensePic)) {
            $e->message = '请上传营业执照';
            return $this->renderJson($e);
        }

        if (empty($headPic)) {
            $e->message = '请上传维修厂门头照';
            return $this->renderJson($e);
        }

        if (empty($techChargePic)) {
            $e->message = '请上传维修技术负责人证书';
            return $this->renderJson($e);
        }
        if (empty($QAChargePic)) {
            $e->message = '请上传质检负责人证书';
            return $this->renderJson($e);
        }
        // 校验验证码
        $vcode = PhoneCodeHelper::getRegisterCode($mobile);
        if (empty($vcode)) {
            $e->message = '验证码已经超时请重新发送';
            return $this->renderJson($e);
        }
        if ($vcode !== $code) {
            $e->message = '验证码不对';
            return $this->renderJson($e);
        }

        $rData = [
            'name' => $name, 'emergencyContact' => $emergencyContact, 'emergencyPerson' => $emergencyPerson, 'address' => $address,
            'licensePic' => $licensePic, 'headPic' => $headPic, 'techChargePic' => $techChargePic ,'QAChargePic' => $QAChargePic
        ];
        $regResult = UserIdentity::register($mobile, $rData);

        $e->success = $regResult->success;
        $e->message = $regResult->message;

        return $this->renderJson($e);
    }

    /**
     * @return string
     */
    public function actionLogin()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'ok';

        $mobile = $this->request->post('mobile');
        $code = $this->request->post('code');

        if (!Utils::isPhone($mobile)) {
            $e->message = '手机号码格式不对';
            return $this->renderJson($e);
        }

        if (empty($code)) {
            $e->message = '验证码必填';
            return $this->renderJson($e);
        }

        // 校验验证码
        $logVcode = PhoneCodeHelper::getLoginCode($mobile);
        if (empty($logVcode)) {
            $e->message = '该手机登录码过期';
            return $this->renderJson($e);
        }
        if ($code != $logVcode ) {
            $e->message = '验证码有误,请确认!';
            return $this->renderJson($e);
        }

        $loginRe = UserIdentity::login($mobile);
        $e->success = $loginRe->success;
        $e->message = $loginRe->message;

        return $this->renderJson($e);
    }

    public function actionLogout()
    {
        Yii::$app->user->logout();
        $this->redirect('/order/');
    }
}