diff --git a/src/admin/api.php b/src/admin/api.php index 79684003..7843cd86 100644 --- a/src/admin/api.php +++ b/src/admin/api.php @@ -16,7 +16,7 @@ require_once(DEDEINC.'/userlogin.class.php'); @set_time_limit(0); AjaxHead(); helper('cache'); -$action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update', 'upload_image')) ? $action : ''; +$action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update', 'upload_image','get_ai_server')) ? $action : ''; $curDir = dirname(GetCurUrl());//当前目录 /** * 登录鉴权 @@ -376,6 +376,14 @@ if ($action === 'is_need_check_code') { )); exit; } + if (empty($uploadedFile)) { + echo json_encode(array( + "code" => -1, + "msg" => "文件为空", + "data" => null, + )); + exit; + } $fileType = mime_content_type($uploadedFile); $imgSize = getimagesize($uploadedFile); if (!in_array($fileType, $allowedTypes) || !$imgSize) { @@ -434,5 +442,22 @@ if ($action === 'is_need_check_code') { "msg" => "上传成功", "data" => $activepath."/".$filename, )); +} else if($action === 'get_ai_server') { + $params = $_GET; + unset($params['action']); + checkLogin(); + $params['timestamp'] = time(); // 加入时间戳 + $cuserLogin = new userLogin(); + $params['adminid'] = $cuserLogin->getUserID(); // 加入时间戳 + $params['ip'] = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; // 获取客户端IP + + ksort($params); // 按字典序排序 + $queryString = http_build_query($params); // 生成查询字符串 + $params['sign'] = md5($queryString . $cfg_ai_apikey); // 计算MD5签名 + $url = $cfg_ai_server . '/ai?' . http_build_query($params); + echo json_encode(array( + "code" => 0, + "data" => $url, + )); } ?> \ No newline at end of file diff --git a/src/admin/templets/article_add.htm b/src/admin/templets/article_add.htm index a42d9510..9dce3893 100644 --- a/src/admin/templets/article_add.htm +++ b/src/admin/templets/article_add.htm @@ -26,7 +26,7 @@
-
发布文档
+
发布文档
@@ -262,10 +262,16 @@ function showAI() { $("#mdlAI").modal('show'); } - $("#btnAIAction").click(function() { + $("#btnAIAction").click(async function() { let prompt = document.getElementById("prompt").value; let modelid = document.getElementById("modelid").value; - let eventSource = new EventSource(`/ai/article_add?modelid=${modelid}&prompt=${prompt}`); + let req = await fetch(`api.php?action=get_ai_server&pname=article_add&modelid=${modelid}&prompt=${prompt}`); + let resp = await req.json(); + if (resp.code !== 0) { + ShowMsg("获取服务器地址失败"); + return + } + let eventSource = new EventSource(resp.data); // 新增状态跟踪变量 let currentKey = null; diff --git a/src/admin/templets/article_edit.htm b/src/admin/templets/article_edit.htm index 9079bb15..19c655fb 100644 --- a/src/admin/templets/article_edit.htm +++ b/src/admin/templets/article_edit.htm @@ -26,7 +26,7 @@
-
修改文档
+
修改文档
@@ -266,11 +266,17 @@ function showAI() { $("#mdlAI").modal('show'); } - $("#btnAIAction").click(function() { + $("#btnAIAction").click(async function() { let prompt = document.getElementById("prompt").value; let modelid = document.getElementById("modelid").value; - let eventSource = new EventSource(`/ai/article_edit?aid=&modelid=${modelid}&prompt=${prompt}`); - + let req = await fetch(`api.php?action=get_ai_server&pname=article_edit&aid=&modelid=${modelid}&prompt=${prompt}`); + let resp = await req.json(); + if (resp.code !== 0) { + ShowMsg("获取服务器地址失败"); + return + } + let eventSource = new EventSource(resp.data); + // 新增状态跟踪变量 let currentKey = null; let tagBuffer = ""; @@ -308,10 +314,7 @@ CKEDITOR.instances["body"].setReadOnly(false); bodyHtml = ""; } else if(currentKey == "typeid"){ - typeid += tagBuffer; - } else if(currentKey == "typeid"){ const input = document.querySelector(`[name="${currentKey}"]`); - console.log("typeid=",typeid); if (input) { $(input).val(typeid); $(input).prop("disabled", false).removeClass("disabled"); // 恢复输入状态 @@ -345,6 +348,8 @@ // CKEDITOR.instances["body"].insertHtml(char); bodyHtml += char; CKEDITOR.instances["body"].setData(bodyHtml) + } else if(currentKey == "typeid"){ + typeid += char; } else { const input = document.querySelector(`[name="${currentKey}"]`); if (input) { diff --git a/src/admin/templets/catalog_add.htm b/src/admin/templets/catalog_add.htm index 8aee290a..acea8d24 100644 --- a/src/admin/templets/catalog_add.htm +++ b/src/admin/templets/catalog_add.htm @@ -19,7 +19,7 @@
-
添加栏目
+
添加栏目
@@ -412,10 +412,17 @@ function showAI() { $("#mdlAI").modal('show'); } - $("#btnAIAction").click(function() { + $("#btnAIAction").click(async function() { + let prompt = document.getElementById("prompt").value; let modelid = document.getElementById("modelid").value; - let eventSource = new EventSource(`/ai/catalog_add?modelid=${modelid}&prompt=${prompt}`); + let req = await fetch(`api.php?action=get_ai_server&pname=catalog_add&modelid=${modelid}&prompt=${prompt}`); + let resp = await req.json(); + if (resp.code !== 0) { + ShowMsg("获取服务器地址失败"); + return + } + let eventSource = new EventSource(resp.data); // 新增状态跟踪变量 let currentKey = null; diff --git a/src/admin/templets/catalog_add_quick.htm b/src/admin/templets/catalog_add_quick.htm index c14e5852..1fad962b 100644 --- a/src/admin/templets/catalog_add_quick.htm +++ b/src/admin/templets/catalog_add_quick.htm @@ -19,7 +19,7 @@
-
批量添加栏目
+
批量添加栏目
@@ -287,7 +287,7 @@ $("#btnAIAction").click(function() { let prompt = document.getElementById("prompt").value; let modelid = document.getElementById("modelid").value; - let eventSource = new EventSource(`/ai/catalog_add_quick?modelid=${modelid}&prompt=${prompt}`); + let eventSource = new EventSource(`/ai/catalog_add_quick?pname=catalog_add_quick&modelid=${modelid}&prompt=${prompt}`); // 新增状态跟踪变量 let currentKey = null; diff --git a/src/admin/templets/catalog_edit.htm b/src/admin/templets/catalog_edit.htm index 700b8a5a..509c52a9 100644 --- a/src/admin/templets/catalog_edit.htm +++ b/src/admin/templets/catalog_edit.htm @@ -19,7 +19,7 @@
-
修改栏目
+
修改栏目
@@ -444,10 +444,16 @@ $("#mdlAI").modal('show'); } let bodyHtml = ""; - $("#btnAIAction").click(function() { + $("#btnAIAction").click(async function() { let prompt = document.getElementById("prompt").value; let modelid = document.getElementById("modelid").value; - let eventSource = new EventSource(`/ai/catalog_edit?tid=&modelid=${modelid}&prompt=${prompt}`); + let req = await fetch(`api.php?action=get_ai_server&pname=catalog_edit&tid=&modelid=${modelid}&prompt=${prompt}`); + let resp = await req.json(); + if (resp.code !== 0) { + ShowMsg("获取服务器地址失败"); + return + } + let eventSource = new EventSource(resp.data); // 新增状态跟踪变量 let currentKey = null; diff --git a/src/system/uploadsafe.inc.php b/src/system/uploadsafe.inc.php index b80ed5dd..18004024 100755 --- a/src/system/uploadsafe.inc.php +++ b/src/system/uploadsafe.inc.php @@ -60,7 +60,7 @@ foreach ($_FILES as $_key => $_value) { $imgtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/webp"); if (is_array(${$_key.'_type'}) && count(${$_key.'_type'}) > 0) { foreach (${$_key.'_type'} as $key => $value) { - if (in_array(strtolower(trim($value)), $imtypes)) { + if (in_array(strtolower(trim($value)), $imgtypes)) { $image_dd = @getimagesize($$_key); if ($image_dd == false) { continue; @@ -71,7 +71,7 @@ foreach ($_FILES as $_key => $_value) { } } $imgtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/webp"); - if (in_array(strtolower(trim($value)), $imtypes)) { + if (in_array(strtolower(trim($value)), $imgtypes)) { $image_dd = @getimagesize($$_key); if ($image_dd == false) { continue;