diff --git a/app/Http/Controllers/Admin/CommonController.php b/app/Http/Controllers/Admin/CommonController.php index 01dafd6..b1bc340 100644 --- a/app/Http/Controllers/Admin/CommonController.php +++ b/app/Http/Controllers/Admin/CommonController.php @@ -207,7 +207,7 @@ class CommonController extends Controller $upload = new Uploads(); $upload->original_name = $original_name; - $upload->folder = $request->folder ? $request->folder : ""; + $upload->folder = $save_folder; $upload->name = $name; $upload->extension = $extension; $upload->creator_type = get_class(Auth::guard("admin")->user()); diff --git a/app/Http/Controllers/Manager/OrdersController.php b/app/Http/Controllers/Manager/OrdersController.php index e4761b1..78dd90c 100644 --- a/app/Http/Controllers/Manager/OrdersController.php +++ b/app/Http/Controllers/Manager/OrdersController.php @@ -2038,96 +2038,4 @@ class OrdersController extends CommonController return response()->json($paramedic_levels->toArray()); } - /** - * @OA\POST( - * path="/manager/upload-image", - * summary="V2-上传图片", - * description="上传图片", - * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), - * @OA\Parameter(name="folder", in="query", @OA\Schema(type="string"), required=true, description="文件存放目录:[public/manager],public表示可以公开查看的,一般用于头像等公开图片,manager是需要鉴权后查看的,一般用于身份证、资格证书等非公开图片"), - * @OA\Response( - * response="200", - * description="上传图片", - * content={ - * @OA\MediaType( - * mediaType="application/json", - * @OA\Schema( - * @OA\Property( - * property="id", - * type="integer", - * description="文件存储id" - * ), - * @OA\Property( - * property="folder", - * type="string", - * description="文件存储目录" - * ), - * @OA\Property( - * property="name", - * type="string", - * description="文件名" - * ), - * @OA\Property( - * property="public_path", - * type="string", - * description="公开访问路径,如果为null,表示不可公开访问" - * ), - * example={ - * "id": "1", - * "folder": "public", - * "name": "eufgw83ascasc.jpg", - * "public_path": "/storage/eufgw83ascasc.jpg" - * } - * ) - * ) - * } - * ) - * ) - */ - - public function uploadImage(Request $request) - { - try { - $file = $request->file("file"); - $original_name = $file->getClientOriginalName(); - $extension = last(explode(".", $original_name)); - if (!in_array($extension, ["jpg", "jpeg", "gif", "png", "bmp"])) { - return response()->json([ - "errorcode" => "403", - "errormsg" => "不正确的文件格式" - ]); - } - $save_folder = $request->folder ? $request->folder : "manager"; - - if (!is_dir(Storage::path($save_folder))) { - Storage::makeDirectory($save_folder); - } - - $name = uniqid() . "." . $extension; - $store_result = $file->storeAs($save_folder, $name); - - $upload = new Uploads(); - $upload->original_name = $original_name; - $upload->folder = $save_folder; - $upload->name = $name; - $upload->extension = $extension; - $upload->creator_type = get_class($this->manager); - $upload->creator_id = $this->manager->id; - $upload->size = Storage::size($save_folder . "/" . $name); - $upload->save(); - if ($save_folder == "public") { - $upload->public_path = "/storage/" . $name; - } else { - $upload->public_path = null; - } - - return response()->json($upload); - } catch (\Exception $exception) { - return response()->json([ - "errorcode" => $exception->getCode(), - "errormsg" => $exception->getMessage() - ]); - } - - } } diff --git a/app/Http/Controllers/Manager/PublicController.php b/app/Http/Controllers/Manager/PublicController.php new file mode 100644 index 0000000..3b22802 --- /dev/null +++ b/app/Http/Controllers/Manager/PublicController.php @@ -0,0 +1,134 @@ +file("file"); + $original_name = $file->getClientOriginalName(); + $extension = last(explode(".", $original_name)); + if (!in_array($extension, ["jpg", "jpeg", "gif", "png", "bmp"])) { + return response()->json([ + "errorcode" => "403", + "errormsg" => "不正确的文件格式" + ]); + } + $save_folder = $request->folder ? $request->folder : "manager"; + + if (!is_dir(Storage::path($save_folder))) { + Storage::makeDirectory($save_folder); + } + + $name = uniqid() . "." . $extension; + $store_result = $file->storeAs($save_folder, $name); + + $upload = new Uploads(); + $upload->original_name = $original_name; + $upload->folder = $save_folder; + $upload->name = $name; + $upload->extension = $extension; + $upload->creator_type = get_class($this->manager); + $upload->creator_id = $this->manager->id; + $upload->size = Storage::size($save_folder . "/" . $name); + $upload->save(); + if ($save_folder == "public") { + $upload->public_path = "/storage/" . $name; + } else { + $upload->public_path = null; + } + + return response()->json($upload); + } catch (\Exception $exception) { + return response()->json([ + "errorcode" => $exception->getCode(), + "errormsg" => $exception->getMessage() + ]); + } + } + + /** + * @OA\Get( + * path="/manager/get-attachment/{id}", + * summary="V2-获取附件,进行展示或下载", + * description="获取附件,进行展示或下载", + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Parameter(name="id", in="path", @OA\Schema(type="string"), required=true, description="id"), + * @OA\Response( + * response="200", + * description="获取附件,进行展示或下载" + * ) + * ) + */ + + public function getAttachment($id) + { + $attachment = Uploads::find($id); + if (!$attachment) { + abort("404"); + } + if (!Storage::exists($attachment->folder . "/" . $attachment->name)) { + abort("404"); + } + + return Storage::download($attachment->folder . "/" . $attachment->name, null, [ + 'Cache-Control' => 'no-cache, no-store, must-revalidate', + 'Pragma' => 'no-cache', + 'Expires' => '0', + ], null); + } +} diff --git a/database/seeds/FixUploadsFolder.php b/database/seeds/FixUploadsFolder.php new file mode 100644 index 0000000..7935ff8 --- /dev/null +++ b/database/seeds/FixUploadsFolder.php @@ -0,0 +1,18 @@ +orWhere("folder","")->update([ + "folder" => "public" + ]); + } +} diff --git a/database/seeds/UpdateParamedicStatus.php b/database/seeds/UpdateParamedicStatus.php index 02a885b..45258d3 100644 --- a/database/seeds/UpdateParamedicStatus.php +++ b/database/seeds/UpdateParamedicStatus.php @@ -4,6 +4,7 @@ use Illuminate\Database\Seeder; class UpdateParamedicStatus extends Seeder { + /** * Run the database seeds. * diff --git a/routes/web.php b/routes/web.php index 88b16b9..b50ad0b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -130,6 +130,8 @@ Route::group(["namespace" => "Manager", "prefix" => "manager"], function () { Route::group(['middleware' => ['authorize.jwt:manager']], function () { Route::post('me', 'AuthController@me'); Route::post('update', 'AuthController@update'); + Route::post('upload-image', 'PublicController@uploadImage'); + Route::get('get-attachment/{id}', 'PublicController@getAttachment'); Route::post('create-paramedic', 'ParamedicController@createParamedic'); Route::post('update-paramedic/{id}', 'ParamedicController@updateParamedic'); @@ -148,7 +150,7 @@ Route::group(["namespace" => "Manager", "prefix" => "manager"], function () { Route::get('get-project-paramedic-levels/{project_id}', 'OrdersController@getProjectParamedicLevels'); Route::get('get-project-areas/{project_id}', 'OrdersController@getProjectAreas'); Route::get('get-area-beds/{area_id}', 'OrdersController@getAreaBeds'); - Route::post('upload-image', 'OrdersController@uploadImage'); + Route::post('create-patient', 'OrdersController@createPatient'); Route::post('create-order', 'OrdersController@createOrder'); Route::post('scan-pay/{order_id}', 'OrdersController@scanPay');