TutorialController.php 2.6 KB

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