From a4ff43849b7a6e545b8de7f61dedb0d66c6416cc Mon Sep 17 00:00:00 2001 From: atshike Date: Wed, 8 Jan 2025 10:01:17 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=89=88=E6=9C=AC=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/VersionController.php | 77 +++++++++++++++++++ serve/app/Models/Version.php | 17 ++++ serve/composer.json | 1 + ...025_01_08_011255_create_versions_table.php | 30 ++++++++ serve/routes/api.php | 7 ++ 5 files changed, 132 insertions(+) create mode 100644 serve/app/Http/Controllers/Api/VersionController.php create mode 100644 serve/app/Models/Version.php create mode 100644 serve/database/migrations/2025_01_08_011255_create_versions_table.php diff --git a/serve/app/Http/Controllers/Api/VersionController.php b/serve/app/Http/Controllers/Api/VersionController.php new file mode 100644 index 0000000..2b8d06d --- /dev/null +++ b/serve/app/Http/Controllers/Api/VersionController.php @@ -0,0 +1,77 @@ +validate([ + 'version' => 'required|integer', + ]); + + $version = Version::query()->where('version','>', $request->input('version'))->first(); + + return $this->success($version); + } + + public function index(): JsonResponse + { + $query = Version::query()->orderByDesc('id'); + + return $this->paginate($query); + } + + public function store(Request $request): JsonResponse + { + $rules = [ + 'version_number' => 'required|string', + 'version' => 'required|integer', + 'path' => 'required|string', + ]; + $request->validate($rules); + + $last_version = Version::query()->orderByDesc('id')->value('version'); + $version = (int) request()->input('version'); + if (! empty($last_version) && $last_version > $version) { + return $this->failed("当前版本号{$version}应大于最后一次版本编号{$last_version}"); + } + + Version::query()->create($request->only(array_keys($rules))); + + return $this->success(); + } + + public function update(Request $request, string $id): JsonResponse + { + $rules = [ + 'version_number' => 'required|string', + 'path' => 'required|string', + ]; + $request->validate($rules); + + Version::query()->where('id', $id)->update($request->only(array_keys($rules))); + + return $this->success(); + } + + public function show(string $id): JsonResponse + { + return $this->success(Version::query()->findOrFail($id)); + } + + public function destroy(string $id): JsonResponse + { + Version::query()->where('id', $id)->delete(); + + return $this->success(); + } +} diff --git a/serve/app/Models/Version.php b/serve/app/Models/Version.php new file mode 100644 index 0000000..833414b --- /dev/null +++ b/serve/app/Models/Version.php @@ -0,0 +1,17 @@ +id(); + $table->string('version_number')->comment('版本号'); + $table->integer('version')->comment('版本'); + $table->string('path')->comment('安装包'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('versions'); + } +}; diff --git a/serve/routes/api.php b/serve/routes/api.php index 8f12621..1c4dfdc 100644 --- a/serve/routes/api.php +++ b/serve/routes/api.php @@ -16,8 +16,10 @@ use App\Http\Controllers\Api\NoticeController; use App\Http\Controllers\Api\PaymentController; use App\Http\Controllers\Api\UploadController; use App\Http\Controllers\Api\UserController; +use App\Http\Controllers\Api\VersionController; use App\Http\Controllers\Api\VipPackageController; use App\Http\Controllers\Api\WithdrawController; +use App\Http\Controllers\UpgradeController; use App\Http\Middleware\ApiAuth; use App\PayChannels\WeChatPayNative; use Illuminate\Routing\Router; @@ -101,4 +103,9 @@ Route::middleware(ApiAuth::class.':admin')->group(function (Router $router) { $router->get('payments', [PaymentController::class, 'index']); $router->get('/commission-logs/{user_id}', [CommissionController::class, 'agent_logs']); // 代理商佣金记录 + + $router->apiResource('version', VersionController::class); + }); +Route::get('news_version', [VersionController::class, 'version']); +Route::get('upgrade', [UpgradeController::class, 'index']);