[ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['index', 'error'], 'allow' => true, //'roles' => ['?'], ], ], ], ]; } // 默认检测是否为钉钉浏览器 public function actionIndex() { $user_agent = $_SERVER['HTTP_USER_AGENT']; $serverName = $_SERVER['SERVER_NAME']; $req = Yii::$app->request; $channel = $req->get('channel'); $number = $req->get('number'); if (false === strpos($serverName, 'jiwork.com')) { $params = array('msg' => "二维码不是OTA设备二维码"); return $this->renderPartial('index',$params); } if (!in_array($channel, [RepairOrderChannel::REPAIR_CHANNEL_SCAN, RepairOrderChannel::REPAIR_CHANNEL_HOME_SCAN]) || empty($number)) { $params = array('msg' => "二维码有误"); return $this->renderPartial('index', $params); } if (false !== strpos($user_agent,'DingTalk') && false !== strpos($user_agent,'alibaba')) { // 钉钉浏览器 $site_url = Yii::$app->params['DINGTALKL_URL']; // 这个应该从后台的配置数据里面获取,但是由于历史原因,二维码上的url和后台配置可能出现不一致,所以先写到配置里面 header('Location: ' . $site_url . 'site/index#view-device/scan/' . $number . '/0/0?showmenu=false'); exit; } $params = array('msg' => "当前应用只支持钉钉和微信小程序"); return $this->renderPartial('index', $params); } }