2
0

RelatedParagraphController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. /*
  3. *查询相关联的书
  4. *mula->attakhata->tika
  5. *算法:
  6. *在原始的html 文件里 如 s0404m1.mul.htm 有 <a name="para2_an8"></a>
  7. * 在 so404a.att.htm 里也有 </a><a name="para2_an8"></a>
  8. * 这说明这两个段落是关联段落,para2是段落编号 an8是书名只要书名一样,段落编号一样。
  9. * 两个就是关联段落
  10. *
  11. * 表名:cs6_para
  12. * 所以数据库结构是
  13. * book 书号 1-217
  14. * para 段落号
  15. * bookid
  16. * cspara 上述段落号
  17. * book_name 上述书名
  18. *
  19. * 输入 book para
  20. * 查询书名和段落号
  21. * 输入这个书名和段落号
  22. * 查询有多少段落有一样的书名和段落号
  23. * 有些book 里面有两本书。所以又加了一个bookid
  24. * 每个bookid代表一本真正的书。所以bookid 要比 book 多
  25. * bookid 是为了输出书名用的。不是为了查询相关段落
  26. *
  27. * 数据要求:
  28. * 制作时包含全部段落。做好后把没有相关段落的段落删掉??
  29. *
  30. */
  31. namespace App\Http\Controllers;
  32. use App\Http\Resources\RelatedParagraphResource;
  33. use App\Models\RelatedParagraph;
  34. use Illuminate\Http\Request;
  35. use Illuminate\Http\Response;
  36. class RelatedParagraphController extends Controller
  37. {
  38. /**
  39. * Display a listing of the resource.
  40. *
  41. * @return Response
  42. */
  43. public function index(Request $request)
  44. {
  45. //
  46. $first = RelatedParagraph::where('book', $request->input('book'))
  47. ->where('para', $request->input('para'))
  48. ->where('cs_para', '>', 0)
  49. ->first();
  50. if (! $first) {
  51. // 该段没有 cs6 锚点(约 2% 的段落如此),或 book/para 传错。
  52. // 「没有关联段落」是正常结果,不是错误——返回空集,让客户端能与故障区分开
  53. return $this->ok(['rows' => [], 'count' => 0]);
  54. }
  55. $result = RelatedParagraph::where('book_name', $first->book_name)
  56. ->where('cs_para', $first->cs_para)
  57. ->orderBy('book_id')
  58. ->orderBy('para')
  59. ->get();
  60. $books = [];
  61. foreach ($result as $value) {
  62. // 把段落整合成书。有几本书就有几条输出纪录
  63. if (! isset($books[$value->book_id])) {
  64. $books[$value->book_id]['book'] = $value->book;
  65. $books[$value->book_id]['book_id'] = $value->book_id;
  66. $books[$value->book_id]['cs6_para'] = $value->cs_para;
  67. }
  68. $books[$value->book_id]['para'][] = $value->para;
  69. }
  70. return $this->ok(['rows' => RelatedParagraphResource::collection($books), 'count' => count($books)]);
  71. }
  72. /**
  73. * Store a newly created resource in storage.
  74. *
  75. * @return Response
  76. */
  77. public function store(Request $request)
  78. {
  79. //
  80. }
  81. /**
  82. * Display the specified resource.
  83. *
  84. * @return Response
  85. */
  86. public function show(RelatedParagraph $relatedParagraph)
  87. {
  88. //
  89. }
  90. /**
  91. * Update the specified resource in storage.
  92. *
  93. * @return Response
  94. */
  95. public function update(Request $request, RelatedParagraph $relatedParagraph)
  96. {
  97. //
  98. }
  99. /**
  100. * Remove the specified resource from storage.
  101. *
  102. * @return Response
  103. */
  104. public function destroy(RelatedParagraph $relatedParagraph)
  105. {
  106. //
  107. }
  108. }