public function run() { /** * 验证用户权限 */ if (false == $this->verifyUserAuth()) { return false; } $user = $this->getUserAuth(); /** * 获取关注次数 */ $questionId = intval($this->getDataItem('question_id', 0)); if ($questionId <= 0) { return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "问题ID必须大于0."); } $follow = QuestionFollow::count(["conditions" => "user_id = :uid: AND question_id = :qid: ", "bind" => ['uid' => $user->userId, 'qid' => $questionId]]); /** * 有权限且未关注则执行关注 */ if ($follow == 0) { $qf = new QuestionFollow(); $qf->user_id = $user->userId; $qf->question_id = $questionId; if ($qf->save()) { Question::updateFollows($questionId); $this->success = 1; } else { return $this->databaseErrorLog($qf); } } else { $this->success = 2; } $this->setResult(["success" => $this->success]); }
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() { $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 run() { if (false == $this->verifyUserAuth()) { return false; } $question_id = intval($this->getDataItem('question_id', 0)); if ($question_id == 0) { return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, 'URL参数不全'); } $UserFollow = new QuestionFollow(); if ($model = $UserFollow->findFirst("question_id = {$question_id} and user_id = {$this->getUserAuth()->userId}")) { $model->delete(); $this->setResult(['success' => 1, 'message' => '取消收藏成功']); } else { $this->setResult(['success' => 2, 'message' => '取消收藏失败']); } }
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); } } }
/** * 根据开通城市id获取问答列表 * @date: 2016年1月22日 * @author: 545 */ private function getQuestion($city_id, $limit, $userid = null, $order = null) { $questionlists = array(); $columns = ['q.question_id', 'q.question_content', 'q.question_pics', 'q.question_tag', 'q.answer_num', 'q.question_browsers', 'q.is_expert_reply', 'q.question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender']; //获取问答列表 $questionlist = CosPointquestion::query()->columns($columns)->join('\\Apps\\Common\\Models\\Question', 'q.question_id = \\Apps\\Common\\Models\\CosPointquestion.q_id', 'q')->join('\\Apps\\Common\\Models\\UserBase', 'u.user_id = q.user_id', 'u')->where('addr = :city_id:')->bind(['city_id' => $city_id])->limit($limit, 0)->orderBy($order)->execute()->toArray(); $QuestionFollow = new QuestionFollow(); foreach ($questionlist as $k => $val) { // 是否收藏过 if ($userid) { $questionlists[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $userid); } else { $questionlists[$k]['is_collection'] = '0'; } $questionlists[$k]['question_id'] = $val['question_id']; $questionlists[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content']; $questionlists[$k]['question_pics'] = []; if ($val['question_pics']) { $question_pics = []; foreach (json_decode($val['question_pics'], true) as $key => $value) { $question_pics[] = PicUrl::Question($value, $this->getDi()); } $questionlists[$k]['question_pics'] = $question_pics; } $questionlists[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : []; $questionlists[$k]['answer_num'] = $val['answer_num']; $questionlists[$k]['question_browsers'] = $val['question_browsers']; $questionlists[$k]['is_expert_reply'] = $val['is_expert_reply']; $questionlists[$k]['question_addtime'] = $val['question_addtime']; $questionlists[$k]['user_id'] = $val['user_id']; $questionlists[$k]['user_nickname'] = $val['user_nickname']; $questionlists[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi()); $questionlists[$k]['user_gender'] = $val['user_gender']; } return $questionlists; }
private function getFollow($userId, $columns, $limit, $offset) { return QuestionFollow::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\Question', 'Apps\\Common\\Models\\Question.question_id = Apps\\Common\\Models\\QuestionFollow.question_id')->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0 AND Apps\\Common\\Models\\QuestionFollow.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); } }