From aae1d094c91ccc4548d00617fc2feef8c7a6a01b Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Mon, 10 Mar 2025 17:01:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/OperateLog.php | 39 ++++++++++++++++++++++++++ app/admin/model/v1/SysOperateLog.php | 31 ++++++++++++++++++++ app/admin/route/v1.php | 6 ++++ 3 files changed, 76 insertions(+) create mode 100644 app/admin/controller/v1/OperateLog.php diff --git a/app/admin/controller/v1/OperateLog.php b/app/admin/controller/v1/OperateLog.php new file mode 100644 index 00000000..0eb20d41 --- /dev/null +++ b/app/admin/controller/v1/OperateLog.php @@ -0,0 +1,39 @@ +param([ + 'title', + 'created_at', + 'page/d', + 'size/d' + ]); + + $logs = SysOperateLog::with(['user' => function($query) { + $query->field(['id', 'username']); + }]) + ->withSearch(['title', 'created_at'], [ + 'title' => $param['title'] ?? null, + 'created_at' => $param['created_at'] ?? null + ]) + ->paginate([ + 'list_rows' => $param['size'] ?? 10, + 'page' => $param['page'] ?? 1, + ]) + ->bindAttr('user', ['username']) + ->hidden(['user_id', 'user']); + + return success('获取成功', $logs); + } +} diff --git a/app/admin/model/v1/SysOperateLog.php b/app/admin/model/v1/SysOperateLog.php index 3c1bcdc3..403a93f3 100644 --- a/app/admin/model/v1/SysOperateLog.php +++ b/app/admin/model/v1/SysOperateLog.php @@ -32,4 +32,35 @@ class SysOperateLog extends Model 'message' => 'string', 'created_at' => 'datetime' ]; + + // 关联操作人 + public function user() + { + return $this->belongsTo(SysUserModel::class, 'user_id', 'id'); + } + + // 按标题搜索 + public function searchTitleAttr($query, $value, $data) + { + if (empty($value)) { + return; + } + $query->where('title', 'like', "%$value%"); + } + + // 按操作时间搜索 + public function searchCreatedAtAttr($query, $value, $data) + { + if (empty($value)) return; + if (is_string($value)) { + $value = explode(',', $value); + } + if (is_array($value)) { + if (count($value) == 2) { + $query->whereBetweenTime('created_at', $value[0], $value[1]); + } else { + $query->whereTime('created_at', '>=', $value); + } + } + } } diff --git a/app/admin/route/v1.php b/app/admin/route/v1.php index bdd0cebb..d5bce7f6 100644 --- a/app/admin/route/v1.php +++ b/app/admin/route/v1.php @@ -488,6 +488,12 @@ Route::group('v1', function () { Route::put('update', 'SiteConfig/update'); }); }); + + // 日志管理 + Route::group('logs', function() { + // 操作日志列表 + Route::get('operate/index', 'OperateLog/index'); + }); })->prefix('v1.'); Route::miss(function() {