NavArticleController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\ArticleCollection;
  4. use Illuminate\Http\Request;
  5. use App\Http\Resources\ArticleMapResource;
  6. class NavArticleController extends Controller
  7. {
  8. /**
  9. * Display a listing of the resource.
  10. *
  11. * @return \Illuminate\Http\Response
  12. */
  13. public function index()
  14. {
  15. //
  16. }
  17. /**
  18. * Store a newly created resource in storage.
  19. *
  20. * @param \Illuminate\Http\Request $request
  21. * @return \Illuminate\Http\Response
  22. */
  23. public function store(Request $request)
  24. {
  25. //
  26. }
  27. /**
  28. * Display the specified resource.
  29. * 文章导航
  30. * 文集中 某个文章的 前一个,后一个
  31. * @param \App\Models\ArticleCollection $articleCollection
  32. * @return \Illuminate\Http\Response
  33. */
  34. public function show(string $id)
  35. {
  36. //article_anthology
  37. $id = explode('_',$id);
  38. if(count($id) !== 2){
  39. return $this->error('参数错误。参数应为 2 实际得到'.count($id),400,400);
  40. }
  41. $curr = ArticleCollection::where('collect_id',$id[1])
  42. ->where('article_id',$id[0])
  43. ->first();
  44. if(!$curr){
  45. return $this->error('article not found');
  46. }
  47. $data = array();
  48. $data['curr'] = new ArticleMapResource($curr);
  49. $prev = ArticleCollection::where('id','<',$curr->id)
  50. ->orderBy('id','desc')
  51. ->first();
  52. if($prev && $prev->level === $curr->level){
  53. $data['prev'] = new ArticleMapResource($prev);
  54. }
  55. $next = ArticleCollection::where('id','>',$curr->id)
  56. ->orderBy('id')
  57. ->first();
  58. if($next && $next->level === $curr->level){
  59. $data['next'] = new ArticleMapResource($next);
  60. }
  61. return $this->ok($data);
  62. }
  63. /**
  64. * Update the specified resource in storage.
  65. *
  66. * @param \Illuminate\Http\Request $request
  67. * @param \App\Models\ArticleCollection $articleCollection
  68. * @return \Illuminate\Http\Response
  69. */
  70. public function update(Request $request, ArticleCollection $articleCollection)
  71. {
  72. //
  73. }
  74. /**
  75. * Remove the specified resource from storage.
  76. *
  77. * @param \App\Models\ArticleCollection $articleCollection
  78. * @return \Illuminate\Http\Response
  79. */
  80. public function destroy(ArticleCollection $articleCollection)
  81. {
  82. //
  83. }
  84. }