ChapterController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\PaliText;
  4. use Illuminate\Http\Request;
  5. use App\Http\Resources\ChapterResource;
  6. use App\Services\PaliTextService;
  7. class ChapterController extends Controller
  8. {
  9. /**
  10. * Display a listing of the resource.
  11. *
  12. * @return \Illuminate\Http\Response
  13. */
  14. public function index(Request $request)
  15. {
  16. //
  17. switch ($request->get('view')) {
  18. case 'toc':
  19. $chapter = PaliText::where('book', $request->get('book'))
  20. ->where('paragraph', $request->get('para'))
  21. ->first();
  22. $start = $request->get('para');
  23. $end = $request->get('para') + $chapter->chapter_len - 1;
  24. $table = PaliText::where('book', $request->get('book'))
  25. ->whereBetween('paragraph', [$start, $end])
  26. ->where('level', '<', 100)
  27. ->select(['book', 'paragraph', 'level', 'text', 'chapter_len', 'chapter_strlen', 'parent']);
  28. break;
  29. }
  30. //获取记录总条数
  31. $count = $table->count();
  32. //处理排序
  33. $table = $table->orderBy(
  34. $request->get("order", 'paragraph'),
  35. $request->get("dir", 'asc')
  36. );
  37. //处理分页
  38. $table = $table->skip($request->get("offset", 0))
  39. ->take($request->get("limit", 1000));
  40. $result = $table->get();
  41. return $this->ok([
  42. "rows" => ChapterResource::collection($result),
  43. "count" => $count
  44. ]);
  45. }
  46. /**
  47. * Store a newly created resource in storage.
  48. *
  49. * @param \Illuminate\Http\Request $request
  50. * @return \Illuminate\Http\Response
  51. */
  52. public function store(Request $request)
  53. {
  54. //
  55. }
  56. /**
  57. * Display the specified resource.
  58. *
  59. * @param string $id
  60. * @return \Illuminate\Http\Response
  61. */
  62. public function show(string $id)
  63. {
  64. $para = explode('-', $id);
  65. if (count($para) < 2) {
  66. return $this->error('参数错误', 400, 400);
  67. }
  68. $paliTextService = app(PaliTextService::class);
  69. $paragraph = $paliTextService->getCurrChapter($para[0], $para[1]);
  70. return $this->ok(new ChapterResource($paragraph));
  71. }
  72. /**
  73. * Update the specified resource in storage.
  74. *
  75. * @param \Illuminate\Http\Request $request
  76. * @param \App\Models\PaliText $paliText
  77. * @return \Illuminate\Http\Response
  78. */
  79. public function update(Request $request, PaliText $paliText)
  80. {
  81. //
  82. }
  83. /**
  84. * Remove the specified resource from storage.
  85. *
  86. * @param \App\Models\PaliText $paliText
  87. * @return \Illuminate\Http\Response
  88. */
  89. public function destroy(PaliText $paliText)
  90. {
  91. //
  92. }
  93. }