From 5e889da68cbab53e710cd50298bfb781806b9bb7 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 19 Feb 2025 16:28:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Images.php | 69 +--------------- app/admin/controller/v1/Upload.php | 79 +++++++++++++++++++ .../v1/{ImageModel.php => SysImageModel.php} | 5 +- app/admin/route/v1.php | 3 +- ...ageBaseModel.php => SysImageBaseModel.php} | 2 +- .../20241220072120_create_sys_image.php | 2 +- 6 files changed, 86 insertions(+), 74 deletions(-) create mode 100644 app/admin/controller/v1/Upload.php rename app/admin/model/v1/{ImageModel.php => SysImageModel.php} (68%) rename app/common/model/{ImageBaseModel.php => SysImageBaseModel.php} (94%) diff --git a/app/admin/controller/v1/Images.php b/app/admin/controller/v1/Images.php index 18d6c474..8ec696bf 100644 --- a/app/admin/controller/v1/Images.php +++ b/app/admin/controller/v1/Images.php @@ -3,77 +3,10 @@ declare (strict_types = 1); namespace app\admin\controller\v1; -use app\admin\model\v1\ImageModel; -use Intervention\Image\ImageManager; -use think\facade\Filesystem; - /** * 图片管理控制器 */ class Images { - // 上传 - public function upload() - { - $param = request()->param(['module' => 'unknown']); - if (is_null($param)) { - return error('请确定请求参数正确'); - } - $file = request()->file('image'); - if (is_null($file)) { - return error('请确定上传对象或字段是否正确'); - } - - try { - $validate = validate([ - 'module' => 'require|max:64', - 'image' => 'fileSize:1048576|fileExt:jpg,jpeg,png,gif' - ]); - if (!$validate->check(['module' => $param['module'], 'image' => $file])) { - return error($validate->getError()); - } - - $storage = config('filesystem.disks.image.url'); - - $filemd5 = $file->md5(); - $filesha1 = $file->sha1(); - - $image_model = ImageModel::md5($filemd5)->find(); - if (is_null($image_model)) { - $filename = Filesystem::disk('image')->putFile($param['module'], $file); - // 生成缩略图 - $image_manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver()); - $image = $image_manager->read('.' . $storage . '/' . $filename); - $image->scale(200, 200); - $idx = strrpos($filename, '.'); - $thumb_filename = mb_substr($filename, 0, $idx) . '_thumb.' . mb_substr($filename, $idx + 1); - $image->save('.' . $storage . '/' . $thumb_filename); - - // 保存图片 - $image_model = new ImageModel(); - $image_model->language_id = request()->lang_id; - $image_model->module = $param['module']; - $image_model->image_path = $filename; - $image_model->image_thumb = $thumb_filename; - $image_model->image_size = $file->getSize(); - $image_model->image_type = $file->getOriginalMime(); - $image_model->image_md5 = $filemd5; - $image_model->image_sha1 = $filesha1; - if (!$image_model->save()) { - return error('上传失败'); - } - } - - return success('操作成功', [ - 'url' => $storage . '/' . $image_model->image_path, - 'thumb_url' => $storage . '/' . $image_model->image_thumb, - 'filemd5' => $image_model->image_md5, - 'filesha1' => $image_model->image_sha1 - ]); - } catch (\Throwable $th) { - return error($th->getMessage()); - } - - return error('上传失败'); - } + } diff --git a/app/admin/controller/v1/Upload.php b/app/admin/controller/v1/Upload.php new file mode 100644 index 00000000..e828b158 --- /dev/null +++ b/app/admin/controller/v1/Upload.php @@ -0,0 +1,79 @@ +param(['module' => 'unknown']); + if (is_null($param)) { + return error('请确定请求参数正确'); + } + $file = request()->file('image'); + if (is_null($file)) { + return error('请确定上传对象或字段是否正确'); + } + + try { + $validate = validate([ + 'module' => 'require|max:64', + 'image' => 'fileSize:1048576|fileExt:jpg,jpeg,png,gif' + ]); + if (!$validate->check(['module' => $param['module'], 'image' => $file])) { + return error($validate->getError()); + } + + $storage = config('filesystem.disks.image.url'); + + $filemd5 = $file->md5(); + $filesha1 = $file->sha1(); + + $image_model = SysImageModel::md5($filemd5)->find(); + if (is_null($image_model)) { + $filename = Filesystem::disk('image')->putFile($param['module'], $file); + // 生成缩略图 + $image_manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver()); + $image = $image_manager->read('.' . $storage . '/' . $filename); + $image->scale(200, 200); + $idx = strrpos($filename, '.'); + $thumb_filename = mb_substr($filename, 0, $idx) . '_thumb.' . mb_substr($filename, $idx + 1); + $image->save('.' . $storage . '/' . $thumb_filename); + + // 保存图片 + $image_model = new SysImageModel(); + $image_model->language_id = request()->lang_id; + $image_model->module = $param['module']; + $image_model->image_path = $filename; + $image_model->image_thumb = $thumb_filename; + $image_model->image_size = $file->getSize(); + $image_model->image_type = $file->getOriginalMime(); + $image_model->image_md5 = $filemd5; + $image_model->image_sha1 = $filesha1; + if (!$image_model->save()) { + return error('上传失败'); + } + } + + return success('操作成功', [ + 'url' => $storage . '/' . $image_model->image_path, + 'thumb_url' => $storage . '/' . $image_model->image_thumb, + 'filemd5' => $image_model->image_md5, + 'filesha1' => $image_model->image_sha1 + ]); + } catch (\Throwable $th) { + return error($th->getMessage()); + } + + return error('上传失败'); + } +} diff --git a/app/admin/model/v1/ImageModel.php b/app/admin/model/v1/SysImageModel.php similarity index 68% rename from app/admin/model/v1/ImageModel.php rename to app/admin/model/v1/SysImageModel.php index 7a87b7b2..818173c8 100644 --- a/app/admin/model/v1/ImageModel.php +++ b/app/admin/model/v1/SysImageModel.php @@ -3,12 +3,13 @@ declare (strict_types = 1); namespace app\admin\model\v1; -use app\common\model\ImageBaseModel; +use app\common\model\SysImageBaseModel; /** + * 图片上传模型 * @mixin \think\Model */ -class ImageModel extends ImageBaseModel +class SysImageModel extends SysImageBaseModel { // 根据md5获取图片 public function scopeMd5($query, $md5) diff --git a/app/admin/route/v1.php b/app/admin/route/v1.php index cef47886..001a553d 100644 --- a/app/admin/route/v1.php +++ b/app/admin/route/v1.php @@ -38,7 +38,7 @@ Route::group('v1', function () { // 图片管理 Route::group('images', function () { // 图片上传 - Route::post('/:module/upload', 'Images/upload'); + Route::post('/:module/upload', 'Upload/image'); }); // 文章模块 @@ -213,7 +213,6 @@ Route::group('v1', function () { // 产品回收站删除 Route::delete('delete/:id', 'ProductTrash/delete'); }); - }); })->prefix('v1.'); diff --git a/app/common/model/ImageBaseModel.php b/app/common/model/SysImageBaseModel.php similarity index 94% rename from app/common/model/ImageBaseModel.php rename to app/common/model/SysImageBaseModel.php index a6140a9b..f1b6bfa8 100644 --- a/app/common/model/ImageBaseModel.php +++ b/app/common/model/SysImageBaseModel.php @@ -8,7 +8,7 @@ use think\Model; /** * @mixin \think\Model */ -class ImageBaseModel extends Model +class SysImageBaseModel extends Model { // 表名 protected $name = 'sys_image'; diff --git a/database/migrations/20241220072120_create_sys_image.php b/database/migrations/20241220072120_create_sys_image.php index 72b9c782..afe301d6 100644 --- a/database/migrations/20241220072120_create_sys_image.php +++ b/database/migrations/20241220072120_create_sys_image.php @@ -27,7 +27,7 @@ class CreateSysImage extends Migrator */ public function change() { - $table = $this->table('sys_image', ['engine' => 'MyISAM', 'comment' => '图片表']); + $table = $this->table('sys_image', ['engine' => 'MyISAM', 'comment' => '图片上传表']); $table->addColumn('language_id', 'integer', ['signed' => false, 'null' => false, 'comment' => '语言ID']) ->addColumn('module', 'string', ['limit' => 64, 'null' => false, 'comment' => '图片所属模块']) ->addColumn('image_path', 'string', ['limit' => 125, 'null' => false, 'comment' => '图片路径'])