/** * 问题列表 */ public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterTag = intval($req->getQuery('filterTag', null, -10000)); $filterOrder = intval($req->getQuery('filterOrder', null, 0)); $columns = ['Apps\\Common\\Models\\Question.question_id', 'ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.question_tag', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.answer_num', 'Apps\\Common\\Models\\Question.question_follows', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_state', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.city_code']; $where = []; $bind = []; if ($filterTag > 0) { $where[] = 'Apps\\Common\\Models\\Question.question_tag = :tag:'; $bind['tag'] = $filterTag; } // 只查询正常的内容 $where[] = 'Apps\\Common\\Models\\Question.question_state > 0'; $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy($filterOrder == 1 ? 'answer_num ASC, Apps\\Common\\Models\\Question.question_id DESC' : 'Apps\\Common\\Models\\Question.question_id DESC')->limit($limit, $offset)->execute(); //总数 $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); // $this->view->setVar('tagList', QuestionTag::query()->columns('*')->orderBy('tag_order DESC, tag_id ASC')->execute()); $this->view->setVar('filterTag', $filterTag); $this->view->setVar('filterOrder', $filterOrder); }
public function run() { $id = intval($this->getDataItem('id', 0)); if (0 < $id) { $this->question = Question::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', '0 user_is_follow', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where('Apps\\Common\\Models\\Question.question_id= :id: and Apps\\Common\\Models\\Question.question_state > 0')->bind(['id' => $id])->execute()->getFirst(); } else { return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数异常'); } if ($this->question) { if (unserialize(base64_decode($this->question->question_content))) { $this->question->question_content = unserialize(base64_decode($this->question->question_content)); } $this->question->question_pics = PicUrl::Question(json_decode($this->question->question_pics), $this->getDi()); $this->question->addtime = \Apps\Common\Libs\DateTime::Format($this->question->addtime); $this->question->user_cover = PicUrl::UserCover($this->question->user_cover, $this->getDi()); $this->verifyUserAuth(false); $userId = $this->getUserAuth() ? $this->getUserAuth()->userId : 0; if ($userId > 0) { $count = QuestionFollow::count(['conditions' => 'question_id = :qid: AND user_id = :uid:', 'bind' => ['qid' => $id, 'uid' => $userId]]); $this->question->user_is_follow = $count > 0 ? 1 : 0; } } else { $this->question = null; } $this->setResult($this->question); }
/** * 问答 */ public function questionAction() { $id = $this->request->getQuery('id'); if (empty($id)) { echo '问题不存在!'; $this->view->disable(); return; } $limit = 20; $page = 1; $this->tag->setTitle($this->appName . ' - 问答详情'); $question = Question::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.question_browsers as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', '0 user_is_follow', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where('question_state>0 and question_id=:id:')->bind(['id' => $id])->execute()->getFirst(); if ($question) { $question->question_pics = PicUrl::Question(json_decode($question->question_pics), $this->di); $question->addtime = \Apps\Common\Libs\DateTime::FriendlyDate($question->addtime, 'mohu'); $question->user_cover = PicUrl::UserCover($question->user_cover, $this->di); if (unserialize(base64_decode($question->question_content))) { $question->question_content = unserialize(base64_decode($question->question_content)); } } else { echo '问题不存在!'; $this->view->disable(); return; } $this->view->setVar('question', $question); $answers = QuestionAnswer::listByQuestionId($id, $limit, 0, 0)->toArray(); $answers = $answers ? $answers : []; $answersData = []; $dataBest = null; foreach ($answers as $arr) { if (unserialize(base64_decode($arr['answer_content']))) { $arr['answer_content'] = unserialize(base64_decode($arr['answer_content'])); } $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->di); $arr['answer_pics'] = PicUrl::Question(json_decode($arr['answer_pics']), $this->di); $arr['addtime'] = \Apps\Common\Libs\DateTime::FriendlyDate($arr['addtime'], 'mohu'); // 处理最佳答案 $best = $arr['answer_best']; if ($best > 5 && $page == 1) { if ($dataBest == null) { $dataBest = $arr; continue; } elseif ($dataBest['answer_best'] < $best) { $dataBest = $arr; continue; } } $arr['answer_best'] = 0; $answersData[] = $arr; } if ($dataBest != null) { $dataBest['answer_best'] = 1; array_splice($answersData, 0, 0, [$dataBest]); } $this->view->setVar('answers', $answersData); }
public function run() { $keyword = $this->getDataItem('keyword'); if (empty($keyword)) { $page = intval($this->getDataItem('page', 1)); $offset = ($page - 1) * 10; $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers as browser_num', 'Apps\\Common\\Models\\Question.question_addtime as addtime', 'Apps\\Common\\Models\\Question.question_state as question_state'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where("Apps\\Common\\Models\\Question.question_state != -1")->orderBy('Apps\\Common\\Models\\Question.question_id desc')->limit(10, $offset)->execute()->toArray(); foreach ($list as $k => $v) { $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true); if (unserialize(base64_decode($list[$k]['question_content']))) { $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content'])); } if (count($list[$k]['question_pics']) > 2) { $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2); } $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover']; foreach ($list[$k]['question_pics'] as $key => $val) { $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key]; } } $this->setResult($list); } else { /* $page = intval($this->getDataItem('page', 1)); $limit = $this->getConfig()->limit; $offset = ($page-1) * $limit; $data = $this->searchQuestion($keyword, $limit, $offset); $this->setResult($data); */ /*多关键字搜索*/ $keywordarr = explode(" ", trim($keyword)); foreach ($keywordarr as $r) { $wherearr[] = "Apps\\Common\\Models\\Question.question_content like '%" . $r . "%'"; } $where = implode(" or ", $wherearr); ////////////////////////////////////////////////////////////////////// $page = intval($this->getDataItem('page', 1)); $offset = ($page - 1) * 10; $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers as browser_num', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where("{$where} and Apps\\Common\\Models\\Question.question_state != -1")->orderBy('Apps\\Common\\Models\\Question.question_id desc')->limit(10, $offset)->execute()->toArray(); foreach ($list as $k => $v) { $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true); if (unserialize(base64_decode($list[$k]['question_content']))) { $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content'])); } if (count($list[$k]['question_pics']) > 2) { $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2); } $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover']; foreach ($list[$k]['question_pics'] as $key => $val) { $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key]; } } if (count($list) == 0) { unset($list); } $this->setResult($list); } }
public function run() { /** * 验证用户权限 */ if (false == $this->verifyUserAuth()) { return false; } $questionId = intval($this->getDataItem('question_id', 0)); $question_content = Keyword::Filter($this->getDataItem('content', '')); $up = new UploadPic(); $question_pics = json_encode($up->questionPic()); if ($questionId > 0 && !empty($question_content)) { // 查询最大楼层 $floor = QuestionAnswer::maximum(["column" => "answer_floor", "conditions" => "question_id = :qid:", "bind" => ["qid" => $questionId]]); $qa = new QuestionAnswer(); $qa->user_id = $this->getUserAuth()->userId; $qa->question_id = $questionId; //关键字替换 $keyword = CosQKeyword::query()->execute()->toArray(); foreach ($keyword as $k => $v) { $question_content = str_replace($v['keyword'], '***', $question_content); } $question_content = base64_encode(serialize($question_content)); $qa->answer_content = $question_content; $qa->answer_floor = ($floor ? $floor : 0) + 1; $qa->answer_pics = $question_pics; if ($qa->save()) { $this->id = $qa->answer_id; $this->success = 1; // 记录回答数 Question::updateAnswerNum($questionId); } else { return $this->databaseErrorLog($qa); } } else { return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, ""); } //回答成功,推送消息 $num = Question::query()->columns(['b.user_account'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=b.user_id', 'b')->where('Apps\\Common\\Models\\Question.question_id = ' . $questionId)->execute()->toArray(); $phoneNum = $num[0]['user_account']; $param['type'] = 6; $param['ispushservice'] = 0; $param['phone'] = $phoneNum; $param['content'] = '您的问题有人回答了,快去看看吧!'; $param['shop_id'] = 0; $push = new Jpush(); $rs = $push->setval($param); if (!empty($rs) || empty($phoneNum)) { $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]); } else { $rs = $push->push(); $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]); } }
public function run() { $orders = $this->getDataItem('orders', 1); // 排序方式(1=》最新提问,2=》最新回复,3=》人气问答) $page = intval($this->getDataItem('page', 1)); $is_expert_reply = $this->getDataItem('is_expert_reply', 0); // 专家是否回复 // $city_code = (string)$this->getDataItem('city_code', '0'); // 原型去掉了 $user_id = intval($this->getDataItem('user_id', 0)); $keyword = $this->getDataItem('keyword', ''); $limit = $this->getConfig()->limit; $offset = ($page - 1) * $limit; $columns = ['question_id', 'question_content', 'question_pics', 'question_tag', 'answer_num', 'question_browsers', 'question_addtime', 'is_expert_reply', 'u.user_id', 'u.user_nickname', 'u.user_expert', 'u.user_cover', 'u.user_gender']; switch ($orders) { case 2: $orders = 'last_reply_time DESC'; break; case 3: $orders = 'question_browsers DESC'; break; default: $orders = 'question_addtime DESC'; } $where = 'question_state = 1'; if ($is_expert_reply == 1) { $where .= ' and is_expert_reply = 1'; } if ($keyword) { $where .= " and question_content like '%{$keyword}%'"; } $list = Question::query()->columns($columns)->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where($where)->orderBy($orders)->limit($limit, $offset)->execute()->toArray(); $QuestionFollow = new QuestionFollow(); foreach ($list as $k => $val) { // 是否收藏过 if ($user_id) { $list[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $user_id); } else { $list[$k]['is_collection'] = '0'; } $list[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : []; $list[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi()); $list[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content']; if ($val['question_pics']) { $question_pics = []; foreach (json_decode($val['question_pics'], true) as $key => $value) { $question_pics[] = PicUrl::Question($value, $this->getDi()); } $list[$k]['question_pics'] = $question_pics; } } $this->setResult($list); }
public function run() { $tag_id = intval($this->getDataItem('tag_id', 0)); $page = intval($this->getDataItem('page', 1)); $limit = $this->getConfig()->limit; $offset = ($page - 1) * $limit; $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'question_id', 'question_content', 'question_pics', 'answer_num', 'question_browsers browser_num', 'question_follows follow_num', 'question_addtime addtime']; if (-2 == $tag_id) { //精华 /* $this->questions = Question::query() ->columns($columns) ->leftJoin('Apps\Common\Models\UserBase', 'Apps\Common\Models\Question.user_id = u.user_id','u') ->where('question_state = 2') ->orderBy('question_id desc') ->limit($limit,$offset) ->execute()->toArray(); */ $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0')->orderBy('answer_num desc')->limit($limit, $offset)->execute()->toArray(); } else { if (-1 == $tag_id) { //最热 $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0')->orderBy('question_browsers desc,question_follows desc')->limit($limit, $offset)->execute()->toArray(); } else { if (0 == $tag_id) { //默认 $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state>0')->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray(); } else { //指定条件 $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0 and question_tag = :question_tag:')->bind(['question_tag' => $tag_id])->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray(); } } } $this->questions = $this->questions ? $this->questions : []; $data = []; foreach ($this->questions as $arr) { $arr['question_pics'] = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi()); if (is_string($arr['question_pics'])) { $arr['question_pics'] = $arr['question_pics']; } if (is_array($arr['question_pics']) && count($arr['question_pics']) > 2) { $arr['question_pics'] = array_slice($arr['question_pics'], 0, 2); } $arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']); $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi()); $arr['question_content'] = unserialize(base64_decode($arr['question_content'])); $data[] = $arr; } $this->setResult($data); }
public function run() { $question_id = intval($this->getDataItem('question_id', 0)); if ($question_id < 1) { return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '参数错误!'); } $QuestionTag = new QuestionTag(); if ($tagList = $QuestionTag->query()->where('question_id = ' . $question_id)->execute()->toArray()) { $tag_id = ''; foreach ($tagList as $val) { $tag_id .= $val['tag_id'] . ','; } $tag_id = '(' . trim($tag_id, ',') . ')'; $question_id_list = $QuestionTag->query()->groupBy('question_id')->where("tag_id in{$tag_id} and question_id != {$question_id}")->orderBy('id DESC')->limit(50)->execute()->toArray(); if ($question_id_list) { /*$where_question_id = ''; foreach ($question_id_list as $val) { $where_question_id .= $val['question_id'] . ','; } $where_question_id = '(' . trim($where_question_id, ',') . ')';*/ // 随机取相关问答的id $count = count($question_id_list); if ($count >= 3) { $start = mt_rand(0, $count - 3); $where_question_id = '(' . $question_id_list[$start]['question_id'] . ',' . $question_id_list[$start + 1]['question_id'] . ',' . $question_id_list[$start + 2]['question_id'] . ')'; } else { $where_question_id = ''; foreach ($question_id_list as $val) { $where_question_id .= $val['question_id'] . ','; } $where_question_id = '(' . trim($where_question_id, ',') . ')'; } $list = 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_id in{$where_question_id} and question_state = 1")->execute()->toArray(); foreach ($list as $k => $val) { $list[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : []; $list[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi()); $list[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content']; if ($val['question_pics']) { $question_pics = []; foreach (json_decode($val['question_pics'], true) as $key => $value) { $question_pics[] = PicUrl::Question($value, $this->getDi()); } $list[$k]['question_pics'] = $question_pics; } } $this->setResult($list); } } }
/** * 问答详情 * @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'); }
public function run() { $user_id = intval($this->getDataItem('user_id', 0)); $expert_id = intval($this->getDataItem('expert_id', 0)); $page = intval($this->getDataItem('page', 1)); if ($expert_id < 1) { return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '缺少必传参数!'); } $limit = $this->getConfig()->limit; $offset = ($page - 1) * $limit; $list = QuestionAnswer::query()->columns(['question_id'])->where('answer_state = 1 and user_id = ' . $expert_id)->groupBy('question_id')->orderBy('answer_id DESC')->limit($limit, $offset)->execute()->toArray(); if ($list) { $where = ''; foreach ($list as $val) { $where .= $val['question_id'] . ','; } $where = trim($where, ','); $result = Question::query()->columns(['question_id', 'question_tag', 'question_pics', 'question_content', 'question_addtime', 'u.user_id', 'u.user_nickname', '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 in({$where})")->execute()->toArray(); $QuestionFollow = new QuestionFollow(); foreach ($result as $k => $val) { $result[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content']; $result[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi()); if ($val['question_pics']) { $result[$k]['question_pics'] = PicUrl::Question(json_decode($val['question_pics']), $this->getDi()); } if (!is_numeric($val['question_tag'])) { $result[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : []; } else { $result[$k]['question_tag'] = []; } if ($user_id > 0) { $result[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $user_id); } else { $result[$k]['is_collection'] = '0'; } } $this->setResult($result); } }
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月19日 * @author: futao */ public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterUser = intval($req->getQuery('filterUser', null, -10000)); $filterState = intval($req->getQuery('filterState', null, -10000)); $filtertime = $req->getQuery('inputtime', null, ''); $filtercontent = $req->getQuery('qcontent', null, ''); $filtertag = $req->getQuery('qtag', null, ''); $filtercity = $req->getQuery('cityCode', null, 0); $filterNew = $req->getQuery('new', null, -1); $columns = ['Apps\\Common\\Models\\Question.question_id', 'ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.question_tag', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.answer_num', 'Apps\\Common\\Models\\Question.question_follows', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_state', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.city_code']; $where = []; $bind = []; //筛选数据 if ($filtercity == -1) { $where[] = 'city_code <> 0 '; $this->setLeftNav('citylist'); } if ($filterNew > -1) { $where[] = 'Apps\\Common\\Models\\Question.is_manager_reply = :new:'; $bind['new'] = $filterNew; } if ($filtertag != '') { $questionIds = QuestionTag::query()->columns("question_id")->where('tag_name like "%' . $filtertag . '%"')->execute()->toArray(); if ($questionIds != '') { foreach ($questionIds as $val) { $ids[] = $val['question_id']; } $ids = implode(",", $ids); $where[] = 'Apps\\Common\\Models\\Question.question_id in (' . $ids . ')'; } } if ($filtertime != '') { if (explode("至", $filtertime)) { $timearr[] = explode("至", $filtertime); $start_time = $timearr[0][0]; $end_time = $timearr[0][1]; if ($start_time != '' && $end_time != '') { $where[] = 'Apps\\Common\\Models\\Question.question_addtime >= :start_time: and Apps\\Common\\Models\\Question.question_addtime <= :end_time:'; $bind['start_time'] = $start_time; $bind['end_time'] = $end_time; } } } if ($filtercontent != '') { $where[] = 'Apps\\Common\\Models\\Question.question_content like :content:'; $bind['content'] = '%' . $filtercontent . '%'; } if ($filterUser > 0) { $where[] = 'Apps\\Common\\Models\\Question.user_id = :uid:'; $bind['uid'] = $filterUser; } if ($filterState > -10000) { $where[] = 'Apps\\Common\\Models\\Question.question_state = :state:'; $bind['state'] = $filterState; } $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy('Apps\\Common\\Models\\Question.question_id DESC')->limit($limit, $offset)->execute()->toArray(); $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); foreach ($data as $k => $v) { //问题内容解码 if (unserialize(base64_decode($v['question_content']))) { $data[$k]['question_content'] = unserialize(base64_decode($v['question_content'])); } if (json_decode($data[$k]['question_tag'])) { $data[$k]['question_tag'] = json_decode($data[$k]['question_tag']); } } $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); $this->view->setVar('openCity', $this->openCityList()); $this->view->setVar('filterNew', $filterNew); $this->view->setVar('cityCode', $filtercity); $this->view->setVar('inputtime', $filtertime); $this->view->setVar('filterUser', $filterUser); $this->view->setVar('filtertag', $filtertag); $this->view->setVar('filterState', $filterState); $this->view->setVar('qcontent', $filtercontent); }
private function syncQuestion($id) { $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'question_id', 'question_content', 'question_pics', 'answer_num', 'question_browsers', 'question_follows', 'question_addtime', 'question_state', 'tag_title']; $info = \Apps\Common\Models\Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->leftJoin('Apps\\Common\\Models\\QuestionTag', 'Apps\\Common\\Models\\Question.question_tag = qt.tag_id', 'qt')->where('question_id = :id:', ['id' => $id])->execute()->getFirst(); if (!$info) { return false; } // 删除数据 if ($info->question_state <= 0) { $this->delete(SearchDataType::Question, $info->question_id); return true; } // 同步数据 $title = $info->tag_title; $searchContent = $info->question_content; $tagInt = $info->answer_num; $tagStr = ''; $showData = json_encode(['user_id' => $info->user_id, 'user_nickname' => $info->user_nickname, 'user_cover' => $info->user_cover, 'question_id' => $info->question_id, 'question_content' => $info->question_content, 'question_pics' => $info->question_pics, 'answer_num' => $info->answer_num, 'browser_num' => $info->question_browsers, 'follow_num' => $info->question_follows, 'addtime' => $info->question_addtime]); $this->save(SearchDataType::Question, $id, $showData, $title, $searchContent, $tagInt, $tagStr); return true; }
private function getHis($userId, $columns, $limit, $offset) { return Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0 AND Apps\\Common\\Models\\Question.user_id=:user_id:')->bind(['user_id' => $userId])->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray(); }
public function run() { $keyword = $this->getDataItem('keyword'); //关键字 $type = intval($this->getDataItem('type', 0)); //分类 0 所有 1专家已回 2专家未回 $order = $this->getDataItem('order', 'new'); //排序 $userid = $this->getDataItem('user_id', 0); switch ($type) { case 1: $where = 'is_expert_reply = 1'; break; case 2: $where = 'is_expert_reply = 0'; break; default: $where = ''; break; } $orderBy = $order == "hot" ? "question_browsers DESC" : "question_addtime DESC"; $where = $where == '' ? '' : "{$where} AND "; //条数 $count = $this->getConfig()->limit; if (empty($keyword)) { //如果上传关键字为空 直接分页返回默认条件数据 $page = intval($this->getDataItem('page', 1)); $offset = ($page - 1) * $count; $where .= " Apps\\Common\\Models\\Question.question_state != -1"; $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_addtime', 'question_tag', 'Apps\\Common\\Models\\Question.question_state as question_state', 'Apps\\Common\\Models\\Question.is_expert_reply as is_expert_reply'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where($where)->orderBy($orderBy)->limit($count, $offset)->execute()->toArray(); $QuestionFollow = new QuestionFollow(); foreach ($list as $k => $v) { // 是否收藏过 if ($userid) { $list[$k]['is_collection'] = $QuestionFollow->is_follow($v['question_id'], $userid); } else { $list[$k]['is_collection'] = '0'; } $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true); if (unserialize(base64_decode($list[$k]['question_content']))) { $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content'])); } $list[$k]['question_tag'] = $v['question_tag'] ? json_decode($v['question_tag'], true) : null; if (count($list[$k]['question_pics']) > 2) { $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2); } $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover']; foreach ($list[$k]['question_pics'] as $key => $val) { $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key]; } } $this->setResult($list); } else { //关键词不为空根据关键词查询 $keywordarr = explode(" ", trim($keyword)); foreach ($keywordarr as $r) { $wherearr[] = "Apps\\Common\\Models\\Question.question_content like '%" . $r . "%'"; } $where .= implode(" or ", $wherearr); ////////////////////////////////////////////////////////////////////// $page = intval($this->getDataItem('page', 1)); $offset = ($page - 1) * $count; $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_addtime', 'question_tag', 'Apps\\Common\\Models\\Question.is_expert_reply as is_expert_reply'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where("{$where} and Apps\\Common\\Models\\Question.question_state != -1")->orderBy($orderBy)->limit($count, $offset)->execute()->toArray(); $QuestionFollow = new QuestionFollow(); foreach ($list as $k => $v) { // 是否收藏过 if ($userid) { $list[$k]['is_collection'] = $QuestionFollow->is_follow($v['question_id'], $userid); } else { $list[$k]['is_collection'] = '0'; } $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true); if (unserialize(base64_decode($list[$k]['question_content']))) { $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content'])); } $list[$k]['question_tag'] = $v['question_tag'] ? json_decode($v['question_tag'], true) : null; if (count($list[$k]['question_pics']) > 2) { $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2); } $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover']; foreach ($list[$k]['question_pics'] as $key => $val) { $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key]; } } if (count($list) == 0) { unset($list); } $this->setResult($list); } }
public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterUser = intval($req->getQuery('filterUser', null, -10000)); $filterTag = intval($req->getQuery('filterTag', null, -10000)); $filterState = intval($req->getQuery('filterState', null, -10000)); $columns = ['question_id', 'ub.user_id', 'user_nickname', 'user_cover', 'question_tag', 'tag_title', 'question_content', 'question_pics', 'answer_num', 'question_follows', 'question_browsers', 'question_state', 'question_addtime']; $where = []; $bind = []; if ($filterUser > 0) { $where[] = 'Apps\\Common\\Models\\Question.user_id = :uid:'; $bind['uid'] = $filterUser; } if ($filterTag > 0) { $where[] = 'Apps\\Common\\Models\\Question.question_tag = :tag:'; $bind['tag'] = $filterTag; } if ($filterState > -10000) { $where[] = 'Apps\\Common\\Models\\Question.question_state = :state:'; $bind['state'] = $filterState; } $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub')->leftJoin('Apps\\Common\\Models\\QuestionTag', 'tag.tag_id = question_tag', 'tag'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy('question_id DESC')->limit($limit, $offset)->execute()->toArray(); $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); foreach ($data as $k => $v) { if (unserialize(base64_decode($v['question_content']))) { $data[$k]['question_content'] = unserialize(base64_decode($v['question_content'])); } } $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); $this->view->setVar('tagList', QuestionTag::query()->columns('*')->orderBy('tag_order DESC, tag_id ASC')->execute()); $this->view->setVar('filterUser', $filterUser); $this->view->setVar('filterTag', $filterTag); $this->view->setVar('filterState', $filterState); }
public function run() { /** * 验证用户权限 */ if (false == $this->verifyUserAuth()) { return false; } $questionId = intval($this->getDataItem('question_id', 0)); $question_content = Keyword::Filter($this->getDataItem('content', '')); $city_code = $this->getDataItem('city_code', '0'); $original_content = $this->getDataItem('original_content', ''); if (!($question_content = trim($question_content))) { return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "回复内容不能为空!"); } if ($questionId > 0 && !empty($question_content)) { if (mb_strlen($question_content) > 300) { return $this->errorLog(ResultStatus::POST_BODY_FORMAT_ERROR, '回复内容长度不能超过300字符'); } //关键字替换 $keyword = CosQKeyword::query()->execute()->toArray(); foreach ($keyword as $k => $v) { $question_content = str_replace($v['keyword'], '***', $question_content); } $up = new UploadPic(); $user_id = $this->getUserAuth()->userId; $type = (new UserBase())->is_expert($user_id) ? 2 : 1; // 用户类型(1=》普通,2=》专家) $data = ['question_id' => $questionId, 'user_id' => $user_id, 'answer_content' => $question_content, 'answer_pics' => json_encode($up->questionPic()), 'answer_addtime' => date('Y-m-d H:i:s'), 'city_code' => $city_code, 'type' => $type]; if ($original_content) { $data['original_content'] = $original_content; } $QuestionAnswer = new QuestionAnswer(); if ($QuestionAnswer->save($data)) { $this->success = 1; $Question = new Question(); $Question->setAnswerNum($questionId, 1, true); if ($type == 2) { // 修改问答为专家已回复状态 $Question->getReadConnection()->query('UPDATE question SET is_expert_reply = 1 WHERE question_id = ' . $questionId); } } else { return $this->databaseErrorLog($QuestionAnswer); } } else { return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "缺少必传参数!"); } //回答成功,推送消息 $num = Question::query()->columns(['b.user_account'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=b.user_id', 'b')->where('Apps\\Common\\Models\\Question.question_id = ' . $questionId)->execute()->toArray(); $phoneNum = $num[0]['user_account']; $param['type'] = 6; $param['ispushservice'] = 0; $param['phone'] = $phoneNum; $param['content'] = '您的问题有人回答了,快去看看吧!'; $param['shop_id'] = 0; $push = new Jpush(); $rs = $push->setval($param); if (!empty($rs) || empty($phoneNum)) { $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]); } else { $rs = $push->push(); $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]); } }
/** * 问题预览 * @date: 2016年1月28日 * @author: chenxiaolin */ public function questionPreviewAction() { $id = $this->request->getQuery('id'); if (empty($id)) { echo "问题不存在!"; $this->view->disable(); return; } //问题内容 $question = Question::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_addtime as addtime', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_tag as question_tag', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.question_browsers as question_browsers', 'Apps\\Common\\Models\\Question.answer_num as answer_num'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where('question_state>0 and question_id=:id:')->bind(['id' => $id])->execute()->getFirst(); if ($question) { $question->question_pics = PicUrl::Question(json_decode($question->question_pics), $this->di); $question->question_tag = json_decode($question->question_tag); //$question->addtime = \Apps\Common\Libs\DateTime::FriendlyDate($question->addtime, 'mohu'); $question->user_cover = PicUrl::UserCover($question->user_cover, $this->di); if (unserialize(base64_decode($question->question_content))) { $question->question_content = unserialize(base64_decode($question->question_content)); } } else { echo '问题不存在!'; $this->view->disable(); return; } //美人儿已阅处头像 $covers = QuestionAnswer::query()->columns(['distinct Apps\\Common\\Models\\QuestionAnswer.user_id', 'user.user_cover'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\QuestionAnswer.user_id = user.user_id', 'user')->where("Apps\\Common\\Models\\QuestionAnswer.question_id = {$id} \n and Apps\\Common\\Models\\QuestionAnswer.answer_state = 1 \n and Apps\\Common\\Models\\QuestionAnswer.type in (1,2)")->order('answer_addtime desc')->limit(7)->execute()->toArray(); foreach ($covers as $k => $v) { $covers[$k]['user_cover'] = PicUrl::UserCover($covers[$k]['user_cover'], $this->getDI()); } //专家回复 $expert = QuestionAnswer::query()->columns(['user.user_id', 'user.user_nickname', 'user.user_cover', 'userAttr.attr_value_json', 'Apps\\Common\\Models\\QuestionAnswer.answer_content'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\QuestionAnswer.user_id = user.user_id', 'user')->leftJoin('Apps\\Common\\Models\\UserAttribute', 'user.user_id = userAttr.user_id', 'userAttr')->where("Apps\\Common\\Models\\QuestionAnswer.question_id = {$id} \n and Apps\\Common\\Models\\QuestionAnswer.answer_state = 1 \n and Apps\\Common\\Models\\QuestionAnswer.type = 2\n and userAttr.attr_type = 103 ")->order('answer_addtime desc')->execute()->toArray(); foreach ($expert as $k => $v) { if (unserialize(base64_decode($expert[$k]['answer_content']))) { $expert[$k]['answer_content'] = unserialize(base64_decode($expert[$k]['answer_content'])); } $expert[$k]['user_cover'] = PicUrl::UserCover($expert[$k]['user_cover'], $this->getDI()); $expert[$k]['attr_value_json'] = json_decode($expert[$k]['attr_value_json'], true); $expert[$k]['attr_value_json']['field'] = implode('、', $expert[$k]['attr_value_json']['field']); } //网友回复 $answer = QuestionAnswer::query()->columns(['user.user_id', 'user.user_nickname', 'user.user_cover', 'user.user_gender', 'Apps\\Common\\Models\\QuestionAnswer.answer_content', 'Apps\\Common\\Models\\QuestionAnswer.answer_pics', 'Apps\\Common\\Models\\QuestionAnswer.answer_addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\QuestionAnswer.user_id = user.user_id', 'user')->where("Apps\\Common\\Models\\QuestionAnswer.question_id = {$id}\n and Apps\\Common\\Models\\QuestionAnswer.answer_state = 1\n and Apps\\Common\\Models\\QuestionAnswer.type = 1")->order('answer_addtime desc')->execute()->toArray(); foreach ($answer as $k => $v) { if (unserialize(base64_decode($answer[$k]['answer_content']))) { $answer[$k]['answer_content'] = unserialize(base64_decode($answer[$k]['answer_content'])); } $answer[$k]['user_cover'] = PicUrl::UserCover($answer[$k]['user_cover'], $this->getDI()); $answer[$k]['answer_pics'] = PicUrl::Question(json_decode($answer[$k]['answer_pics']), $this->di); } $this->view->setVar('question', $question); $this->view->setVar('covers', $covers); $this->view->setVar('expert', $expert); $this->view->setVar('answer', $answer); }