add routes and route_group table

This commit is contained in:
2026-03-09 14:13:31 +08:00
parent 8d5b8bea4d
commit ac640cc813
4 changed files with 149 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
<?php
declare(strict_types=1);
namespace App\Model;
use Hyperf\Database\Model\Relations\BelongsTo;
use Hyperf\Database\Model\Relations\HasMany;
use Hyperf\DbConnection\Model\Model;
/**
* @property int $id
* @property int|null $group_id
* @property string $method
* @property string $path
* @property string|null $name
* @property string|null $label
*/
class Route extends Model
{
protected ?string $table = 'routes';
public bool $timestamps = false;
protected array $fillable = [
'group_id',
'method',
'path',
'name',
'label',
];
protected array $casts = [
'id' => 'integer',
'group_id' => 'integer',
];
/**
* 所属分组
*/
public function group(): BelongsTo
{
return $this->belongsTo(RouteGroup::class, 'group_id');
}
/**
* 路由的角色覆盖规则
*/
public function overrides(): HasMany
{
return $this->hasMany(RoleRouteOverride::class, 'route_id');
}
}
@@ -0,0 +1,31 @@
<?php
use Hyperf\Database\Schema\Schema;
use Hyperf\Database\Schema\Blueprint;
use Hyperf\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('route_groups', function (Blueprint $table) {
$table->id()->comment('主键');
$table->string('name', 50)->unique()->comment('分组标识');
$table->string('label', 100)->comment('显示名称');
$table->text('description')->nullable()->comment('描述');
$table->integer('sort_order')->default(0)->comment('排序');
$table->timestampTz('created_at')->useCurrent()->comment('创建时间');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('route_groups');
}
};
@@ -0,0 +1,34 @@
<?php
use Hyperf\Database\Schema\Schema;
use Hyperf\Database\Schema\Blueprint;
use Hyperf\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('routes', function (Blueprint $table) {
$table->id()->comment('主键');
$table->unsignedBigInteger('group_id')->nullable()->comment('所属分组');
$table->string('method', 10)->comment('HTTP 方法');
$table->string('path', 255)->comment('路由路径');
$table->string('name', 100)->nullable()->comment('路由名称');
$table->string('label', 200)->nullable()->comment('显示名称');
$table->unique(['method', 'path']);
$table->foreign('group_id')->references('id')->on('route_groups')->onDelete('set null');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('routes');
}
};
@@ -0,0 +1,31 @@
<?php
use Hyperf\Database\Schema\Schema;
use Hyperf\Database\Schema\Blueprint;
use Hyperf\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('role_route_groups', function (Blueprint $table) {
$table->unsignedBigInteger('role_id')->comment('角色 ID');
$table->unsignedBigInteger('group_id')->comment('路由分组 ID');
$table->primary(['role_id', 'group_id']);
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->foreign('group_id')->references('id')->on('route_groups')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('role_route_groups');
}
};