示例#1
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);
 }
示例#2
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $questionId = intval($this->getDataItem('question_id', 0));
     $answer_id = intval($this->getDataItem('answer_id', 0));
     $content = Keyword::Filter($this->getDataItem('content', ''));
     $user_id = intval($this->getDataItem('user_id', 0));
     $to_user_id = intval($this->getDataItem('to_user_id', 0));
     if ($questionId == 0 || empty($content) || $user_id == 0 || $to_user_id == 0 || $user_id == $to_user_id) {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '缺少参数或参数错误,请检查!');
     }
     if (mb_strlen($content) > 300) {
         return $this->errorLog(ResultStatus::POST_BODY_FORMAT_ERROR, '回复内容长度不能超过300字符');
     }
     // 身份检查
     if ($Question = Question::findFirst('question_id = ' . $questionId)) {
         $questionData = $Question->toArray();
     } else {
         $questionData = [];
     }
     $UserBase = new UserBase();
     if (!($questionData['user_id'] == $user_id || $UserBase->is_expert($user_id))) {
         return $this->errorLog(ResultStatus::QUERY_DATA_NOT_EXIST, '您没有权限评论!');
     }
     //关键字替换
     $keyword = CosQKeyword::query()->execute()->toArray();
     foreach ($keyword as $k => $v) {
         $content = str_replace($v['keyword'], '***', $content);
     }
     if (!$answer_id) {
         // 获取回复的id
         $QuestionAnswer = \Apps\Common\Models\QuestionAnswer::query()->where("question_id = {$questionId} and user_id = {$user_id}")->execute()->getFirst();
         $answer_id = $QuestionAnswer->answer_id ?: 0;
     }
     $up = new UploadPic();
     $data = ['question_id' => $questionId, 'answer_id' => $answer_id, 'content' => $content, 'pics' => json_encode($up->questionPic()), 'user_id' => $user_id, 'to_user_id' => $to_user_id, 'add_time' => date('Y-m-d H:i:s')];
     $QuestionAnswerComments = new QuestionAnswerComments();
     if ($QuestionAnswerComments->save($data)) {
         $this->setResult(['success' => 1, 'message' => '评论成功!']);
     } else {
         return $this->errorLog(ResultStatus::DATABASE_ERROR, '服务器异常!');
     }
 }
 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);
     }
 }
 /**
  * 答案列表
  * @date: 2016年1月19日 
  * @author: futao
  */
 public function answerListAction()
 {
     $this->setLeftNav('answer_list');
     $req = $this->request;
     $id = intval($req->getQuery('id', null, 0));
     if ($id <= 0) {
         $this->view->disable();
         echo '问题不存在!';
         return;
     }
     $page = intval($req->getQuery('page', null, 1));
     $page = $page > 0 ? $page : 1;
     $limit = $this->pageNavLimit;
     $offset = $limit * ($page - 1);
     $columns = ['question_id', 'answer_id', 'ub.user_id', 'user_nickname', 'user_cover', 'answer_floor', 'answer_content', 'answer_pics', 'answer_follows', 'answer_state', 'answer_addtime'];
     $list = QuestionAnswer::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionAnswer.user_id', 'ub')->where('question_id = :id:', ['id' => $id])->orderBy('answer_id ASC')->limit($limit, $offset)->execute()->toArray();
     foreach ($list as $k => $v) {
         //答案解码
         if (unserialize(base64_decode($list[$k]['answer_content']))) {
             $list[$k]['answer_content'] = unserialize(base64_decode($list[$k]['answer_content']));
         }
     }
     $this->view->setVar('page', $page);
     $this->view->setVar('limit', $limit);
     $this->view->setVar('total', QuestionAnswer::count('question_id = ' . $id));
     $this->view->setVar('data', $list);
     $this->view->setVar('id', $id);
 }
示例#5
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);
 }
 /**
  *  回答问题
  * @date: 2016-1-16 
  * @author: futao
  */
 public function addanswerAction()
 {
     $this->view->disable();
     $req = $this->request;
     $type = $req->getPost('type', null, 0);
     //1:回复楼主    3:回复网友
     $userId = intval($req->getPost('user_id', null, 0));
     $answerId = intval($req->getPost('answer', null, 0));
     $questionId = intval($req->getPost('question_id', null, 0));
     $content = $req->getPost('content', null, '');
     $echo = function ($msg, $state = false) {
         echo '<script type="text/javascript">';
         echo 'parent.formResult("' . $msg . '", ' . ($state ? 1 : 0) . ')';
         echo '</script>';
     };
     if ($type == 3) {
         if ($answerId < 0) {
             $echo("参数错误!");
             return;
         }
     }
     if ($questionId < 0 || $userId < 0) {
         $echo('参数错误!');
         return;
     }
     $floor = QuestionAnswer::query()->where("question_id = {$questionId}")->orderBy("answer_id desc")->execute()->getFirst();
     if (!floor) {
         $floor = json_encode(['answer_floor' => 0]);
     }
     Question::findFirst($questionId)->update(['is_manager_reply' => 1]);
     $uploadModel = new UploadPic();
     $uploadModel->request = $req;
     $picArr = $uploadModel->questionPic();
     if ($type == 1) {
         $questionModel = new QuestionAnswer();
         $questionModel->answer_floor = $floor->answer_floor + 1;
         $questionModel->answer_content = base64_encode(serialize($content));
         $questionModel->user_id = $userId;
         $questionModel->question_id = $questionId;
         $questionModel->answer_state = 1;
         $questionModel->type = 0;
         $questionModel->answer_pics = json_encode($picArr);
         if ($questionModel->save()) {
             $echo("回复成功!", true);
         }
     } else {
         if ($type == 3) {
             $answerInfo = QuestionAnswer::findFirst($answerId);
             $questionModel = new QuestionAnswer();
             $questionModel->answer_floor = $floor->answer_floor + 1;
             $questionModel->answer_content = base64_encode(serialize($content));
             $questionModel->user_id = $userId;
             $questionModel->question_id = $questionId;
             $questionModel->answer_state = 1;
             $questionModel->type = 0;
             $questionModel->answer_pics = json_encode($picArr);
             $questionModel->original_content = $answerInfo->answer_content;
             if ($questionModel->save()) {
                 $echo('回复成功!', true);
             }
         } else {
             $echo('参数错误!');
         }
     }
 }
示例#7
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);
 }