refactor: 用户分页添加最后登录ip/最后登录时间输出

This commit is contained in:
2025-03-01 12:40:19 +08:00
parent 4568d59508
commit 9ae6871666
3 changed files with 46 additions and 13 deletions

View File

@@ -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('操作失败');

View File

@@ -26,6 +26,7 @@ class SysUserBaseModel extends BaseModel
'avatar' => 'string',
'mobile' => 'string',
'email' => 'string',
'delete_disable' => 'int',
'status' => 'int',
'created_at' => 'datetime',
'updated_at' => 'datetime',

View File

@@ -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' => '更新时间'])