|
@@ -3,11 +3,13 @@
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
|
|
|
|
|
+use App\Models\GlobalUser;
|
|
|
use App\Models\Tenant;
|
|
|
use Encore\Admin\Controllers\AdminController;
|
|
|
use Encore\Admin\Form;
|
|
|
use Encore\Admin\Grid;
|
|
|
use Encore\Admin\Show;
|
|
|
+use Encore\Admin\Widgets\Table;
|
|
|
|
|
|
class TenantController extends AdminController
|
|
|
{
|
|
@@ -24,10 +26,21 @@ class TenantController extends AdminController
|
|
|
$grid = new Grid(new Tenant(['domains']));
|
|
|
|
|
|
$grid->model()->orderByDesc('created_at');
|
|
|
+ $databaseConfig = config('database.connections');
|
|
|
|
|
|
$grid->column('id')->copyable();
|
|
|
$grid->column('name');
|
|
|
- $grid->column('tenancy_db_connection', 'tenancy_db_connection');
|
|
|
+ $grid->column('email');
|
|
|
+ $grid->column('tenancy_db_connection')->expand(function ($model) use ($databaseConfig) {
|
|
|
+ $config = $databaseConfig[$model->tenancy_db_connection] ?? [];
|
|
|
+ return new Table(['name', 'config'], [
|
|
|
+ [
|
|
|
+ $model->tenancy_db_connection,
|
|
|
+ json_encode(['host' => $config['host'], 'port' => $config['port'], 'database' => $config['database']])
|
|
|
+ ]
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+
|
|
|
$grid->column('domains')->display(function ($domains) {
|
|
|
if (count($domains) == 0) {
|
|
|
return '-';
|
|
@@ -39,8 +52,13 @@ class TenantController extends AdminController
|
|
|
return $domainString;
|
|
|
});
|
|
|
$grid->column('expired_at')->datetime();
|
|
|
- $grid->column('created_at')->datetime();
|
|
|
- $grid->column('updated_at')->datetime();
|
|
|
+ $grid->created_at()->display(function ($createdAt) {
|
|
|
+ return date('Y-m-d H:i:s', strtotime($createdAt));
|
|
|
+ });
|
|
|
+ $grid->updated_at()->display(function ($updateAt) {
|
|
|
+ return date('Y-m-d H:i:s', strtotime($updateAt));
|
|
|
+ });
|
|
|
+
|
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
|
|
$actions->disableDelete();
|
|
|
});
|
|
@@ -64,6 +82,7 @@ class TenantController extends AdminController
|
|
|
$show = new Show(Tenant::query()->findOrFail($id));
|
|
|
$show->field('id');
|
|
|
$show->field('name');
|
|
|
+ $show->field('email');
|
|
|
$show->field('tenancy_db_connection');
|
|
|
$show->field('expired_at');
|
|
|
$show->field('created_at');
|
|
@@ -74,6 +93,7 @@ class TenantController extends AdminController
|
|
|
$domain->domain();
|
|
|
$domain->created_at();
|
|
|
$domain->updated_at();
|
|
|
+ $domain->resource('/admin/domain');
|
|
|
});
|
|
|
|
|
|
$show->users('users', function ($user) {
|
|
@@ -81,6 +101,7 @@ class TenantController extends AdminController
|
|
|
$user->username();
|
|
|
$user->created_at();
|
|
|
$user->updated_at();
|
|
|
+ $user->resource('/admin/globalUser');
|
|
|
});
|
|
|
|
|
|
return $show;
|
|
@@ -98,10 +119,15 @@ class TenantController extends AdminController
|
|
|
foreach ($databaseConfig as $key => $item) {
|
|
|
$databaseConnections[$key] = $key;
|
|
|
}
|
|
|
- $form = new Form(new Tenant(['domains']));
|
|
|
- $form->tab('基本信息', function (Form $form) use ($databaseConnections) {
|
|
|
- $form->text('id')->rules('required');
|
|
|
+ $form = new Form(new Tenant(['domains', 'users']));
|
|
|
+
|
|
|
+ // 从URL中获取 tenant_id
|
|
|
+ $tenantId = request()->route('tenant_id');
|
|
|
+
|
|
|
+ $form->tab('基本信息', function (Form $form) use ($databaseConnections, $tenantId) {
|
|
|
+ $form->text('id')->rules('required')->default($tenantId); // 设置默认值为 tenant_id
|
|
|
$form->text('name');
|
|
|
+ $form->text('email');
|
|
|
$form->radio('tenancy_db_connection')
|
|
|
->options($databaseConnections)->default('mysql');;
|
|
|
$form->datetime('expired_at');
|
|
@@ -110,6 +136,12 @@ class TenantController extends AdminController
|
|
|
$form->text('domain');
|
|
|
});
|
|
|
});
|
|
|
+
|
|
|
+ $form->hasMany("users", 'users', function (Form\NestedForm $form) {
|
|
|
+ $form->text('username')->value($form->id);
|
|
|
+ $form->text('tenant_id')->value($form->id);
|
|
|
+ });
|
|
|
+
|
|
|
return $form;
|
|
|
}
|
|
|
}
|