Example #1
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $question_tag = intval($this->getDataItem('tag_id', 0));
     $question_content = Keyword::Filter($this->getDataItem('content', ''));
     $up = new UploadPic();
     $question_pics = json_encode($up->questionPic());
     if (!empty($question_content)) {
         $q = new Question();
         $q->user_id = $this->getUserAuth()->userId;
         // $q->user_id = 1;
         $q->question_tag = $question_tag;
         //关键字替换
         $keyword = CosQKeyword::query()->execute()->toArray();
         foreach ($keyword as $k => $v) {
             $question_content = str_replace($v['keyword'], '***', $question_content);
         }
         //$question_content = base64_encode(serialize($question_content));
         $q->question_content = $question_content;
         $q->question_pics = $question_pics;
         if ($q->save()) {
             $this->id = $q->question_id;
             $this->success = 1;
             SearchASync::Instance()->noticeSync($q->question_id, SearchDataType::Question);
             //推送消息
             $phoneNum = ['15823522906', '13883156314', '18725873971', '15086691064', '18996156384', '13752904126', '18523066564', '15723278358', '18523989994', '15111992368', '18123640250', '18323868684'];
             foreach ($phoneNum as $k => $v) {
                 $param = array('type' => 8, 'ispushservice' => 0, 'phone' => $v, 'content' => '有新的问题啦:' . mb_substr($question_content, 0, 10, 'utf-8') . ',快去回答吧!', 'shop_id' => 0);
                 $push = new Jpush();
                 $rs = $push->setval($param);
                 if (empty($rs)) {
                     $push->push();
                 }
                 continue;
             }
         } else {
             return $this->databaseErrorLog($q);
         }
     } else {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "");
     }
     $this->setResult(['id' => $this->id, 'success' => $this->success]);
 }
Example #2
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]);
 }
Example #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);
 }
Example #4
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);
 }
Example #5
0
 public function run()
 {
     $keyword = $this->getDataItem('keyword');
     if (empty($keyword)) {
         $page = intval($this->getDataItem('page', 1));
         $offset = ($page - 1) * 10;
         $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers as browser_num', 'Apps\\Common\\Models\\Question.question_addtime as addtime', 'Apps\\Common\\Models\\Question.question_state as question_state'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where("Apps\\Common\\Models\\Question.question_state != -1")->orderBy('Apps\\Common\\Models\\Question.question_id desc')->limit(10, $offset)->execute()->toArray();
         foreach ($list as $k => $v) {
             $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true);
             if (unserialize(base64_decode($list[$k]['question_content']))) {
                 $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content']));
             }
             if (count($list[$k]['question_pics']) > 2) {
                 $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2);
             }
             $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover'];
             foreach ($list[$k]['question_pics'] as $key => $val) {
                 $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key];
             }
         }
         $this->setResult($list);
     } else {
         /* $page = intval($this->getDataItem('page', 1));
            $limit = $this->getConfig()->limit;
            $offset = ($page-1) * $limit;
            $data = $this->searchQuestion($keyword, $limit, $offset);
            $this->setResult($data); */
         /*多关键字搜索*/
         $keywordarr = explode(" ", trim($keyword));
         foreach ($keywordarr as $r) {
             $wherearr[] = "Apps\\Common\\Models\\Question.question_content like '%" . $r . "%'";
         }
         $where = implode(" or ", $wherearr);
         //////////////////////////////////////////////////////////////////////
         $page = intval($this->getDataItem('page', 1));
         $offset = ($page - 1) * 10;
         $list = QuestionModel::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', 'Apps\\Common\\Models\\Question.question_browsers as browser_num', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where("{$where} and Apps\\Common\\Models\\Question.question_state != -1")->orderBy('Apps\\Common\\Models\\Question.question_id desc')->limit(10, $offset)->execute()->toArray();
         foreach ($list as $k => $v) {
             $list[$k]['question_pics'] = json_decode($list[$k]['question_pics'], true);
             if (unserialize(base64_decode($list[$k]['question_content']))) {
                 $list[$k]['question_content'] = unserialize(base64_decode($list[$k]['question_content']));
             }
             if (count($list[$k]['question_pics']) > 2) {
                 $list[$k]['question_pics'] = array_slice($list[$k]['question_pics'], 0, 2);
             }
             $list[$k]['user_cover'] = "http://img.meelier.com/" . $list[$k]['user_cover'];
             foreach ($list[$k]['question_pics'] as $key => $val) {
                 $list[$k]['question_pics'][$key] = "http://img.meelier.com/" . $list[$k]['question_pics'][$key];
             }
         }
         if (count($list) == 0) {
             unset($list);
         }
         $this->setResult($list);
     }
 }
Example #6
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $questionId = intval($this->getDataItem('question_id', 0));
     $question_content = Keyword::Filter($this->getDataItem('content', ''));
     $up = new UploadPic();
     $question_pics = json_encode($up->questionPic());
     if ($questionId > 0 && !empty($question_content)) {
         // 查询最大楼层
         $floor = QuestionAnswer::maximum(["column" => "answer_floor", "conditions" => "question_id = :qid:", "bind" => ["qid" => $questionId]]);
         $qa = new QuestionAnswer();
         $qa->user_id = $this->getUserAuth()->userId;
         $qa->question_id = $questionId;
         //关键字替换
         $keyword = CosQKeyword::query()->execute()->toArray();
         foreach ($keyword as $k => $v) {
             $question_content = str_replace($v['keyword'], '***', $question_content);
         }
         $question_content = base64_encode(serialize($question_content));
         $qa->answer_content = $question_content;
         $qa->answer_floor = ($floor ? $floor : 0) + 1;
         $qa->answer_pics = $question_pics;
         if ($qa->save()) {
             $this->id = $qa->answer_id;
             $this->success = 1;
             // 记录回答数
             Question::updateAnswerNum($questionId);
         } else {
             return $this->databaseErrorLog($qa);
         }
     } else {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "");
     }
     //回答成功,推送消息
     $num = Question::query()->columns(['b.user_account'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=b.user_id', 'b')->where('Apps\\Common\\Models\\Question.question_id = ' . $questionId)->execute()->toArray();
     $phoneNum = $num[0]['user_account'];
     $param['type'] = 6;
     $param['ispushservice'] = 0;
     $param['phone'] = $phoneNum;
     $param['content'] = '您的问题有人回答了,快去看看吧!';
     $param['shop_id'] = 0;
     $push = new Jpush();
     $rs = $push->setval($param);
     if (!empty($rs) || empty($phoneNum)) {
         $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]);
     } else {
         $rs = $push->push();
         $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]);
     }
 }
Example #7
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);
 }
Example #8
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);
 }
Example #9
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);
         }
     }
 }
Example #10
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);
         }
     }
 }
Example #11
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);
     }
 }
Example #13
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $question_tag = $this->getDataItem('tag', '');
     $custom_tag = $this->getDataItem('custom_tag', '');
     $question_content = Keyword::Filter($this->getDataItem('content', ''));
     $city_code = (string) $this->getDataItem('city_code', '0');
     $up = new UploadPic();
     if ($question_pics = $up->questionPic()) {
         //            $question_pics = json_encode(array_slice($question_pics, 0, 3));
         $question_pics = json_encode($question_pics);
     } else {
         $question_pics = json_encode([]);
     }
     if (!empty($question_content) && $city_code != '0') {
         $q = new Question();
         $q->user_id = $this->getUserAuth()->userId;
         //关键字替换
         $keyword = CosQKeyword::query()->execute()->toArray();
         foreach ($keyword as $k => $v) {
             $question_content = str_replace($v['keyword'], '***', $question_content);
         }
         if ($question_tag) {
             $tag_id = '';
             $tagList = [];
             foreach ($question_tag as $k => $val) {
                 $tagList[] = $val['name'];
                 $tag_id .= $val['id'] . ',';
             }
             $tagLists = BeautyParlorTagInfo::query()->where('tag_id in(' . trim($tag_id, ',') . ')')->execute()->toArray();
             foreach ($tagLists as $val) {
                 if ($val['parent_id'] == 0) {
                     return $this->errorLog(ResultStatus::POST_BODY_FORMAT_ERROR, '不能选择一级标签!');
                 }
             }
             if ($custom_tag) {
                 $tagList[] = $custom_tag;
             }
             $q->question_tag = json_encode($tagList);
         }
         $q->question_content = $question_content;
         $q->question_pics = $question_pics;
         $date = date('Y-m-d H:i:s');
         $q->last_reply_time = $date;
         $q->question_addtime = $date;
         $q->city_code = $city_code;
         if ($q->save()) {
             if ($question_tag) {
                 // 保存问答的标签
                 $tagData = '';
                 foreach ($question_tag as $k => $val) {
                     $tagData .= "({$val['id']}, '{$val["name"]}', {$q->question_id}),";
                 }
                 $tagData = trim($tagData, ',');
                 $q->getReadConnection()->query("INSERT INTO question_tag (tag_id, tag_name, question_id) VALUES {$tagData}");
             }
             $this->id = $q->question_id;
             $this->success = 1;
             //                SearchASync::Instance()->noticeSync($q->question_id, SearchDataType::Question);
             //推送消息
             /*$phoneNum = [
                             	'15823522906',
                             	'13883156314',
                             	'18725873971',
                             	'15086691064',
                             	'18996156384',
                             	'13752904126',
                             	'18523066564',
                             	'15723278358',
                             	'18523989994',
                             	'15111992368',
                             	'18123640250',
                                 '18323868684',
                             ];
                             $push = new Jpush();
                             foreach($phoneNum as $k => $v){
                             	$param = array(
                             			'type' => 8,
                             			'ispushservice' => 0,
                             			'phone' => $v,
                             			'content' => '有新的问题啦:'.mb_substr($question_content,0,10,'utf-8').',快去回答吧!',
                             			'shop_id' => 0
                             	);
             
                             	$rs = $push -> setval($param);
                             	if(empty($rs)){
                             		$push -> push();
                             	}
                             	continue;
                             }*/
             // 推送测试(测试用的)
             $phoneNum = ['18723568681', '17790274639', '18225097233', '18723793180'];
             $push = new Jpush();
             foreach ($phoneNum as $k => $v) {
                 $param = array('type' => 8, 'ispushservice' => 0, 'phone' => $v, 'content' => '有新的问题啦:' . mb_substr($question_content, 0, 10, 'utf-8') . ',快去回答吧!', 'shop_id' => 0);
                 $rs = $push->setval($param);
                 if (empty($rs)) {
                     $push->push();
                 }
                 continue;
             }
         } else {
             return $this->databaseErrorLog($q);
         }
     } else {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "");
     }
     $this->setResult(['id' => $this->id, 'success' => $this->success]);
 }
 /**
  * 添加问题
  * @date: 2016-1-15 
  * @author: futao
  */
 public function addquestionAction()
 {
     $this->setLeftNav('addquestion');
     $req = $this->request;
     if (!$req->isPost()) {
         $userList = UserBase::find("is_manage = 1");
         $tag = BeautyParlorTagInfo::find("parent_id != 0 and tag_state = 1");
         $this->view->setVar('city_list', $this->openCityList());
         $this->view->setVar('userlist', $userList);
         $this->view->setVar('tag', $tag);
         $this->view->pick("question/add");
         return;
     }
     $this->view->disable();
     $echo = function ($msg, $state = false) {
         echo '<script type="text/javascript">';
         echo 'parent.formResult("' . $msg . '", ' . ($state ? 1 : 0) . ')';
         echo '</script>';
     };
     $questionContent = $req->getPost('question_content', null, '');
     $questionTag = $req->getPost('question_tag', null, '');
     $questionBrowsers = intval($req->getPost('question_browsers', null, 0));
     $userId = intval($req->getPost('user_id', null, 0));
     $cityCode = intval($req->getPost('city_id', null, 0));
     if ($userId < 0 || $questionBrowsers < 0) {
         $echo("添加失败!");
         return;
     }
     if (is_array($questionTag)) {
         foreach ($questionTag as $val) {
             $tagArr = explode(',', $val);
             $tagName = $tagArr[1];
             $tagNameArr[] = $tagName;
         }
     } else {
         $echo("标签必选!");
         return;
     }
     $questionModel = new Question();
     //保存图片
     if ($_FILES['q_photos']['name'][0] != '') {
         $uploadFile = new UploadPic();
         $uploadFile->request = $req;
         $questionPics = $uploadFile->questionPic();
         $questionModel->question_pics = json_encode($questionPics);
     } else {
         $questionModel->question_pics = json_encode([]);
     }
     $questionModel->question_content = $questionContent;
     $questionModel->city_code = $cityCode;
     $questionModel->question_browsers = $questionBrowsers;
     $questionModel->question_tag = json_encode($tagNameArr);
     $questionModel->user_id = $userId;
     if (!$questionModel->save()) {
         $echo("添加失败!");
         return;
     }
     if ($questionTag != '' && is_array($questionTag)) {
         unset($tagNameArr);
         unset($tagName);
         unset($tagArr);
         foreach ($questionTag as $val) {
             unset($tagId);
             unset($tagName);
             $tagArr = explode(',', $val);
             $tagId = $tagArr[0];
             $tagName = $tagArr[1];
             $tagNameArr[] = $tagName;
             $questionTagModel = new QuestionTag();
             $questionTagModel->question_id = $questionModel->question_id;
             $questionTagModel->tag_id = $tagId;
             $questionTagModel->tag_name = $tagName;
             if ($questionTagModel->save()) {
                 $echo("添加成功!", true);
             }
         }
     } else {
         $echo("添加失败!");
         return;
     }
 }
Example #15
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $questionId = intval($this->getDataItem('question_id', 0));
     $question_content = Keyword::Filter($this->getDataItem('content', ''));
     $city_code = $this->getDataItem('city_code', '0');
     $original_content = $this->getDataItem('original_content', '');
     if (!($question_content = trim($question_content))) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "回复内容不能为空!");
     }
     if ($questionId > 0 && !empty($question_content)) {
         if (mb_strlen($question_content) > 300) {
             return $this->errorLog(ResultStatus::POST_BODY_FORMAT_ERROR, '回复内容长度不能超过300字符');
         }
         //关键字替换
         $keyword = CosQKeyword::query()->execute()->toArray();
         foreach ($keyword as $k => $v) {
             $question_content = str_replace($v['keyword'], '***', $question_content);
         }
         $up = new UploadPic();
         $user_id = $this->getUserAuth()->userId;
         $type = (new UserBase())->is_expert($user_id) ? 2 : 1;
         // 用户类型(1=》普通,2=》专家)
         $data = ['question_id' => $questionId, 'user_id' => $user_id, 'answer_content' => $question_content, 'answer_pics' => json_encode($up->questionPic()), 'answer_addtime' => date('Y-m-d H:i:s'), 'city_code' => $city_code, 'type' => $type];
         if ($original_content) {
             $data['original_content'] = $original_content;
         }
         $QuestionAnswer = new QuestionAnswer();
         if ($QuestionAnswer->save($data)) {
             $this->success = 1;
             $Question = new Question();
             $Question->setAnswerNum($questionId, 1, true);
             if ($type == 2) {
                 // 修改问答为专家已回复状态
                 $Question->getReadConnection()->query('UPDATE question SET is_expert_reply = 1 WHERE question_id = ' . $questionId);
             }
         } else {
             return $this->databaseErrorLog($QuestionAnswer);
         }
     } else {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "缺少必传参数!");
     }
     //回答成功,推送消息
     $num = Question::query()->columns(['b.user_account'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=b.user_id', 'b')->where('Apps\\Common\\Models\\Question.question_id = ' . $questionId)->execute()->toArray();
     $phoneNum = $num[0]['user_account'];
     $param['type'] = 6;
     $param['ispushservice'] = 0;
     $param['phone'] = $phoneNum;
     $param['content'] = '您的问题有人回答了,快去看看吧!';
     $param['shop_id'] = 0;
     $push = new Jpush();
     $rs = $push->setval($param);
     if (!empty($rs) || empty($phoneNum)) {
         $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]);
     } else {
         $rs = $push->push();
         $this->setResult(['question_id' => $questionId, 'success' => $this->success, 'files_count' => count($_FILES)]);
     }
 }
Example #16
0
 private function syncQuestion($id)
 {
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'question_id', 'question_content', 'question_pics', 'answer_num', 'question_browsers', 'question_follows', 'question_addtime', 'question_state', 'tag_title'];
     $info = \Apps\Common\Models\Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->leftJoin('Apps\\Common\\Models\\QuestionTag', 'Apps\\Common\\Models\\Question.question_tag = qt.tag_id', 'qt')->where('question_id = :id:', ['id' => $id])->execute()->getFirst();
     if (!$info) {
         return false;
     }
     // 删除数据
     if ($info->question_state <= 0) {
         $this->delete(SearchDataType::Question, $info->question_id);
         return true;
     }
     // 同步数据
     $title = $info->tag_title;
     $searchContent = $info->question_content;
     $tagInt = $info->answer_num;
     $tagStr = '';
     $showData = json_encode(['user_id' => $info->user_id, 'user_nickname' => $info->user_nickname, 'user_cover' => $info->user_cover, 'question_id' => $info->question_id, 'question_content' => $info->question_content, 'question_pics' => $info->question_pics, 'answer_num' => $info->answer_num, 'browser_num' => $info->question_browsers, 'follow_num' => $info->question_follows, 'addtime' => $info->question_addtime]);
     $this->save(SearchDataType::Question, $id, $showData, $title, $searchContent, $tagInt, $tagStr);
     return true;
 }
Example #17
0
 private function getHis($userId, $columns, $limit, $offset)
 {
     return Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0 AND Apps\\Common\\Models\\Question.user_id=:user_id:')->bind(['user_id' => $userId])->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray();
 }
Example #18
0
 public function setAnswerStateAction()
 {
     $req = $this->request;
     if ($req->isPost()) {
         $id = intval($req->getPost('id', null, 0));
         $state = intval($req->getPost('state', null, -10000));
         if (!in_array($state, [-1, 0, 1])) {
             return (new ResponseResult())->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '请求异常');
         }
         $info = QuestionAnswer::findFirst('answer_id=' . $id);
         if ($info) {
             $info->update(['answer_state' => $state]);
             // 记录回答数
             Question::updateAnswerNum($info->question_id);
         }
         return (new ResponseResult())->sendResult('ok');
     } else {
         return (new ResponseResult())->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '请求异常');
     }
 }
Example #19
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);
     }
 }
Example #20
0
 /**
  * 回答问题
  */
 public function answerAction()
 {
     $req = $this->request;
     if (!$req->isPost()) {
         $id = intval($req->getQuery('id', null, 0));
         // 查询他匹配的用户
         $data = OmQuestionAnswerUser::query()->columns(['qau_id', 'ub.user_id', 'ub.user_account', 'ub.user_nickname'])->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\OmQuestionAnswerUser.user_id', 'ub')->where('op_id = :opId:', ['opId' => $this->operator->id])->execute();
         $this->view->setVar('userList', $data);
         $this->view->setVar('id', $id);
         return;
     }
     $response = new ResponseResult();
     $response->callback = $req->getPost('callback', null, 'parent.setFormResult');
     $response->callbackJavascriptTag = true;
     $id = intval($req->getPost('question_id', null, 0));
     if ($id <= 0) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数问题!');
         return $response;
     }
     $content = Keyword::Filter($req->getPost('answer_content', null, ''));
     $userId = intval($req->getPost('answer_user', null, 0));
     // 判断空数据
     if (empty($content) || $userId < 1) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
         return $response;
     }
     $up = new UploadPic();
     $questionPics = json_encode($up->questionPic());
     // 查询最大楼层
     $floor = QuestionAnswer::maximum(["column" => "answer_floor", "conditions" => "question_id = :qid:", "bind" => ["qid" => $id]]);
     $qa = new QuestionAnswer();
     $qa->user_id = $userId;
     $qa->question_id = $id;
     $qa->answer_content = $content;
     $qa->answer_floor = ($floor ? $floor : 0) + 1;
     $qa->answer_pics = $questionPics;
     if ($qa->save()) {
         // 记录回答数
         Question::updateAnswerNum($id);
         $response->sendResult($qa->answer_id);
     } else {
         $this->databaseErrorLog($qa);
         $response->sendError(ResponseResultStatus::DATABASE_ERROR, '保存数据异常!');
     }
     return $response;
 }
Example #21
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('参数错误!');
         }
     }
 }