From 838a441b2ada0d1c21dfcc2dc88566aaa7c236dc Mon Sep 17 00:00:00 2001 From: Karson Date: Wed, 14 Jan 2026 11:54:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=BB=98=E8=AE=A4=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E5=92=8C=E9=BB=98=E8=AE=A4=E7=BB=84=E5=88=AB=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增是否允许批量删除会员配置 优化默认头像显示 --- application/admin/controller/user/User.php | 39 ++++++++++--- application/admin/lang/zh-cn/user/user.php | 64 +++++++++++----------- application/common/library/Auth.php | 3 +- application/common/model/User.php | 2 +- application/config.php | 6 ++ 5 files changed, 74 insertions(+), 40 deletions(-) diff --git a/application/admin/controller/user/User.php b/application/admin/controller/user/User.php index 94828e4f..ede939a7 100644 --- a/application/admin/controller/user/User.php +++ b/application/admin/controller/user/User.php @@ -54,6 +54,7 @@ class User extends Backend return json($result); } + $this->assignconfig('multi_delete_user', config('fastadmin.multi_delete_user')); return $this->view->fetch(); } @@ -93,14 +94,38 @@ class User extends Backend if (!$this->request->isPost()) { $this->error(__("Invalid parameters")); } - $ids = $ids ? $ids : $this->request->post("ids"); - $row = $this->model->get($ids); - $this->modelValidate = true; - if (!$row) { - $this->error(__('No Results were found')); + $ids = $ids ?: $this->request->post("ids"); + $ids = array_filter(explode(',', $ids)); + if (!(config('fastadmin.multi_delete_user') ?: false)) { + if (count($ids) > 1) { + $this->error(__('Multi delete is not allowed')); + } + $row = $this->model->get($ids); + $this->modelValidate = true; + if (!$row) { + $this->error(__('No Results were found')); + } + $result = Auth::instance()->delete($row['id']); + $count = $result ? 1 : 0; + if ($count) { + $this->success(); + } + } else { + //允许批量删除 + $list = $this->model->where('id', 'in', $ids)->select(); + $count = 0; + foreach ($list as $item) { + $result = Auth::instance()->delete($item['id']); + if ($result) { + $count++; + } + } + } + if ($count) { + $this->success(__('%s rows deleted succeeded, %s rows deleted failed', $count, count($ids) - $count)); + } else { + $this->error(__('No rows were deleted')); } - Auth::instance()->delete($row['id']); - $this->success(); } } diff --git a/application/admin/lang/zh-cn/user/user.php b/application/admin/lang/zh-cn/user/user.php index 329522c4..b2c36d79 100644 --- a/application/admin/lang/zh-cn/user/user.php +++ b/application/admin/lang/zh-cn/user/user.php @@ -1,35 +1,37 @@ 'ID', - 'Group_id' => '组别ID', - 'Username' => '用户名', - 'Nickname' => '昵称', - 'Password' => '密码', - 'Salt' => '密码盐', - 'Email' => '电子邮箱', - 'Mobile' => '手机号', - 'Avatar' => '头像', - 'Level' => '等级', - 'Gender' => '性别', - 'Male' => '男', - 'FeMale' => '女', - 'Birthday' => '生日', - 'Bio' => '格言', - 'Score' => '积分', - 'Successions' => '连续登录天数', - 'Maxsuccessions' => '最大连续登录天数', - 'Prevtime' => '上次登录时间', - 'Logintime' => '登录时间', - 'Loginip' => '登录IP', - 'Loginfailure' => '失败次数', - 'Joinip' => '加入IP', - 'Jointime' => '加入时间', - 'Createtime' => '创建时间', - 'Updatetime' => '更新时间', - 'Token' => 'Token', - 'Status' => '状态', - 'Username must be 3 to 30 characters' => '用户名只能由3-30位数字、字母、下划线组合', - 'Password must be 6 to 30 characters' => '密码长度必须在6-30位之间,不能包含空格', - 'Leave password blank if dont want to change' => '不修改密码请留空', + 'Id' => 'ID', + 'Group_id' => '组别ID', + 'Username' => '用户名', + 'Nickname' => '昵称', + 'Password' => '密码', + 'Salt' => '密码盐', + 'Email' => '电子邮箱', + 'Mobile' => '手机号', + 'Avatar' => '头像', + 'Level' => '等级', + 'Gender' => '性别', + 'Male' => '男', + 'FeMale' => '女', + 'Birthday' => '生日', + 'Bio' => '格言', + 'Score' => '积分', + 'Successions' => '连续登录天数', + 'Maxsuccessions' => '最大连续登录天数', + 'Prevtime' => '上次登录时间', + 'Logintime' => '登录时间', + 'Loginip' => '登录IP', + 'Loginfailure' => '失败次数', + 'Joinip' => '加入IP', + 'Jointime' => '加入时间', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Token' => 'Token', + 'Status' => '状态', + 'Username must be 3 to 30 characters' => '用户名只能由3-30位数字、字母、下划线组合', + 'Password must be 6 to 30 characters' => '密码长度必须在6-30位之间,不能包含空格', + 'Leave password blank if dont want to change' => '不修改密码请留空', + 'Multi delete is not allowed' => '不支持批量删除会员', + '%s rows deleted succeeded, %s rows deleted failed' => '操作成功,其中%s行删除成功,%s行删除失败', ]; diff --git a/application/common/library/Auth.php b/application/common/library/Auth.php index b2807ed6..0d360013 100644 --- a/application/common/library/Auth.php +++ b/application/common/library/Auth.php @@ -166,12 +166,13 @@ class Auth $time = time(); $data = [ + 'group_id' => config('fastadmin.user_default_group') ?: 0, 'username' => $username, 'password' => $password, 'email' => $email, 'mobile' => $mobile, 'level' => 1, - 'score' => 0, + 'score' => config('fastadmin.user_initial_score') ?: 0, 'avatar' => '', ]; $params = array_merge($data, [ diff --git a/application/common/model/User.php b/application/common/model/User.php index 64211c02..1fa0c2a4 100644 --- a/application/common/model/User.php +++ b/application/common/model/User.php @@ -45,7 +45,7 @@ class User extends Model public function getAvatarAttr($value, $data) { if (!$value) { - $value = config('fastadmin.user_letter_avatar') ? letter_avatar($data['nickname']) : (config('fastadmin.user_default_avatar') ?: '/assets/img/avatar.png'); + $value = config('fastadmin.user_letter_avatar') && $data && ($data['nickname'] ?? '') ? letter_avatar($data['nickname']) : (config('fastadmin.user_default_avatar') ?: '/assets/img/avatar.png'); } return cdnurl($value, true); } diff --git a/application/config.php b/application/config.php index f0df19b4..5c117372 100755 --- a/application/config.php +++ b/application/config.php @@ -289,6 +289,10 @@ return [ 'user_letter_avatar' => true, //会员默认头像,仅当user_letter_avatar为false时有效 'user_default_avatar' => '/assets/img/avatar.png', + //会员默认组别 + 'user_default_group' => 0, + //会员初始积分 + 'user_initial_score' => 0, //是否启用会员等级规则,支持none/auto/up,none表示不影响等级,auto表示自动升降级,up表示只升不降 'user_level_rule' => '', //会员等级积分字典,键名表示等级,值表示所需的积分 @@ -311,6 +315,8 @@ return [ 'multipletab' => true, //是否默认展示子菜单 'show_submenu' => false, + //是否开启批量删除会员 + 'multi_delete_user' => false, //后台皮肤,为空时表示使用skin-black-blue 'adminskin' => '', //后台是否启用面包屑