ArticleMapController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\ArticleCollection;
  4. use App\Models\Article;
  5. use Illuminate\Http\Request;
  6. use App\Http\Resources\ArticleMapResource;
  7. class ArticleMapController 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 'anthology':
  19. $table = ArticleCollection::where('collect_id',$request->get('id'));
  20. break;
  21. case 'article':
  22. $table = ArticleCollection::where('article_id',$request->get('id'));
  23. break;
  24. }
  25. $result = $table->select(['id','collect_id','article_id','level','title','children'])->orderBy('id')->get();
  26. return $this->ok(["rows"=>ArticleMapResource::collection($result),"count"=>count($result)]);
  27. }
  28. /**
  29. * Store a newly created resource in storage.
  30. *
  31. * @param \Illuminate\Http\Request $request
  32. * @return \Illuminate\Http\Response
  33. */
  34. public function store(Request $request)
  35. {
  36. //
  37. $validated = $request->validate([
  38. 'anthology_id' => 'required',
  39. 'operation' => 'required'
  40. ]);
  41. switch ($validated['operation']) {
  42. case 'add':
  43. # code...
  44. $count=0;
  45. foreach ($request->get('article_id') as $key => $article) {
  46. # code...
  47. if(!ArticleCollection::where('article_id',$article)
  48. ->where('collect_id',$request->get('anthology_id'))
  49. ->exists())
  50. {
  51. $new = new ArticleCollection;
  52. $new->id = app('snowflake')->id();
  53. $new->article_id = $article;
  54. $new->collect_id = $request->get('anthology_id');
  55. $new->title = Article::find($article)->title;
  56. $new->level = 1;
  57. $new->save();
  58. $count++;
  59. }
  60. }
  61. return $this->ok($count);
  62. break;
  63. default:
  64. # code...
  65. break;
  66. }
  67. }
  68. /**
  69. * Display the specified resource.
  70. *
  71. * @param \App\Models\ArticleCollection $articleCollection
  72. * @return \Illuminate\Http\Response
  73. */
  74. public function show(ArticleCollection $articleCollection)
  75. {
  76. //
  77. }
  78. /**
  79. * Update the specified resource in storage.
  80. *
  81. * @param \Illuminate\Http\Request $request
  82. * @param string $id
  83. * @return \Illuminate\Http\Response
  84. */
  85. public function update(Request $request, string $id)
  86. {
  87. //
  88. $validated = $request->validate([
  89. 'operation' => 'required'
  90. ]);
  91. switch ($validated['operation']) {
  92. case 'anthology':
  93. $delete = ArticleCollection::where('collect_id',$id)->delete();
  94. $count=0;
  95. foreach ($request->get('data') as $key => $row) {
  96. # code...
  97. $new = new ArticleCollection;
  98. $new->id = app('snowflake')->id();
  99. $new->article_id = $row["article_id"];
  100. $new->collect_id = $id;
  101. $new->title = $row["title"];
  102. $new->level = $row["level"];
  103. $new->children = $row["children"];
  104. $new->save();
  105. $count++;
  106. }
  107. return $this->ok($count);
  108. break;
  109. }
  110. }
  111. /**
  112. * Remove the specified resource from storage.
  113. *
  114. * @param \App\Models\ArticleCollection $articleCollection
  115. * @return \Illuminate\Http\Response
  116. */
  117. public function destroy(ArticleCollection $articleCollection)
  118. {
  119. //
  120. }
  121. }