NavPageController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Resources\NavPageResource;
  4. use App\Models\PageNumber;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Response;
  7. class NavPageController extends Controller
  8. {
  9. /**
  10. * Display a listing of the resource.
  11. *
  12. * @return Response
  13. */
  14. public function index()
  15. {
  16. //
  17. }
  18. /**
  19. * Store a newly created resource in storage.
  20. * 页码导航
  21. * 支持缅文版,PTS,等当前页,前一页,后一页,页面信息的获取
  22. *
  23. * @return Response
  24. */
  25. public function store(Request $request)
  26. {
  27. //
  28. }
  29. /**
  30. * Display the specified resource.
  31. *
  32. * @return Response
  33. */
  34. public function show(string $pageNumber)
  35. {
  36. // M-99_100_101-1-37
  37. $id = explode('-', $pageNumber);
  38. if (count($id) !== 4) {
  39. return $this->error('参数错误。参数应为4 实际得到'.count($id), 400, 400);
  40. }
  41. $books = explode('_', $id[1]);
  42. $pageCurr = PageNumber::whereIn('pcd_book_id', $books)
  43. ->where('type', $id[0])
  44. ->where('volume', $id[2])
  45. ->where('page', $id[3])
  46. ->first();
  47. $pagePrev = PageNumber::whereIn('pcd_book_id', $books)
  48. ->where('type', $id[0])
  49. ->where('volume', $id[2])
  50. ->where('page', (int) $id[3] - 1)
  51. ->first();
  52. $pageNext = PageNumber::whereIn('pcd_book_id', $books)
  53. ->where('type', $id[0])
  54. ->where('volume', $id[2])
  55. ->where('page', (int) $id[3] + 1)
  56. ->first();
  57. if ($pageCurr) {
  58. return $this->ok([
  59. 'curr' => $pageCurr ? new NavPageResource($pageCurr) : null,
  60. 'prev' => $pagePrev ? new NavPageResource($pagePrev) : null,
  61. 'next' => $pageNext ? new NavPageResource($pageNext) : null,
  62. ]);
  63. } else {
  64. return $this->error('page not found');
  65. }
  66. }
  67. /**
  68. * Update the specified resource in storage.
  69. *
  70. * @return Response
  71. */
  72. public function update(Request $request, PageNumber $pageNumber)
  73. {
  74. //
  75. }
  76. /**
  77. * Remove the specified resource from storage.
  78. *
  79. * @return Response
  80. */
  81. public function destroy(PageNumber $pageNumber)
  82. {
  83. //
  84. }
  85. }