feat:版本管理

This commit is contained in:
atshike
2025-01-08 10:01:17 +08:00
parent 01c62db7ac
commit a4ff43849b
5 changed files with 132 additions and 0 deletions
@@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Version;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Ugly\Base\Traits\ApiResource;
class VersionController extends Controller
{
use ApiResource;
public function version(Request $request): JsonResponse
{
$request->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();
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
use Ugly\Base\Traits\SearchModel;
use Ugly\Base\Traits\SerializeDate;
class Version extends Model
{
use HasApiTokens, SearchModel, SerializeDate;
use HasFactory;
protected $guarded = [];
}
+1
View File
@@ -8,6 +8,7 @@
"php": "^8.1",
"ext-bcmath": "*",
"ext-pdo": "*",
"ext-zip": "*",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.3",
@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('versions', function (Blueprint $table) {
$table->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');
}
};
+7
View File
@@ -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']);