102 lines
3.0 KiB
PHP
102 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\SoulQuestion;
|
|
use App\Models\SoulAnswer;
|
|
use App\Jobs\SubmitSoulQuestion;
|
|
class SoulController extends Controller
|
|
{
|
|
/**
|
|
* 问题列表
|
|
*/
|
|
public function questions(Request $request, SoulQuestion $question_obj)
|
|
{
|
|
$questions = $question_obj->with('user')->withCount('answers')->where('status', 1);
|
|
$keyword = $request->input('keyword');
|
|
if ($keyword) {
|
|
$keyword = trim($keyword);
|
|
$questions = $questions->where('title', 'like', '%'.$keyword.'%');
|
|
}
|
|
$questions = $questions->orderBy('id', 'desc')->paginate();
|
|
return $this->success('ok', $questions);
|
|
}
|
|
|
|
/**
|
|
* 提问题
|
|
*/
|
|
public function submitQuestion(Request $request, SoulQuestion $question_obj)
|
|
{
|
|
//检测字段
|
|
$title = $request->input('title');
|
|
if (empty($title)) {
|
|
return $this->failure('请输入问题标题');
|
|
}
|
|
$content = $request->input('content');
|
|
if (empty($content)) {
|
|
return $this->failure('请输入问题内容');
|
|
}
|
|
//创建问题
|
|
$question = $question_obj->create([
|
|
'user_id'=> auth()->id(),
|
|
'title'=>$title,
|
|
'content'=>$content
|
|
]);
|
|
//提交到心灵密友
|
|
SubmitSoulQuestion::dispatch($question)->onQueue('love');
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 问题详情
|
|
*/
|
|
public function question(Request $request, SoulQuestion $soul_question)
|
|
{
|
|
$soul_question->user;
|
|
//添加点击量
|
|
$soul_question->increment('click_num', 1);
|
|
//回答列表
|
|
$answers = $soul_question->answers()->with('user')->orderBy('type', 'desc')->orderBy('id', 'desc')->paginate();
|
|
return $this->success('ok', compact('answers', 'soul_question'));
|
|
}
|
|
|
|
/**
|
|
* 我的问答
|
|
*/
|
|
public function userQuestions(Request $request, SoulQuestion $soul_question)
|
|
{
|
|
$user = auth()->user();
|
|
$questions = $soul_question->with('user')->withCount('answers')->where('user_id', $user->id);
|
|
$keyword = $request->input('keyword');
|
|
if ($keyword) {
|
|
$keyword = trim($keyword);
|
|
$questions = $questions->where('title', 'like', '%'.$keyword.'%');
|
|
}
|
|
$questions = $questions->orderBy('id', 'desc')->paginate();
|
|
return $this->success('ok', $questions);
|
|
}
|
|
|
|
/**
|
|
* 回复
|
|
*/
|
|
public function replyQuestion(Request $request, SoulQuestion $soul_question, SoulAnswer $soul_answer)
|
|
{
|
|
$user = auth()->user();
|
|
$answer = $request->input('answer');
|
|
if (empty($answer)) {
|
|
return $this->failure('请输入回复内容');
|
|
}
|
|
$data = [
|
|
'user_id'=>$user->id,
|
|
'question_id'=>$soul_question->id,
|
|
'answer'=>$answer,
|
|
'is_text'=>1,
|
|
'type'=>'USER',
|
|
];
|
|
$answer_obj = $soul_answer->create($data);
|
|
return $this->success('ok', $answer_obj);
|
|
|
|
}
|
|
}
|