DiscussionSummaryController.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Http\Controllers\V3;
  3. use App\Http\Controllers\Concerns\ResolvesCurrentUser;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Requests\V3\SummaryDiscussionRequest;
  6. use App\Http\Resources\V3\DiscussionSummaryResource;
  7. use App\Services\V3\DiscussionService;
  8. /**
  9. * 某个对象上的话题概况。
  10. *
  11. * 取代 v2 `GET /v2/discussion` 响应里夹带的 active / close / can_create(v2 的 can_reply
  12. * 两个前端都没读过,不迁;能否回复改为每条话题自带的 abilities.reply)。
  13. */
  14. class DiscussionSummaryController extends Controller
  15. {
  16. use ResolvesCurrentUser;
  17. public function __construct(private readonly DiscussionService $discussions) {}
  18. /**
  19. * 话题概况
  20. *
  21. * 各状态的话题数(只数没删除的、当前用户看得见的),以及当前用户能在这个对象上
  22. * 发起哪些类型的话题(未登录为空数组)。
  23. *
  24. * @unauthenticated
  25. *
  26. * @queryParam target_type string required 挂靠对象的类型。Enum: sentence,wbw,article,term,task
  27. * @queryParam target_id string required 挂靠对象的 uuid
  28. * @queryParam type string 只数这种类型,不传则只数评论线程。Enum: discussion,qa,help,issue,note,commentary
  29. */
  30. public function __invoke(SummaryDiscussionRequest $request)
  31. {
  32. return DiscussionSummaryResource::make($this->discussions->summary(
  33. $request->validated(),
  34. $this->currentUserUid($request),
  35. ));
  36. }
  37. }