'like', 'cate_id' => '=']) ->when( auth('api')->user()->type !== UserType::Admin, function ($query) { $query->where(function ($query) { $query->where('user_id', auth('api')->user()->id) ->orWhereHas('cate', function ($query) { $query->where('type', MaterialCategoryType::System->value); }); }); } ) ->orderBy('user_id') ->orderByDesc('id'); return $this->paginate($query, fn ($item) => [ 'id' => $item->id, 'name' => $item->name, 'path' => $item->path, ]); } // 新增 public function store(Request $request): JsonResponse { $request->validate([ 'image' => 'required|image|max:3072', ]); $image = $request->file('image'); $cate_id = MaterialCategory::query() ->where('type', MaterialCategoryType::Other) ->value('id'); $material = Material::query()->create([ 'user_id' => $request->user('api')->id, 'name' => $image->getClientOriginalName(), 'path' => $image->store(date('Y/m/d')), 'cate_id' => $cate_id, ]); return $this->success($material->only(['id', 'name', 'path'])); } // 修改名称 public function update(Request $request, Material $material): JsonResponse { if ($material->user_id != $request->user('api')->id) { return $this->failed('无权限'); } $request->validate([ 'name' => ['required', 'string', 'max:255'], ]); $material->name = $request->input('name'); $material->save(); return $this->success($material->only(['id', 'name', 'path'])); } // 删除 public function destroy(Material $material): JsonResponse { if ($material->user_id != auth('api')->user()->id) { return $this->failed('无权限'); } $material->delete(); return $this->success(); } }