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)]); } }
/** * 回答问题 */ 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('参数错误!'); } } }
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)]); } }