feat: 发布智能体版

This commit is contained in:
augushong
2026-03-26 20:22:34 +08:00
parent 7ee9e102a5
commit 8cc08bcb8c
138 changed files with 7964 additions and 660 deletions

View File

@@ -0,0 +1,121 @@
<?php
declare(strict_types=1);
namespace base\common\command\admin\user;
use app\admin\model\SystemAdmin;
use app\admin\model\SystemAuth;
use app\common\console\Command;
use think\console\Input;
use think\console\input\Option;
use think\console\Output;
class AdminUserRoleAssignBase extends Command
{
protected function configure()
{
parent::configure();
$this->setName('admin:user:role:assign')
->addOption('user-id', null, Option::VALUE_REQUIRED, '用户ID')
->addOption('role-ids', null, Option::VALUE_REQUIRED, '角色ID列表逗号分隔')
->setDescription('给用户分配角色');
}
protected function execute(Input $input, Output $output)
{
$userId = $input->getOption('user-id');
$roleIdsParam = $input->getOption('role-ids');
if (empty($userId)) {
$output->error('用户ID不能为空');
return false;
}
if (empty($roleIdsParam)) {
$output->error('角色ID不能为空');
return false;
}
try {
$admin = SystemAdmin::find($userId);
if (empty($admin)) {
$output->error('用户ID ' . $userId . ' 不存在');
return false;
}
$roleIds = $this->parseRoleIds($roleIdsParam);
if (empty($roleIds)) {
$output->error('角色ID列表为空');
return false;
}
$validRoleIds = $this->validateRoleIds($roleIds);
$invalidRoleIds = array_diff($roleIds, $validRoleIds);
if (!empty($invalidRoleIds)) {
$invalidCount = count($invalidRoleIds);
$output->error("[错误] 发现 {$invalidCount} 个无效的角色ID:");
foreach (array_values($invalidRoleIds) as $roleId) {
$output->error(" - {$roleId}");
}
$output->writeln('');
}
if (empty($validRoleIds)) {
$output->error("有效角色ID数: 0");
$output->error("分配失败");
return false;
}
$existingAuthIds = $admin->auth_ids;
$existingAuthIdArray = [];
if (!empty($existingAuthIds)) {
$existingAuthIdArray = array_filter(explode(',', $existingAuthIds));
}
$newRoleIds = array_diff($validRoleIds, $existingAuthIdArray);
if (empty($newRoleIds)) {
$output->info('所有角色已存在,无需重复分配');
return true;
}
$mergedRoleIds = array_merge($existingAuthIdArray, $newRoleIds);
$mergedRoleIds = array_values(array_unique($mergedRoleIds));
$admin->auth_ids = implode(',', $mergedRoleIds);
$admin->save();
$output->info('角色分配成功');
$output->info('用户ID: ' . $userId);
$output->info('新增的角色ID: ' . implode(', ', $newRoleIds));
$output->info('该用户总角色数: ' . count($mergedRoleIds));
$output->info('所有角色ID: ' . implode(', ', $mergedRoleIds));
} catch (\Throwable $e) {
$output->error('分配角色失败: ' . $e->getMessage());
return false;
}
return true;
}
protected function parseRoleIds(string $roleIdsParam): array
{
$roleIds = explode(',', $roleIdsParam);
$roleIds = array_map('trim', $roleIds);
$roleIds = array_filter($roleIds);
return array_values($roleIds);
}
protected function validateRoleIds(array $roleIds): array
{
$validRoleIds = SystemAuth::whereIn('id', $roleIds)
->where('delete_time', 0)
->column('id');
return $validRoleIds;
}
}