images()->filter($request)->with('group', 'strategy')->paginate(40); $images->getCollection()->each(function (Image $image) { $image->human_date = $image->created_at->diffForHumans(); $image->date = $image->created_at->format('Y-m-d H:i:s'); $image->append(['url', 'thumb_url', 'filename', 'links'])->setVisible([ 'id', 'filename', 'url', 'thumb_url', 'human_date', 'date', 'size', 'width', 'height', 'links' ]); }); return $this->success('success', compact('images')); } public function image(Request $request): Response { /** @var User $user */ $user = Auth::user(); /** @var Image $image */ if (!$image = $user->images()->find($request->route('id'))) { return $this->error('未找到该图片'); } $image->strategy->setVisible(['name']); $image->album?->setVisible(['name']); $image->append(['url', 'thumb_url', 'filename', 'links'])->setVisible([ 'id', 'filename', 'origin_name', 'url', 'thumb_url', 'width', 'height', 'size', 'mimetype', 'md5', 'sha1', 'permission', 'strategy', 'album', 'uploaded_ip', 'links', 'created_at' ]); return $this->success('success', compact('image')); } public function permission(Request $request): Response { /** @var User $user */ $user = Auth::user(); $permission = $request->input('permission'); $permissions = ['public' => ImagePermission::Public, 'private' => ImagePermission::Private]; if (!in_array($permission, array_keys($permissions))) { return $this->error('设置失败'); } $user->images()->whereIn('id', (array) $request->input('ids'))->update([ 'permission' => $permissions[$permission], ]); return $this->success('设置成功'); } public function rename(ImageRenameRequest $request): Response { /** @var User $user */ $user = Auth::user(); /** @var Image $image */ if ($image = $user->images()->find($request->input('id'))) { $image->alias_name = $request->input('name'); $image->save(); } return $this->success('重命名成功', $image->only('id', 'filename')); } public function movement(Request $request): Response { /** @var User $user */ $user = Auth::user(); DB::transaction(function () use ($user, $request) { /** @var null|Album $album */ $album = $user->albums()->find((int) $request->input('id')); $user->images()->whereIn('id', $request->input('selected'))->update([ 'album_id' => $album->id ?? null, ]); if ($album) { $album->image_num = $album->images()->count(); $album->save(); } if ($albumId = (int) $request->input('album_id')) { /** @var Album $originAlbum */ $originAlbum = $user->albums()->find($albumId); $originAlbum->image_num = $originAlbum->images()->count(); $originAlbum->save(); } }); return $this->success('移动成功'); } public function delete(Request $request): Response { /** @var User $user */ $user = Auth::user(); (new UserService())->deleteImages($request->all() ?: [], $user); return $this->success('删除成功'); } }