*/ class BindingWechatController extends BaseController { /** * @param \yii\base\Action $action * @return bool|void * @throws \yii\base\InvalidConfigException * @throws \yii\web\BadRequestHttpException * @throws \yii\web\UnauthorizedHttpException */ public function beforeAction($action) { /** 检测到微信进入自动获取用户信息 **/ if (Yii::$app->wechat->isWechat && !Yii::$app->wechat->isAuthorized()) { return Yii::$app->wechat->authorizeRequired()->send(); } /** 当前进入微信用户信息 **/ Yii::$app->params['wechatMember'] = Json::decode(Yii::$app->session->get('wechatUser')); /** 非微信网页打开时候开启模拟数据 **/ if (empty(Yii::$app->params['wechatMember']) && Yii::$app->params['simulateUser']['switch'] == true) { Yii::$app->params['wechatMember'] = Yii::$app->params['simulateUser']['userInfo']; } return parent::beforeAction($action); } /** * @return string */ public function actionIndex($uuid) { $member_id = HashidsHelper::decode($uuid); if (!Yii::$app->wechat->isWechat) { throw new UnprocessableEntityHttpException('请用微信打开'); } if (empty($member = Yii::$app->services->member->findById($member_id))) { throw new UnprocessableEntityHttpException('找不到用户信息'); } $original = Yii::$app->params['wechatMember']['original']; $auth = Yii::$app->services->memberAuth->findByMemberIdOauthClient(AccessTokenGroupEnum::WECHAT_MP, $member_id); $message = '请先解绑再绑定'; if (empty($auth)) { Yii::$app->services->backendMemberAuth->create([ 'member_id' => $member_id, 'oauth_client' => AccessTokenGroupEnum::WECHAT_MP, 'oauth_client_user_id' => $original['openid'], 'gender' => $original['sex'], 'nickname' => $original['nickname'], 'head_portrait' => $original['headimgurl'], 'country' => $original['country'], 'province' => $original['province'], 'city' => $original['city'], 'language' => $original['language'], ]); $message = '绑定成功'; } return $this->render($this->action->id, [ 'message' => $message, ]); } }