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); } } }
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]); }
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)]); } }