Ejemplo n.º 1
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);
 }
Ejemplo n.º 2
0
 public function run()
 {
     $questionId = intval($this->getDataItem('question_id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     $page = intval($this->getDataItem('page', 1));
     //        $questionId = 194;
     if ($questionId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数不完整或者参数错误!');
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $QuestionAnswer = new QuestionAnswer();
     $expertReplyList = $QuestionAnswer->query()->columns(['u.user_id', 'u.user_cover', 'u.user_nickname', 'u.user_gender', 'answer_id', 'answer_content', 'original_content', 'support_count', 'answer_addtime', 'answer_pics'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'u')->where("answer_state = 1 and type = 1 and question_id = {$questionId}")->orderBy('answer_addtime DESC')->limit($limit, $offset)->execute()->toArray();
     $QuestionAnswerFollow = new QuestionAnswerFollow();
     foreach ($expertReplyList as $k => $val) {
         $expertReplyList[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $expertReplyList[$k]['answer_content'] = unserialize(base64_decode($val['answer_content'])) ?: $val['answer_content'];
         if ($user_id > 0) {
             $expertReplyList[$k]['is_support'] = $QuestionAnswerFollow->is_support($user_id, $val['answer_id']) ? '1' : '0';
         } else {
             $expertReplyList[$k]['is_support'] = '0';
         }
         $answer_pics = [];
         if ($answer_pics_list = json_decode($val['answer_pics'], true)) {
             foreach ($answer_pics_list as $value) {
                 $answer_pics[] = PicUrl::Question($value, $this->getDi());
             }
         }
         $expertReplyList[$k]['answer_pics'] = $answer_pics;
     }
     $this->setResult($expertReplyList);
 }
Ejemplo n.º 3
0
 /**
  * 问答
  */
 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);
 }
Ejemplo n.º 4
0
 public function run()
 {
     $his_id = $this->getDataItem('his_id');
     //要查询用户的id
     $type = $this->getDataItem('type', '');
     $page = intval($this->getDataItem('page', 1));
     /**
      * 验证用户权限
      */
     if (!empty($this->parameters->userToken) && true == $this->verifyUserAuth()) {
         if ($this->getUserAuth()->userId == $his_id) {
             return $this->errorLog(111, '请跳转我的问答.');
         }
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $typeArray = ['his', 'his_answer', 'his_follow'];
     if (!in_array($type, $typeArray)) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '查询的类型不存在.');
     }
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id question_id', 'Apps\\Common\\Models\\Question.question_content question_content', 'Apps\\Common\\Models\\Question.question_pics question_pics', 'Apps\\Common\\Models\\Question.answer_num answer_num', 'Apps\\Common\\Models\\Question.question_browsers browser_num', 'Apps\\Common\\Models\\Question.question_follows follow_num', 'Apps\\Common\\Models\\Question.question_addtime addtime'];
     $userId = $his_id;
     $data = [];
     switch ($type) {
         case 'his':
             $data = $this->getHis($userId, $columns, $limit, $offset);
             break;
         case 'his_answer':
             $data = $this->getAnswer($userId, $limit, $offset);
             break;
         case 'his_follow':
             $data = $this->getFollow($userId, $columns, $limit, $offset);
             break;
     }
     $result = [];
     if ($data && count($data) > 0) {
         foreach ($data as $arr) {
             $tmp = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
             if (is_string($tmp)) {
                 $arr['question_pics'] = $tmp;
             }
             if (is_array($tmp)) {
                 $arr['question_pics'] = array_slice($tmp, 0, 2);
             }
             //$arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             if (unserialize(base64_decode($arr['question_content']))) {
                 $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
             }
             $result[] = $arr;
         }
     }
     $this->setResult($result);
 }
Ejemplo n.º 5
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);
 }
Ejemplo n.º 6
0
 public function run()
 {
     /* $jpush=new Jpush();
       	$param['type'] =1;
       	$param['ispushservice']=1;
       	$param['phone'] ='18623640927';
       	$param['content'] ="HAHHA";
       	$jpush->setval($param);
       	$a=$jpush->push();
       	var_dump($a);
       	exit; */
     $questionId = intval($this->getDataItem('question_id', 0));
     $page = intval($this->getDataItem('page', 1));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $this->verifyUserAuth(false);
     $userId = $this->getUserAuth() ? $this->getUserAuth()->userId : 0;
     if (0 < $questionId) {
         $this->answers = QuestionAnswer::listByQuestionId($questionId, $limit, $offset, $userId)->toArray();
     } else {
         $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, 'question id');
     }
     $this->answers = $this->answers ? $this->answers : [];
     $data = [];
     $dataBest = null;
     foreach ($this->answers as $arr) {
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         $arr['answer_pics'] = PicUrl::Question(json_decode($arr['answer_pics']), $this->getDi());
         $arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
         if (unserialize(base64_decode($arr['answer_content']))) {
             $arr['answer_content'] = unserialize(base64_decode($arr['answer_content']));
         }
         // 处理最佳答案
         $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;
         $data[] = $arr;
     }
     if ($dataBest != null) {
         $dataBest['answer_best'] = 1;
         array_splice($data, 0, 0, [$dataBest]);
     }
     $this->setResult($data);
 }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 8
0
 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);
         }
     }
 }
Ejemplo n.º 9
0
 public function run()
 {
     /*if(false == $this->verifyUserAuth()){
           return false;
       }*/
     $type = $this->getDataItem('type', '');
     $page = intval($this->getDataItem('page', 1));
     $userId = intval($this->getDataItem('user_id', 0));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $typeArray = ['my', 'answer', 'follow'];
     if (!in_array($type, $typeArray) || $userId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '查询的类型不存在.');
     }
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_gender', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id question_id', 'Apps\\Common\\Models\\Question.question_content question_content', 'Apps\\Common\\Models\\Question.question_pics question_pics', 'Apps\\Common\\Models\\Question.answer_num answer_num', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_addtime', 'question_tag'];
     $data = [];
     switch ($type) {
         case 'my':
             $data = $this->getMy($userId, $columns, $limit, $offset);
             break;
         case 'answer':
             $data = $this->getAnswer($userId, $limit, $offset);
             break;
         case 'follow':
             $data = $this->getFollow($userId, $columns, $limit, $offset);
             break;
     }
     $result = [];
     if ($data) {
         foreach ($data as $arr) {
             $tmp = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
             if (is_string($tmp)) {
                 $arr['question_pics'] = $tmp;
             }
             if (is_array($tmp)) {
                 //                    $arr['question_pics'] = array_slice($tmp, 0,2);
                 $arr['question_pics'] = $tmp;
             }
             //$arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             if (unserialize(base64_decode($arr['question_content']))) {
                 $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
             }
             $arr['question_tag'] = json_decode($arr['question_tag'], true) ?: [];
             $result[] = $arr;
         }
     }
     $this->setResult($result);
 }
Ejemplo n.º 10
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);
     }
 }
Ejemplo n.º 11
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);
         }
     }
 }
Ejemplo n.º 12
0
 public function searchQuestion($keyword, $limit = 5, $offset = 0)
 {
     $searchObj = $this->getSearchObj();
     $searchResult = $searchObj->search($keyword, 'type=' . SearchDataType::Question, $limit, $offset);
     $questions = $this->getSearchResult($searchResult);
     $questions = $questions ? $questions : [];
     $data = [];
     foreach ($questions as $arr) {
         $arr['question_pics'] = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         if (unserialize(base64_decode($arr['question_content']))) {
             $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
         }
         $data[] = $arr;
     }
     return $data;
 }
Ejemplo n.º 13
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;
 }
Ejemplo n.º 14
0
 /**
  * 问题预览
  * @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);
 }
Ejemplo n.º 15
0
 public function run()
 {
     $questionId = intval($this->getDataItem('question_id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     $page = intval($this->getDataItem('page', 1));
     //        $questionId = 194;
     if ($questionId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数不完整或者参数错误!');
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $QuestionAnswer = new QuestionAnswer();
     $expertReplyList = $QuestionAnswer->query()->columns(['u.user_id', 'u.user_cover', 'u.user_nickname', 'answer_id', 'answer_content', 'support_count', 'answer_addtime', 'answer_pics', 'a.attr_value_json'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'u')->leftJoin('\\Apps\\Common\\Models\\UserAttribute', 'a.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'a')->where("a.attr_type = 103 and a.attr_state = 1 and answer_state = 1 and type = 2 and question_id = {$questionId}")->orderBy('answer_addtime DESC')->limit($limit, $offset)->execute()->toArray();
     $QuestionAnswerComments = new QuestionAnswerComments();
     $UserBase = new UserBase();
     $QuestionAnswerFollow = new QuestionAnswerFollow();
     foreach ($expertReplyList as $k => $val) {
         if ($val['attr_value_json']) {
             $objAttrValueJoin = json_decode($val['attr_value_json']);
             $expertReplyList[$k]['experttitle'] = $objAttrValueJoin->experttitle;
             $expertReplyList[$k]['field'] = $objAttrValueJoin->field ?: [];
         } else {
             $expertReplyList[$k]['experttitle'] = [];
             $expertReplyList[$k]['field'] = [];
         }
         $expertReplyList[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $expertReplyList[$k]['answer_content'] = unserialize(base64_decode($val['answer_content'])) ?: $val['answer_content'];
         if ($user_id > 0) {
             $expertReplyList[$k]['is_support'] = $QuestionAnswerFollow->is_support($user_id, $val['answer_id']) ? '1' : '0';
         } else {
             $expertReplyList[$k]['is_support'] = '0';
         }
         $answer_pics = [];
         if ($answer_pics_list = json_decode($val['answer_pics'], true)) {
             foreach ($answer_pics_list as $value) {
                 $answer_pics[] = PicUrl::Question($value, $this->getDi());
             }
         }
         $expertReplyList[$k]['answer_pics'] = $answer_pics;
         unset($expertReplyList[$k]['attr_value_json']);
         if ($item = $QuestionAnswerComments->query()->where('answer_id = ' . $val['answer_id'])->limit(10, 0)->execute()->toArray()) {
             foreach ($item as $key => $v) {
                 $user_info = $UserBase->getOne($v['user_id']);
                 $to_user_info = $UserBase->getOne($v['to_user_id']);
                 $item[$key]['user_info'] = ['user_id' => $v['user_id'], 'user_nickname' => $user_info['user_nickname']];
                 $item[$key]['to_user_info'] = ['user_id' => $v['to_user_id'], 'user_nickname' => $to_user_info['user_nickname']];
                 $pics = [];
                 if ($pics_list = json_decode($v['pics'], true)) {
                     foreach ($pics_list as $values) {
                         $pics[] = PicUrl::Question($values, $this->getDi());
                     }
                 }
                 $item[$key]['pics'] = $pics;
                 unset($item[$key]['user_id'], $item[$key]['to_user_id']);
             }
             $expertReplyList[$k]['item'] = $item;
         } else {
             $expertReplyList[$k]['item'] = [];
         }
     }
     $this->setResult($expertReplyList);
 }