158 lines
4.2 KiB
PHP
158 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace App\Api\Controllers;
|
|
|
|
use App\Api\Requests\DynamicRequest;
|
|
use App\Api\Resources\CommentResource;
|
|
use App\Api\Resources\DynamicCollection;
|
|
use App\Models\Comment;
|
|
use App\Models\Dynamic;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Jason\Api\Api;
|
|
|
|
class DynamicController extends Controller
|
|
{
|
|
public function index(Request $request): JsonResponse
|
|
{
|
|
$createdAt = $request->created_at ?? '';
|
|
$dynamics = Dynamic::where('status', 1)
|
|
->when($createdAt, function ($query) use ($createdAt) {
|
|
$query->where('created_at', '<', $createdAt);
|
|
})
|
|
->orderBy('created_at', 'desc')
|
|
->paginate();
|
|
|
|
return $this->success(new DynamicCollection($dynamics));
|
|
}
|
|
/**
|
|
* @Notes : 添加动态
|
|
*
|
|
* @Date : 2022/6/17 11:29
|
|
* @param DynamicRequest $request
|
|
* @return JsonResponse
|
|
* @author : Mr.wang
|
|
*/
|
|
public function store(DynamicRequest $request): JsonResponse
|
|
{
|
|
$user = Api::user();
|
|
|
|
$dynamic = Dynamic::create([
|
|
'user_id' => $user->id,
|
|
'description' => $request->description ?? '',
|
|
'pictures' => $request->pictures ?? '',
|
|
'status' => 1,
|
|
]);
|
|
if ($dynamic) {
|
|
return $this->success();
|
|
} else {
|
|
return $this->failed('失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Notes : 删除动态
|
|
*
|
|
* @Date : 2022/6/17 11:33
|
|
* @author : Mr.wang
|
|
* @param Dynamic $dynamic
|
|
* @return JsonResponse
|
|
*/
|
|
public function destroy(Dynamic $dynamic): JsonResponse
|
|
{
|
|
$user = Api::user();
|
|
if ($user->id != $dynamic->user_id) {
|
|
return $this->failed('没有删除权限');
|
|
}
|
|
|
|
if ($dynamic->delete()) {
|
|
return $this->success(true);
|
|
} else {
|
|
return $this->failed('失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Notes : 点赞/取消
|
|
*
|
|
* @Date : 2022/6/17 13:18
|
|
* @author : Mr.wang
|
|
* @param Dynamic $dynamic
|
|
* @return JsonResponse
|
|
*/
|
|
public function like(Dynamic $dynamic): JsonResponse
|
|
{
|
|
$user = Api::user();
|
|
|
|
if ($user->hasLiked($dynamic)) {
|
|
$user->unlike($dynamic);
|
|
return $this->success([
|
|
'is_like' => false,
|
|
]);
|
|
} else {
|
|
$user->like($dynamic);
|
|
return $this->success([
|
|
'is_like' => true,
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Notes : 添加评论
|
|
*
|
|
* @Date : 2022/6/20 15:43
|
|
* @author : Mr.wang
|
|
* @param Request $request
|
|
* @param Dynamic $dynamic
|
|
* @return JsonResponse
|
|
*/
|
|
public function comment(Request $request, Dynamic $dynamic): JsonResponse
|
|
{
|
|
$user = Api::user();
|
|
if (empty($request->input('content'))) {
|
|
return $this->failed('评论内容不能为空');
|
|
}
|
|
$parentId = $request->parent_id ?? 0;
|
|
$result = $dynamic->comments()->create([
|
|
'user_id' => $user->id,
|
|
'parent_id' => $parentId,
|
|
'content' => $request->input('content'),
|
|
'status' => 1,
|
|
]);
|
|
if ($result) {
|
|
return $this->success(new CommentResource($result));
|
|
} else {
|
|
return $this->failed('失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Notes :
|
|
*
|
|
* @Date : 2022/10/27 11:00
|
|
* @Author : <Jason.C>
|
|
* @param Dynamic $dynamic
|
|
* @param Comment $comment
|
|
* @return JsonResponse
|
|
*/
|
|
public function commentDestroy(Dynamic $dynamic, Comment $comment): JsonResponse
|
|
{
|
|
$user = Api::user();
|
|
|
|
if ($comment->user()->isNot($user)) {
|
|
return $this->failed('没有删除权限');
|
|
}
|
|
|
|
$dynComment = $dynamic->comments()->where('id', $comment->id)->first();
|
|
if ($dynComment) {
|
|
$dynComment->status = 0;
|
|
if ($dynComment->save()) {
|
|
return $this->success(true);
|
|
} else {
|
|
return $this->failed(false);
|
|
}
|
|
} else {
|
|
return $this->failed('没有相应评论');
|
|
}
|
|
}
|
|
} |