Ejemplo n.º 1
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)]);
     }
 }
Ejemplo n.º 2
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;
 }
 /**
  *  回答问题
  * @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('参数错误!');
         }
     }
 }
Ejemplo n.º 4
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)]);
     }
 }