public function actionAnswer()
 {
     $params = $this->getParams();
     if (empty($params['questionnaireId']) || empty($params['answers'])) {
         throw new BadRequestHttpException(Yii::t('common', 'parameters_missing'));
     }
     $user = [];
     if (!empty($params['user']['channelId']) && !empty($params['user']['openId'])) {
         $channelId = $params['user']['channelId'];
         $openId = $params['user']['openId'];
         $user = $params['user'];
         try {
             $follower = Yii::$app->weConnect->getFollowerByOriginId($openId, $channelId);
             $user['name'] = empty($follower['nickname']) ? '' : $follower['nickname'];
         } catch (ApiDataException $e) {
             LogUtil::error(['message' => 'Answer questionnaire failed to get follower info', 'param' => ['openId' => $openId, 'channelId' => $channelId]]);
         }
     }
     $questionnaireId = new MongoId($params['questionnaireId']);
     $questionnaire = Questionnaire::findByPk($questionnaireId);
     //error questionnaire id or un published questionnaire
     if (empty($questionnaire) || !$questionnaire->isPublished) {
         throw new InvalidParameterException(Yii::t('content', 'invalid_questionnaire'));
     }
     //questionnaire has not begun
     $now = time();
     if (MongodbUtil::MongoDate2TimeStamp($questionnaire->startTime) > $now) {
         throw new InvalidParameterException(Yii::t('content', 'questionnaire_not_began'));
     }
     //questionnaire expired
     if (MongodbUtil::MongoDate2TimeStamp($questionnaire->endTime) < $now) {
         throw new InvalidParameterException(Yii::t('content', 'questionnaire_expired'));
     }
     if (!empty($user)) {
         $questionnaireLog = QuestionnaireLog::getByQuestionnaireAndUser($questionnaireId, $user);
         if (!empty($questionnaireLog)) {
             throw new InvalidParameterException(Yii::t('content', 'user_has_answered_questionnaire'));
         }
     }
     $quertionnaireLog = new QuestionnaireLog();
     $quertionnaireLog->questionnaireId = $questionnaireId;
     $quertionnaireLog->user = $user;
     $quertionnaireLog->answers = $params['answers'];
     $quertionnaireLog->accountId = $questionnaire->accountId;
     if ($quertionnaireLog->save()) {
         return ['message' => 'OK', 'data' => ''];
     } else {
         throw new ServerErrorHttpException(Yii::t('common', 'save_fail'));
     }
 }