NavPageController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\PageNumber;
  4. use Illuminate\Http\Request;
  5. use App\Http\Resources\NavPageResource;
  6. class NavPageController 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. * 支持缅文版,PTS,等当前页,前一页,后一页,页面信息的获取
  21. * @param \Illuminate\Http\Request $request
  22. * @return \Illuminate\Http\Response
  23. */
  24. public function store(Request $request)
  25. {
  26. //
  27. }
  28. /**
  29. * Display the specified resource.
  30. *
  31. * @param string $pageNumber
  32. * @return \Illuminate\Http\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. * @param \Illuminate\Http\Request $request
  71. * @param \App\Models\PageNumber $pageNumber
  72. * @return \Illuminate\Http\Response
  73. */
  74. public function update(Request $request, PageNumber $pageNumber)
  75. {
  76. //
  77. }
  78. /**
  79. * Remove the specified resource from storage.
  80. *
  81. * @param \App\Models\PageNumber $pageNumber
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function destroy(PageNumber $pageNumber)
  85. {
  86. //
  87. }
  88. }