From b05c03281df8ffa1870fb72538961283ecbc6933 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Sat, 1 Mar 2025 12:40:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=94=A8=E6=88=B7=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=B7=BB=E5=8A=A0=E6=9C=80=E5=90=8E=E7=99=BB=E5=BD=95?= =?UTF-8?q?ip/=E6=9C=80=E5=90=8E=E7=99=BB=E5=BD=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/User.php | 31 +++++++++++++++++++ app/common/model/SysUserBaseModel.php | 27 ++++++++-------- .../20241230054930_create_sys_user.php | 1 + 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/app/admin/controller/v1/User.php b/app/admin/controller/v1/User.php index e09ecb2d..57f51ce7 100644 --- a/app/admin/controller/v1/User.php +++ b/app/admin/controller/v1/User.php @@ -3,6 +3,7 @@ declare (strict_types = 1); namespace app\admin\controller\v1; +use app\admin\model\v1\SysUserLoginLogModel; use app\admin\model\v1\SysUserModel; use app\admin\validate\v1\SysUserValidate; @@ -42,6 +43,32 @@ class User ]) ->bindAttr('role', ['role_name']) ->hidden(['role_id', 'role']); + if ($users->isEmpty()) { + return success('获取成功'); + } + + // 查询用户最后登录记录 + $logs = SysUserLoginLogModel::where('id', 'IN', function($query) use($users) { + $query->table((new SysUserLoginLogModel)->getTable()) + ->field(['MAX(id)']) + ->whereIn('user_id', array_column($users->items(), 'id')) + ->group('user_id'); + }) + ->column([ + 'ip', + 'max(created_at)' => 'created_at' + ], 'user_id'); + if (!empty($logs)) { + $users->each(function($item) use($logs) { + $item['last_login_ip'] = ''; + $item['last_login_at'] = ''; + if (!empty($logs[$item['id']])) { + $item['last_login_ip'] = long2ip($logs[$item['id']]['ip']); + $item['last_login_at'] = $logs[$item['id']]['created_at']; + } + return $item; + }); + } return success('获取成功', $users); } @@ -54,6 +81,7 @@ class User $user = SysUserModel::withoutField([ 'password', 'salt', + 'delete_disable', 'created_at', 'updated_at', 'deleted_at', @@ -147,6 +175,9 @@ class User if (empty($user)) { return error('请确认要操作的对象是否存在'); } + if ($user->delete_disable == 1) { + return error('该用户禁止删除'); + } if (!$user->delete()) { return error('操作失败'); diff --git a/app/common/model/SysUserBaseModel.php b/app/common/model/SysUserBaseModel.php index 30dd59ab..8b4f8778 100644 --- a/app/common/model/SysUserBaseModel.php +++ b/app/common/model/SysUserBaseModel.php @@ -17,18 +17,19 @@ class SysUserBaseModel extends BaseModel // 字段信息 protected $schema = [ - 'id' => 'int', - 'username' => 'string', - 'password' => 'string', - 'salt' => 'string', - 'role_id' => 'int', - 'nickname' => 'string', - 'avatar' => 'string', - 'mobile' => 'string', - 'email' => 'string', - 'status' => 'int', - 'created_at' => 'datetime', - 'updated_at' => 'datetime', - 'deleted_at' => 'datetime', + 'id' => 'int', + 'username' => 'string', + 'password' => 'string', + 'salt' => 'string', + 'role_id' => 'int', + 'nickname' => 'string', + 'avatar' => 'string', + 'mobile' => 'string', + 'email' => 'string', + 'delete_disable' => 'int', + 'status' => 'int', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + 'deleted_at' => 'datetime', ]; } diff --git a/database/migrations/20241230054930_create_sys_user.php b/database/migrations/20241230054930_create_sys_user.php index 25f6ae12..3868f338 100644 --- a/database/migrations/20241230054930_create_sys_user.php +++ b/database/migrations/20241230054930_create_sys_user.php @@ -36,6 +36,7 @@ class CreateSysUser extends Migrator ->addColumn('avatar', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '头像']) ->addColumn('mobile', 'string', ['limit' => 11, 'null' => true, 'default' => null, 'comment' => '手机号码']) ->addColumn('email', 'string', ['limit' => 128, 'null' => true, 'default' => null, 'comment' => '邮箱地址']) + ->addColumn('delete_disable', 'boolean', ['null' => false, 'default' => 0, 'comment' => '是否禁止删除:1为是,0为否']) ->addColumn('status', 'boolean', ['null' => false, 'default' => 1, 'comment' => '-1为禁用, 1为启用']) ->addColumn('created_at', 'timestamp', ['null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => '创建时间']) ->addColumn('updated_at', 'timestamp', ['null' => false, 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', 'comment' => '更新时间'])