feat:版本管理
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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 = [];
|
||||
}
|
||||
@@ -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');
|
||||
}
|
||||
};
|
||||
@@ -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']);
|
||||
|
||||
Reference in New Issue
Block a user