KnowledgeController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Requests\Admin\KnowledgeSave;
  4. use App\Http\Requests\Admin\KnowledgeSort;
  5. use App\Models\Knowledge;
  6. use Illuminate\Http\Request;
  7. use App\Http\Controllers\Controller;
  8. use Illuminate\Support\Facades\DB;
  9. class KnowledgeController extends Controller
  10. {
  11. public function fetch(Request $request)
  12. {
  13. if ($request->input('id')) {
  14. $knowledge = Knowledge::find($request->input('id'))->toArray();
  15. if (!$knowledge) abort(500, '知识不存在');
  16. return response([
  17. 'data' => $knowledge
  18. ]);
  19. }
  20. return response([
  21. 'data' => Knowledge::select(['title', 'id', 'updated_at', 'category', 'show'])
  22. ->orderBy('sort', 'ASC')
  23. ->get()
  24. ]);
  25. }
  26. public function getCategory(Request $request)
  27. {
  28. return response([
  29. 'data' => array_keys(Knowledge::get()->groupBy('category')->toArray())
  30. ]);
  31. }
  32. public function save(KnowledgeSave $request)
  33. {
  34. $params = $request->validated();
  35. if (!$request->input('id')) {
  36. if (!Knowledge::create($params)) {
  37. abort(500, '创建失败');
  38. }
  39. } else {
  40. try {
  41. Knowledge::find($request->input('id'))->update($params);
  42. } catch (\Exception $e) {
  43. abort(500, '保存失败');
  44. }
  45. }
  46. return response([
  47. 'data' => true
  48. ]);
  49. }
  50. public function show(Request $request)
  51. {
  52. if (empty($request->input('id'))) {
  53. abort(500, '参数有误');
  54. }
  55. $knowledge = Knowledge::find($request->input('id'));
  56. if (!$knowledge) {
  57. abort(500, '知识不存在');
  58. }
  59. $knowledge->show = $knowledge->show ? 0 : 1;
  60. if (!$knowledge->save()) {
  61. abort(500, '保存失败');
  62. }
  63. return response([
  64. 'data' => true
  65. ]);
  66. }
  67. public function sort(KnowledgeSort $request)
  68. {
  69. DB::beginTransaction();
  70. foreach ($request->input('knowledge_ids') as $k => $v) {
  71. if (!Knowledge::find($v)->update(['sort' => $k + 1])) {
  72. DB::rollBack();
  73. abort(500, '保存失败');
  74. }
  75. }
  76. DB::commit();
  77. return response([
  78. 'data' => true
  79. ]);
  80. }
  81. public function drop(Request $request)
  82. {
  83. if (empty($request->input('id'))) {
  84. abort(500, '参数有误');
  85. }
  86. $knowledge = Knowledge::find($request->input('id'));
  87. if (!$knowledge) {
  88. abort(500, '知识不存在');
  89. }
  90. if (!$knowledge->delete()) {
  91. abort(500, '删除失败');
  92. }
  93. return response([
  94. 'data' => true
  95. ]);
  96. }
  97. }