SchoolController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Models\Asset;
  4. use App\Http\Models\AssetType;
  5. use App\Http\Requests\School\AssetSaveRequest;
  6. use App\Http\Requests\School\AssetTypeSaveRequest;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. /**
  10. * 引擎力学堂
  11. * Class SchoolController
  12. * @package App\Http\Controllers\Admin
  13. */
  14. class SchoolController extends Controller
  15. {
  16. //资源类型
  17. public function assetTypes(Request $request)
  18. {
  19. if (!$request->ajax()) {
  20. return view('admin/school/asset_type');
  21. }
  22. if ($keyword = $request->input('keyword')) {
  23. $filter[] = ['title', 'like', '%' . $keyword . '%'];
  24. }
  25. $records = AssetType::query()->where($filter ?? [])->orderByDesc('id')
  26. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  27. $items = $records->items();
  28. return response()->json([
  29. 'rows' => $items,
  30. 'total' => $records->total()
  31. ]);
  32. }
  33. //资源类型 保存
  34. public function assetTypesSave(AssetTypeSaveRequest $request, $id)
  35. {
  36. if (!$request->ajax()) {
  37. if ($id > 0) {
  38. $record = AssetType::query()->find($id);
  39. }
  40. return view('admin/school/asset_type_save', [
  41. 'data' => $record ?? null
  42. ]);
  43. }
  44. $validated = $request->validated();
  45. AssetType::query()->updateOrCreate(['id' => $id], $validated);
  46. return response()->json(['message' => '操作成功']);
  47. }
  48. //资源类型删除
  49. public function assetTypeDelete($id)
  50. {
  51. if (Asset::query()->where(['type_id' => $id])->exists()) {
  52. return response()->json(['message' => '请先删除此类型下的资源'], 400);
  53. }
  54. AssetType::query()->where(['id' => $id])->delete();
  55. return response()->json(['message' => '操作成功']);
  56. }
  57. //资源列表
  58. public function assets(Request $request)
  59. {
  60. if (!$request->ajax()) {
  61. $assetTypes = AssetType::query()->get();
  62. return view('admin/school/asset', [
  63. 'assetTypes' => $assetTypes
  64. ]);
  65. }
  66. if ($typeId = $request->input('type_id')) {
  67. $filter[] = ['type_id', '=', $typeId];
  68. }
  69. $records = Asset::query()->with(['assetType'])->where($filter ?? [])->orderByDesc('id')
  70. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  71. $items = $records->items();
  72. array_walk($items, function ($item) {
  73. $item->type_title = $item->assetType->title ?? '';
  74. });
  75. return response()->json([
  76. 'rows' => $items,
  77. 'total' => $records->total()
  78. ]);
  79. }
  80. //资源保存
  81. public function assetsSave(AssetSaveRequest $request, $id)
  82. {
  83. if (!$request->ajax()) {
  84. $assetTypes = AssetType::query()->get();
  85. if ($id > 0) {
  86. $record = Asset::query()->find($id);
  87. }
  88. return view('admin/school/asset_save', [
  89. 'data' => $record ?? null,
  90. 'assetTypes' => $assetTypes
  91. ]);
  92. }
  93. $validated = $request->validated();
  94. Asset::query()->updateOrCreate(['id' => $id], $validated);
  95. return response()->json(['message' => '操作成功']);
  96. }
  97. //资源保存
  98. public function assetsDelete(Request $request)
  99. {
  100. $ids = $request->input('ids');
  101. Asset::query()->whereIn('id', $ids)->delete();
  102. return response()->json(['message' => '操作成功']);
  103. }
  104. }