Files
water-back/modules/Cms/Http/Controllers/Admin/VersionController.php
2023-01-12 14:47:38 +08:00

68 lines
2.0 KiB
PHP

<?php
namespace Modules\Cms\Http\Controllers\Admin;
use Encore\Admin\Auth\Database\Administrator;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Widgets\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Routing\Controller;
use Overtrue\LaravelVersionable\Version;
class VersionController extends Controller
{
public function index(Content $content, $model, $key): Content
{
return $content
->header($model . ' => ' . $key)
->description('数据操作日志')
->body($this->grid($model, $key));
}
public function grid($model, $key): Grid
{
$grid = new Grid(new Version());
$grid->disableCreateButton();
$grid->disableActions();
$grid->disableTools();
$grid->model()->whereHasMorph(
'versionable',
$model,
function (Builder $query) use ($key) {
$query->where('id', $key);
}
)->orderByDesc('id');
$grid->column('操作用户')->display(function () {
if ($this->user_id < config('mall.administrator_max_id')) {
config(['versionable.user_model' => Administrator::class]);
return '[Admin] ' . ($this->user->name ?? '--SYSTEM--');
} else {
return '[USER] ' . ($this->user->username ?? '--USER--');
}
});
$grid->column('versionable_type', '数据变动')->expand(function () {
$data = [];
foreach ($this->contents as $key => $item) {
$data[] = [
$key,
is_array($item) ? json_encode($item, JSON_UNESCAPED_UNICODE) : $item,
];
}
return new Table(['字段名称', '变更值'], $data);
});
$grid->column('操作时间')->display(function () {
return $this->created_at->toDateTimeString();
});
return $grid;
}
}