From 34745fb3e531f2717633a196783d9863b517e458 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 28 Jul 2023 14:31:54 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=AE=A1=E7=90=86=E5=91=98=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E4=BF=AE=E6=94=B9=E7=B3=BB=E7=BB=9F=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E4=BA=BA=E5=9F=BA=E6=9C=AC=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/UsersController.php | 57 ++++++++++++++----- app/Models/User.php | 27 +-------- app/Models/UserBot.php | 23 ++++++++ .../pages/manage/components/DialogWrapper.vue | 34 ++++++++--- 4 files changed, 92 insertions(+), 49 deletions(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 2fdcb9718..3bc609f1c 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -1720,21 +1720,36 @@ class UsersController extends AbstractController } $userBot = UserBot::whereBotId($botUser->userid)->whereUserid($user->userid)->first(); if (empty($userBot)) { - return Base::retError('不是你的机器人'); + if (UserBot::systemBotName($botUser->email)) { + // 系统机器人(仅限管理员) + if (!$user->isAdmin()) { + return Base::retError('权限不足'); + } + } else { + // 其他用户的机器人(仅限主人) + return Base::retError('不是你的机器人'); + } } - return Base::retSuccess('success', [ + // + $data = [ 'id' => $botUser->userid, 'name' => $botUser->nickname, 'avatar' => $botUser->userimg, - 'clear_day' => $userBot->clear_day, - 'webhook_url' => $userBot->webhook_url, - ]); + 'clear_day' => 0, + 'webhook_url' => '', + 'system_name' => UserBot::systemBotName($botUser->email), + ]; + if ($userBot) { + $data['clear_day'] = $userBot->clear_day; + $data['webhook_url'] = $userBot->webhook_url; + } + return Base::retSuccess('success', $data); } /** * @api {post} api/users/bot/edit 30. 编辑机器人 * - * @apiDescription 需要token身份,编辑我的机器人信息 + * @apiDescription 需要token身份,编辑 我的机器人 或 管理员修改系统机器人 信息 * @apiVersion 1.0.0 * @apiGroup users * @apiName bot__edit @@ -1742,8 +1757,8 @@ class UsersController extends AbstractController * @apiParam {Number} id 机器人ID * @apiParam {String} [name] 机器人名称 * @apiParam {String} [avatar] 机器人头像 - * @apiParam {Number} [clear_day] 清理天数 - * @apiParam {String} [webhook_url] Webhook地址 + * @apiParam {Number} [clear_day] 清理天数(仅 我的机器人) + * @apiParam {String} [webhook_url] Webhook地址(仅 我的机器人) * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -1760,7 +1775,15 @@ class UsersController extends AbstractController } $userBot = UserBot::whereBotId($botUser->userid)->whereUserid($user->userid)->first(); if (empty($userBot)) { - return Base::retError('不是你的机器人'); + if (UserBot::systemBotName($botUser->email)) { + // 系统机器人(仅限管理员) + if (!$user->isAdmin()) { + return Base::retError('权限不足'); + } + } else { + // 其他用户的机器人(仅限主人) + return Base::retError('不是你的机器人'); + } } // $data = Request::input(); @@ -1789,18 +1812,24 @@ class UsersController extends AbstractController $botUser->updateInstance($upUser); $botUser->save(); } - if ($upBot) { + if ($upBot && $userBot) { $userBot->updateInstance($upBot); $userBot->save(); } // - return Base::retSuccess('修改成功', [ + $data = [ 'id' => $botUser->userid, 'name' => $botUser->nickname, 'avatar' => $botUser->userimg, - 'clear_day' => $userBot->clear_day, - 'webhook_url' => $userBot->webhook_url, - ]); + 'clear_day' => 0, + 'webhook_url' => '', + 'system_name' => UserBot::systemBotName($botUser->email), + ]; + if ($userBot) { + $data['clear_day'] = $userBot->clear_day; + $data['webhook_url'] = $userBot->webhook_url; + } + return Base::retSuccess('修改成功', $data); } /** diff --git a/app/Models/User.php b/app/Models/User.php index 886ac424c..615961969 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -607,32 +607,7 @@ class User extends AbstractModel ])->save(); } // - switch ($key) { - case 'system-msg': - $update['nickname'] = '系统消息'; - break; - case 'task-alert': - $update['nickname'] = '任务提醒'; - break; - case 'check-in': - $update['nickname'] = '签到打卡'; - break; - case 'anon-msg': - $update['nickname'] = '匿名消息'; - break; - case 'approval-alert': - $update['nickname'] = '审批'; - break; - case 'ai-openai': - $update['nickname'] = 'ChatGPT'; - break; - case 'ai-claude': - $update['nickname'] = 'Claude'; - break; - case 'bot-manager': - $update['nickname'] = '机器人管理'; - break; - } + $update['nickname'] = UserBot::systemBotName($email); } if ($update) { $botUser->updateInstance($update); diff --git a/app/Models/UserBot.php b/app/Models/UserBot.php index 9444711fc..2172f4ca4 100644 --- a/app/Models/UserBot.php +++ b/app/Models/UserBot.php @@ -36,6 +36,29 @@ use Carbon\Carbon; class UserBot extends AbstractModel { + /** + * 系统机器人名称 + * @param $name string 邮箱 或 邮箱前缀 + * @return string + */ + public static function systemBotName($name) + { + if (str_contains($name, "@")) { + $name = explode("@", $name)[0]; + } + return match ($name) { + 'system-msg' => '系统消息', + 'task-alert' => '任务提醒', + 'check-in' => '签到打卡', + 'anon-msg' => '匿名消息', + 'approval-alert' => '审批', + 'ai-openai' => 'ChatGPT', + 'ai-claude' => 'Claude', + 'bot-manager' => '机器人管理', + default => '', // 不是系统机器人时返回空(也可以拿来判断是否是系统机器人) + }; + } + /** * 机器人菜单 * @param $email diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index f53eb7f99..96cf0017c 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -78,7 +78,7 @@
{{$L('搜索消息')}}