love_php/app/Http/Controllers/SoulController.php

102 lines
3.0 KiB
PHP
Raw Normal View History

2026-04-02 09:20:51 +08:00
<?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);
}
}