From 1a74f7b1a1a669fdd290295b668c10348367d3ff Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Tue, 15 Nov 2022 15:04:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8B=E6=83=85=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/FriendLinkController.php | 33 ++++++++++++ app/Http/Controllers/WebController.php | 54 +++++++++++++++++++ app/Http/Requestes/FriendLinkRequest.php | 49 +++++++++++++++++ app/Http/Resources/FriendLinkResource.php | 2 + routes/api.php | 5 +- 5 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/WebController.php create mode 100644 app/Http/Requestes/FriendLinkRequest.php diff --git a/app/Http/Controllers/FriendLinkController.php b/app/Http/Controllers/FriendLinkController.php index aebfa47..858e8da 100644 --- a/app/Http/Controllers/FriendLinkController.php +++ b/app/Http/Controllers/FriendLinkController.php @@ -6,6 +6,9 @@ use App\Helpers\Paginator; use App\Http\Resources\FriendLinkResource; use App\Models\FriendLink; use Illuminate\Http\Request; +use App\Http\Requestes\FriendLinkRequest; +use App\Services\OperationLogService; +use App\Enums\OperationType; class FriendLinkController extends Controller { @@ -17,4 +20,34 @@ class FriendLinkController extends Controller return $this->json(FriendLinkResource::collection($list)); } + + public function store(FriendLinkRequest $request){ + $input = $request->input(); + + $friendLink = FriendLink::create($input); + + (new OperationLogService())->inLog(OperationType::Create, '', $friendLink, $request->input()); + + return $this->success('添加成功'); + } + + public function show(FriendLink $friendLink){ + return $this->json(FriendLinkResource::make($friendLink)); + } + + public function update(FriendLink $friendLink, FriendLinkRequest $request){ + $friendLink->update($request->input()); + + (new OperationLogService())->inLog(OperationType::Update, '', $friendLink, $request->input()); + + return $this->success('修改成功'); + } + + public function destroy(FriendLink $friendLink){ + $friendLink->delete(); + + (new OperationLogService())->inLog(OperationType::Delete, '', $friendLink); + + return $this->success('删除成功'); + } } diff --git a/app/Http/Controllers/WebController.php b/app/Http/Controllers/WebController.php new file mode 100644 index 0000000..15ff72f --- /dev/null +++ b/app/Http/Controllers/WebController.php @@ -0,0 +1,54 @@ +input('path', 'uploads') . '/' . date('Y-m-d'); + $result = []; + + $disk = $this->getDisk(); + + // file 文件 + $files = $request->except('path'); + foreach ($files as $key => $fileData) { + $item = null; + if (is_array($fileData)) { + foreach ($fileData as $file) { + $item[] = $disk->url($this->saveFile($disk, $path, $file)); + } + } else { + $item = $disk->url($this->saveFile($disk, $path, $fileData)); + } + $result[$key] = $item; + } + return $this->json($result); + } + + protected function saveFile($disk, $path, $file = null) + { + $filePath = ''; + if ($file instanceof UploadedFile) { + $filePath = $disk->putFile($path, $file); + } elseif (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)) { + $type = $result[2]; + if (in_array($type, ['jpeg', 'jpg', 'gif', 'bmp', 'png'])) { + $filePath = $path . '/' . uniqid() . '.' . $type; + $disk->put($filePath, base64_decode(str_replace($result[1], '', $file))); + } + } + return $filePath; + } + + protected function getDisk($disk = null): Filesystem + { + return Storage::disk($disk); + } +} diff --git a/app/Http/Requestes/FriendLinkRequest.php b/app/Http/Requestes/FriendLinkRequest.php new file mode 100644 index 0000000..5961d9b --- /dev/null +++ b/app/Http/Requestes/FriendLinkRequest.php @@ -0,0 +1,49 @@ + 'required', + 'type' => 'required|integer|min:1|max:3', + 'content' => 'required', + 'sort' => 'required|integer', + 'is_recommend' => 'required|boolean', + 'is_show'=> 'required|boolean', + ]; + } + + public function messages() + { + $messages = [ + 'name' => '请填写标题', + 'type' => '请选择类型', + 'content' => '请填充内容', + 'sort' => '请填写排序', + 'is_recommend' => '请设置推荐', + 'is_show' => '请设置显示' + ]; + + return $messages; + } + + protected function failedValidation(Validator $validator) + { + $error = $validator->errors()->all(); + throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]])); + } +} diff --git a/app/Http/Resources/FriendLinkResource.php b/app/Http/Resources/FriendLinkResource.php index 0d395f3..672aae1 100644 --- a/app/Http/Resources/FriendLinkResource.php +++ b/app/Http/Resources/FriendLinkResource.php @@ -20,6 +20,8 @@ class FriendLinkResource extends JsonResource 'type' => $this->type, 'content' => $this->content, 'sort' => $this->sort, + 'is_recommend' => $this->is_recommend, + 'is_show' => $this->is_show, 'created_at' => strtotime($this->created_at) ?? 0, //录入时间 ]; } diff --git a/routes/api.php b/routes/api.php index 63d58fd..a4e281c 100644 --- a/routes/api.php +++ b/routes/api.php @@ -18,6 +18,9 @@ use Illuminate\Support\Facades\Route; Route::post('auth/login', [AuthController::class, 'login']); Route::group(['middleware' => 'auth:sanctum'], function () { + + Route::post('web/upload', [WebController::class, 'upload']); + Route::get('keywords-crops', [KeywordController::class, 'crops']); //农作物 Route::get('keywords-crops-cate', [KeywordController::class, 'cropsCate']); //农作物产业分类 Route::get('permissions', [AdminPermissionController::class, 'index']); @@ -57,7 +60,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('device-warning-nums', [DeviceWarningController::class, 'warningLogNum']); //友情链接 - Route::apiResource('friend-links', FriendLinkController::class)->only(['index'])->names('friend_links'); + Route::apiResource('friend-links', FriendLinkController::class)->names('friend_links'); //操作日志 Route::apiResource('operation-logs', OperationLogController::class)->only(['index'])->names('operation_logs');