| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- /*
- |--------------------------------------------------------------------------
- | v3 · interaction —— 用户对内容的互动
- |--------------------------------------------------------------------------
- |
- | 由 routes/api.php 的 v3 组 require 进来,前缀已在那边加好。
- |
- | 将来 notification、tag 也落在这个文件。
- |
- */
- use App\Http\Controllers\V3\DiscussionBatchCountController;
- use App\Http\Controllers\V3\DiscussionController;
- use App\Http\Controllers\V3\DiscussionReplyController;
- use App\Http\Controllers\V3\DiscussionSummaryController;
- use App\Http\Controllers\V3\MeReactionController;
- use App\Http\Controllers\V3\ReactionController;
- use App\Http\Controllers\V3\ReactionTallyController;
- use Illuminate\Support\Facades\Route;
- // reactions(点赞/收藏/书签/关注/下载记录)。资源改名是 CLAUDE.md
- // 「已登记的改名例外」里的唯一一条,底层仍是 v2 的 likes 表。
- // tally 要注册在 apiResource 之前:将来给 reactions 补上 show 之后,
- // {reaction} 会把 tally 当成 uid 吃掉
- Route::get('reactions/tally', [ReactionTallyController::class, 'index']);
- // 公共只读:某个 target 下的 reactions
- Route::apiResource('reactions', ReactionController::class)->only(['index']);
- // 当前用户自己的 reactions:全线登录,由 auth.v3 中间件在进控制器前挡掉
- Route::prefix('me')->as('me.')->middleware('auth.v3')->group(function () {
- Route::apiResource('reactions', MeReactionController::class)->only(['index', 'store', 'destroy']);
- });
- // discussions(评论线程:话题 + 一层回复)。批注(note / commentary)同表但不归这里管。
- // summary 要注册在 apiResource 之前,否则 {discussion} 会把它当成 uuid 吃掉
- Route::get('discussions/summary', DiscussionSummaryController::class);
- // 一批对象(句子 / 逐词)的讨论角标。POST:一页几百个 uid 放不进查询串
- Route::post('discussions/batch-count', DiscussionBatchCountController::class);
- // 读公开(可选登录),写要登录。show 与回复列表要能读到墓碑(软删了但还挂着回复的话题)。
- // 只注册 PATCH,不注册 PUT:v3 的更新只做局部更新(v3-resource skill 硬规范第 10 条)
- Route::apiResource('discussions', DiscussionController::class)
- ->except(['update'])
- ->middlewareFor(['store', 'destroy'], 'auth.v3')
- ->withTrashed(['show'])
- ->whereUuid('discussion');
- Route::patch('discussions/{discussion}', [DiscussionController::class, 'update'])
- ->middleware('auth.v3')
- ->whereUuid('discussion');
- Route::get('discussions/{discussion}/replies', [DiscussionReplyController::class, 'index'])
- ->withTrashed()
- ->whereUuid('discussion');
- Route::post('discussions/{discussion}/replies', [DiscussionReplyController::class, 'store'])
- ->middleware('auth.v3')
- ->whereUuid('discussion');
|