Esempio n. 1
0
 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]);
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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' => '取消收藏失败']);
     }
 }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
 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);
         }
     }
 }
Esempio n. 7
0
 /**
  * 根据开通城市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;
 }
Esempio n. 8
0
 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();
 }
Esempio n. 9
0
 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);
     }
 }