public function register() { if ($this->provinceId == "" || $this->majorJobId == "") { CommonFunctions::createAlertMessage("省份或者专业类型不能为空", "error"); return false; } $majorJob = MajorJob::findOne($this->majorJobId); if ($this->provinceId != $majorJob['provinceId']) { CommonFunctions::createAlertMessage("专业类型与所处省份不一致,请重新选择", "error"); return false; } $openId = Yii::$app->session->get('openId'); $user = Users::findByWeiXin($openId); if (!$user) { //如果用户不存在,即关注的时候没有把微信的相关信息存入 $user = new Users(); $user->weixin = $openId; } if (!$user->registerDate || $user->registerDate == 0) { //如果用户注册日期不存在或为0,表明用户第一次实名认证 $user->bitcoin = 0; $user->registerDate = DateFunctions::getCurrentDate(); $user->role = Users::ROLE_A; $user->state = Users::STATE_NORMAL; do { //保证生成的推荐码的唯一 $recommendCode = CommonFunctions::createCommonRecommendCode(); } while (Users::findUserByRecommendCode($recommendCode)); $user->recommendCode = $recommendCode; if ($this->tjm) { //推荐码绑定推荐人 $this->recommendUser = Users::findUserByRecommendCode($this->tjm); if ($this->recommendUser) { if ($this->recommendUser['userId'] != $user['userId']) { //推荐人不是自己 $user->recommendUserID = $this->recommendUser['userId']; } } } } $user->nickname = $this->nickname; $user->realname = $this->realname; $user->provinceId = $this->provinceId; $user->majorJobId = $this->majorJobId; $user->cellphone = $this->cellphone; $user->company = $this->company; $user->address = $this->address; if (!$user->save()) { throw new Exception("RegisterForm register Save Error"); } Yii::$app->cache->delete($user->cellphone); //注册成功后将验证码缓存清除 Yii::$app->session->set('user', $user); return true; }
public function beforeAction($action) { $session = Yii::$app->session; //$session->removeAll(); //$session->set('openId','ow-bOvjH7CpKQtxsvjJuRmg6-g-k'); if ($user = $session->get('user')) { if ($user['role'] == Users::ROLE_A) { //用户必须是A级用户才能登录前台,避免后台登录了前台也能进行登陆 return parent::beforeAction($action); } } if ($openId = $session->get('openId')) { $session->set('user', Users::findByWeiXin($openId)); return parent::beforeAction($action); } $request = Yii::$app->request; $state = $request->get("state"); $current_url = Url::current([], true); //认证后跳转至当前网址 if ($state == 'YUN') { //需要与getAuthorizeUrl($redirect_uri)中定义的一致,用户认证后回调操作如下 $code = $request->get("code"); if ($code) { //code存在表示用户允许授权 $result = WeiXinFunctions::getAuthAccessToken($code); $openId = $result->openid; $access_token = $result->access_token; //授权成功后继续执行后面的action $session->set('openId', $openId); $session->set('user', Users::findByWeiXin($openId)); return parent::beforeAction($action); //header("Location:$current_url"); } else { echo "用户不允许授权"; return false; } } $redirect_uri = urlencode($current_url); //认证后跳转至当前网址 $url = WeiXinFunctions::getAuthorizeUrl($redirect_uri); header("Location:{$url}"); return false; }
/** * 查询用户的咨询 * @param $openId * @param int $limit * @return array|\yii\db\ActiveRecord[] */ public static function findUserServiceByOpenId($openId, $limit = 5) { $user = Users::findByWeiXin($openId); return Service::find()->where(['userId' => $user->userId])->limit($limit)->all(); }