public function run() { $id = intval($this->getDataItem('id', 0)); $user_id = intval($this->getDataItem('user_id', 0)); if ($id == 0) { return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, 'URL参数不全'); } $Question = new Question(); $model = $Question->query()->columns(['question_id', 'question_content', 'question_pics', 'question_tag', 'answer_num', 'question_browsers', 'question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_expert', 'u.user_cover', 'u.user_gender'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where('question_state = 1 and question_id = ' . $id)->execute()->getFirst(); if ($model) { $info = $model->toArray(); $info['question_content'] = unserialize(base64_decode($info['question_content'])) ?: $info['question_content']; if ($info['question_pics']) { $question_pics = []; foreach (json_decode($info['question_pics'], true) as $val) { $question_pics[] = PicUrl::Question($val, $this->getDi()); } $info['question_pics'] = $question_pics; } $info['user_cover'] = PicUrl::UserCover($info['user_cover'], $this->getDi()); $info['question_tag'] = $info['question_tag'] ? json_decode($info['question_tag'], true) : []; $QuestionFollow = new QuestionFollow(); // 是否收藏过 if ($user_id) { $info['is_collection'] = $QuestionFollow->is_follow($info['question_id'], $user_id); } else { $info['is_collection'] = '0'; } $QuestionViewsUser = new QuestionViewsUser(); $info['user_views_list'] = $QuestionViewsUser->getViewsUserList($id, 0, 7); $this->setResult($info); $count = 1; $Question->getReadConnection()->query("UPDATE question SET question_browsers = question_browsers + {$count} WHERE question_id = {$id}"); if ($user_id) { $QuestionViewsUser->addData($id, $user_id); } } }
/** * 问答详情 * @date: 2016-1-16 * @author: futao */ public function infoAction() { $this->setLeftNav("info"); $req = $this->request; $questionId = intval($req->getQuery('id', null, 0)); if ($questionId < 0) { echo "参数错误!"; return; } $questionColumns = ['ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.user_id', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_id']; $info = Question::query()->columns($questionColumns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub')->where("Apps\\Common\\Models\\Question.question_id = {$questionId} and Apps\\Common\\Models\\Question.question_state = 1")->execute()->getFirst(); if (!$info) { echo "问题不存在!"; exit; } $info->user_cover = PicUrl::UserCover($info->user_cover, $this->di); if (unserialize(base64_decode($info->question_content))) { $info->question_content = unserialize(base64_decode($info->question_content)); } if (json_decode($info->question_pics)) { $info->question_pics = json_decode($info->question_pics); } $answerColumns = ['ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\QuestionAnswer.answer_content', 'Apps\\Common\\Models\\QuestionAnswer.answer_addtime', 'Apps\\Common\\Models\\QuestionAnswer.answer_id', 'Apps\\Common\\Models\\QuestionAnswer.original_content', 'Apps\\Common\\Models\\QuestionAnswer.answer_pics', 'Apps\\Common\\Models\\QuestionAnswer.type', 'Apps\\Common\\Models\\QuestionAnswer.user_id']; $answerList = QuestionAnswer::query()->columns($answerColumns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionAnswer.user_id', 'ub')->where("Apps\\Common\\Models\\QuestionAnswer.question_id = {$questionId} and Apps\\Common\\Models\\QuestionAnswer.answer_state = 1")->orderBy("Apps\\Common\\Models\\QuestionAnswer.answer_floor asc")->execute()->toArray(); foreach ($answerList as $k => $val) { if (unserialize(base64_decode($answerList[$k]['answer_content']))) { $answerList[$k]['answer_content'] = unserialize(base64_decode($answerList[$k]['answer_content'])); } if (unserialize(base64_decode($answerList[$k]['original_content']))) { $answerList[$k]['original_content'] = unserialize(base64_decode($answerList[$k]['original_content'])); } if (json_decode($answerList[$k]['answer_pics'])) { $answerList[$k]['answer_pics'] = json_decode($answerList[$k]['answer_pics']); } if ($answerList[$k]['type'] == 1) { $answerList[$k]['reply'] = QuestionAnswerComments::query()->columns(['ub.user_nickname', 'ub.user_cover', 'ub.user_id', 'content', 'add_time', 'id'])->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionAnswerComments.user_id', 'ub')->where("question_id = {$questionId} and answer_id = " . $answerList[$k]['answer_id'] . " and to_user_id = " . $answerList[$k]['user_id'])->orderBy("id desc")->execute()->toArray(); } $answerList[$k]['user_cover'] = PicUrl::UserCover($answerList[$k]['user_cover'], $this->di); } $userList = UserBase::find("is_manage = 1"); $seeList = QuestionViewsUser::query()->columns(['distinct ub.user_id', 'ub.user_cover'])->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionViewsUser.user_id', 'ub')->where("question_id = {$questionId}")->orderBy("id desc")->limit(7)->execute(); $this->view->setVar('seelist', $seeList); $this->view->setVar('comment_count', QuestionAnswer::count('answer_state = 1 and question_id = ' . $questionId)); $this->view->setVar('question_id', $questionId); $this->view->setVar('userlist', $userList); $this->view->setVar('questioninfo', $info); $this->view->setVar('answerlist', $answerList); $this->view->pick('question/info'); }