帖子详情

This commit is contained in:
2025-11-27 18:41:57 +08:00
parent 8630b3c984
commit bf18a31d5f
4 changed files with 50 additions and 8 deletions
+37 -2
View File
@@ -88,6 +88,28 @@ class PostController extends BaseController
return $data;
}
/**
* 获取详情
*
* @param Request $request 请求对象
* @param int|string $id 资源 ID
* @return mixed 返回资源详情数据
*/
public function show(Request $request)
{
try {
$raw = $this->service->serviceShow($request);
$data = $this->transformData($raw, method_exists($this, 'showFormat')
? [$this, 'showFormat']
: null);
return $this->success($data);
} catch (\Throwable $e) {
return $this->error($e->getMessage().$e->getFile().$e->getLine());
}
}
/**
* 列表页数据格式化
*
@@ -100,8 +122,21 @@ class PostController extends BaseController
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
if (isset($data['updated_at']))
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
if (isset($data['id']))
$data['media'] = PostMedia::where('post_id', $data['id'])->get();
$ossservice = new OssService();
if (isset($data['id'])){
$data['media'] = PostMedia::where('post_id', $data['id'])->get()->toArray();
foreach ($data['media'] as &$media) {
$media['url_pull'] = $ossservice->generatePrivateUrl($media['url']);
}
}
if (isset($data['user_id'])){
$data['user'] = User::where('id', $data['user_id'])->first();
unset($data['user']['password']);
$data['user']['avatar_pull'] = $data['user']['avatar'];
if(!str_contains($data['user']['avatar'], 'http') && !empty($data['user']['avatar'])){
$data['user']['avatar_pull'] = $ossservice->generatePrivateUrl($data['user']['avatar']);
}
}
return $data;
}
}
+6 -3
View File
@@ -126,9 +126,12 @@ class PostFavoriteService
$where['user_id'] = $param['user_id'];
$count = PostFavorite::where($where)->delete();
$post = PostFavorite::where(['id' => $param['post_id']])->first();
$post['favorite'] = $post['favorite']-1;
$post->save();
if ($count) {
$post = PostFavorite::where(['id' => $param['post_id']])->first();
$post['favorite'] = $post['favorite']-1;
$post['favorite'] = $post['favorite']<0?0:$post['favorite'];
$post->save();
}
return $count;
}
+6 -3
View File
@@ -126,9 +126,12 @@ class PostLikeService
$where['user_id'] = $param['user_id'];
$count = PostLike::where($where)->delete();
$post = Post::where(['id' => $param['post_id']])->first();
$post['like'] = $post['like']-1;
$post->save();
if ($count) {
$post = Post::where(['id' => $param['post_id']])->first();
$post['like'] = $post['like']-1;
$post['like'] = $post['like']<0?0:$post['like'];
$post->save();
}
return $count;
}
+1
View File
@@ -56,6 +56,7 @@ Route::group('/common', function () {
// 帖子
Route::group('/post', function () {
Route::any('/list', [app\common\controller\PostController::class, 'index']);
Route::any('/show', [app\common\controller\PostController::class, 'show']);
Route::any('/store', [app\admin\controller\PostController::class, 'store']);
// 评论