<?php
/**
 *
 * ============================================================================
 * * 版权所有 蜘蛛出行 * *
 * 网站地址: http://www.zhizhuchuxing.com
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * Author By: 倪宗锋
 * PhpStorm LoginService.php
 * Create By 2017/2/23 15:09 $
 */


namespace fx\service\user;

use common\models\FxUserAccount;
use common\util\CurlInterface;
use common\util\Util;
use common\models\FxUser;
use fx\util\FxUtil;
use Yii;
use yii\base\Exception;

class LoginService
{

    public function checkParamsForLogin($params)
    {

    }

    /**
     * Function Description:发送短信
     * Function Name: sendMessage
     * @param $phone
     *
     * @return array
     *
     * @author 娄梦宁
     */
    public function sendMessage($phone)
    {
        if (Util::checkPattern('mobile', $phone) == false) {
            return Util::returnArrEr('请填写正确的手机号');
        }
        $code = rand(1000, 9999);
        if (Util::checkPattern('mobile', $phone) == false) {
            return Util::returnArrEr('参数错误');
        }
        $msg = "您的验证码为:$code";
        $result = Util::sendMessage($msg, $phone);
        if ($result['flag']) {
            Yii::$app->cache->set('phone' . $phone, $code, 1800);
            return Util::returnArrSu('验证码发送成功');
        }
        return Util::returnArrEr('验证码发送失败');
    }

    /**
     * Function Description:验证码校验
     * Function Name: checkCode
     * @param $phone
     * @param $code
     *
     * @return array
     *
     * @author 娄梦宁
     */
    public function checkCode($phone, $code)
    {
        $fx_user_account = new FxUserAccount();
        $checkPhone = Yii::$app->cache->get('phone' . $phone);
        if ($checkPhone == $code && $checkPhone != false) {
            $result = new FxUser();
            $transaction = Yii::$app->db->beginTransaction();//添加事务回滚机制
            try {
                $result1 = $result->registerPhone($phone);
                if ($result1) {
                    //为分销用户添加分销账户表
                    $result2 = $fx_user_account->InsertNewUser();
                    if ($result2) {
                        $setLogin = FxUtil::setLoginByOpenid('', '', FxUtil::$uid);
                        if ($setLogin['flag'] == false) {
                            return $setLogin;
                        }
                        $transaction->commit();
                        return Util::returnArrSu('注册成功！[1000]');
                    }
                }
                $transaction->rollBack();
            } catch (Exception $e) {
                $transaction->rollBack();
            }
        } else {
            return Util::returnArrEr('注册失败!验证码错误！');
        }
        return Util::returnArrEr('注册失败！[1001]');
    }
}