作者 李宇航

合并分支 'master-server' 到 'master'

Master server



查看合并请求 !1097
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 2
3 use App\Models\File\Image; 3 use App\Models\File\Image;
4 use App\Models\File\File as FileModel; 4 use App\Models\File\File as FileModel;
  5 +use App\Models\Project\DeployOptimize;
  6 +use App\Models\Project\ProjectKeyword;
5 use App\Models\RouteMap\RouteMap; 7 use App\Models\RouteMap\RouteMap;
6 use App\Services\CosService; 8 use App\Services\CosService;
7 use App\Utils\EncryptUtils; 9 use App\Utils\EncryptUtils;
@@ -9,6 +11,7 @@ use App\Utils\LogUtils; @@ -9,6 +11,7 @@ use App\Utils\LogUtils;
9 use GuzzleHttp\Client; 11 use GuzzleHttp\Client;
10 use GuzzleHttp\Exception\GuzzleException; 12 use GuzzleHttp\Exception\GuzzleException;
11 use Illuminate\Support\Carbon; 13 use Illuminate\Support\Carbon;
  14 +use Illuminate\Support\Facades\Cache;
12 use Illuminate\Support\Facades\Redis; 15 use Illuminate\Support\Facades\Redis;
13 16
14 define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/'); 17 define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/');
@@ -1081,5 +1084,50 @@ function getRandByRatio($proArr){ @@ -1081,5 +1084,50 @@ function getRandByRatio($proArr){
1081 } 1084 }
1082 1085
1083 1086
  1087 +/**
  1088 + * @remark :随机获取前后缀
  1089 + * @name :getPrefixKeyword
  1090 + * @author :lyh
  1091 + * @method :post
  1092 + * @time :2025/2/11 14:41
  1093 + */
  1094 +function getPrefixKeyword($project_id, $type, $num)
  1095 +{
  1096 + $str = '';
  1097 + $info = getDeployOptimize($project_id);
  1098 + if (!empty($info['keyword_' . $type])) {
  1099 + $fix_keyword = explode(",", $info['keyword_' . $type]);
  1100 + //随机取
  1101 + shuffle($fix_keyword);
  1102 + if (count($fix_keyword) < $num)
  1103 + return $str;
  1104 + $keyword = array_slice($fix_keyword, 0, $num);
  1105 + $str = implode(", ", $keyword);
  1106 + }
  1107 + return $str;
  1108 +}
1084 1109
  1110 +/**
  1111 + * @remark :获取客户选择的关键词
  1112 + * @name :getDeployOptimize
  1113 + * @author :lyh
  1114 + * @method :post
  1115 + * @time :2025/2/11 14:58
  1116 + */
  1117 +function getDeployOptimize($project_id){
  1118 + $cache_key = 'project_deploy_optimize_info_' . $project_id;
  1119 + $info = Cache::get($cache_key);
  1120 + if(!$info){
  1121 + $projectOptimizeModel = new DeployOptimize();
  1122 + $info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description', 'keyword_prefix', 'keyword_suffix']);
  1123 + $projectKeywordModel = new ProjectKeyword();
  1124 + $keywordInfo = $projectKeywordModel->read(['project_id'=>$project_id]);
  1125 + $info['main_keyword'] = '';
  1126 + if(!empty($keywordInfo['main_keyword'])){
  1127 + $info['main_keyword'] = $keywordInfo['main_keyword'];
  1128 + }
  1129 + Cache::put($cache_key, $info, 600);
  1130 + }
  1131 + return $info;
  1132 +}
1085 1133
@@ -30,8 +30,8 @@ class AiCommandController extends BaseController @@ -30,8 +30,8 @@ class AiCommandController extends BaseController
30 'key.required' => '场景不能为空', 30 'key.required' => '场景不能为空',
31 ]); 31 ]);
32 if($this->param['key'] == 'keyword_seo_title'){ 32 if($this->param['key'] == 'keyword_seo_title'){
33 - $prefix = $this->getPrefixKeyword($this->user['project_id'], 'prefix', 1);  
34 - $suffix = $this->getPrefixKeyword($this->user['project_id'], 'suffix', 2); 33 + $prefix = getPrefixKeyword($this->user['project_id'], 'prefix', 1);
  34 + $suffix = getPrefixKeyword($this->user['project_id'], 'suffix', 2);
35 $text = $prefix . ' ' . $this->param['keyword']. ' ' . $suffix; 35 $text = $prefix . ' ' . $this->param['keyword']. ' ' . $suffix;
36 $data = [ 36 $data = [
37 'code' => 200, 37 'code' => 200,
@@ -289,51 +289,4 @@ class BaseController extends Controller @@ -289,51 +289,4 @@ class BaseController extends Controller
289 return http_post($c_url, json_encode($param)); 289 return http_post($c_url, json_encode($param));
290 } 290 }
291 291
292 -  
293 - /**  
294 - * @remark :随机获取前后缀  
295 - * @name :getPrefixKeyword  
296 - * @author :lyh  
297 - * @method :post  
298 - * @time :2025/2/11 14:41  
299 - */  
300 - public function getPrefixKeyword($project_id, $type, $num)  
301 - {  
302 - $str = '';  
303 - $info = $this->getDeployOptimize($project_id);  
304 - if (!empty($info['keyword_' . $type])) {  
305 - $fix_keyword = explode(",", $info['keyword_' . $type]);  
306 - //随机取  
307 - shuffle($fix_keyword);  
308 - if (count($fix_keyword) < $num)  
309 - return $str;  
310 - $keyword = array_slice($fix_keyword, 0, $num);  
311 - $str = implode(", ", $keyword);  
312 - }  
313 - return $str;  
314 - }  
315 -  
316 - /**  
317 - * @remark :获取客户选择的关键词  
318 - * @name :getDeployOptimize  
319 - * @author :lyh  
320 - * @method :post  
321 - * @time :2025/2/11 14:58  
322 - */  
323 - public function getDeployOptimize($project_id){  
324 - $cache_key = 'project_deploy_optimize_info_' . $project_id;  
325 - $info = Cache::get($cache_key);  
326 - if(!$info){  
327 - $projectOptimizeModel = new DeployOptimize();  
328 - $info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description', 'keyword_prefix', 'keyword_suffix']);  
329 - $projectKeywordModel = new ProjectKeyword();  
330 - $keywordInfo = $projectKeywordModel->read(['project_id'=>$project_id]);  
331 - $info['main_keyword'] = '';  
332 - if(!empty($keywordInfo['main_keyword'])){  
333 - $info['main_keyword'] = $keywordInfo['main_keyword'];  
334 - }  
335 - Cache::put($cache_key, $info, 600);  
336 - }  
337 - return $info;  
338 - }  
339 } 292 }
@@ -55,6 +55,24 @@ class AiCommandLogic extends BaseLogic @@ -55,6 +55,24 @@ class AiCommandLogic extends BaseLogic
55 $prompt = ''; 55 $prompt = '';
56 } 56 }
57 } 57 }
  58 + // 前缀关键词
  59 + if(preg_match_all("/\{qz_(\d+)\}/", $prompt, $matches)) {
  60 + foreach ($matches[0] as $key=>$val) {
  61 + $keyword = getPrefixKeyword($this->user['project_id'], 'prefix', $matches[1][$key]);
  62 + if($keyword){
  63 + $prompt = str_replace($val, $keyword, $prompt);
  64 + }
  65 + }
  66 + }
  67 + // 后缀关键词
  68 + if(preg_match_all("/\{hz_(\d+)\}/", $prompt, $matches)) {
  69 + foreach ($matches[0] as $key=>$val) {
  70 + $keyword = getPrefixKeyword($this->user['project_id'], 'suffix', $matches[1][$key]);
  71 + if($keyword){
  72 + $prompt = str_replace($val, $keyword, $prompt);
  73 + }
  74 + }
  75 + }
58 if(strpos($prompt, '{company detail}') !== false) { 76 if(strpos($prompt, '{company detail}') !== false) {
59 $company_introduction = $this->getDeployOptimize('company_en_description'); 77 $company_introduction = $this->getDeployOptimize('company_en_description');
60 $prompt = str_replace('{company detail}', $company_introduction, $prompt); 78 $prompt = str_replace('{company detail}', $company_introduction, $prompt);
@@ -67,7 +85,6 @@ class AiCommandLogic extends BaseLogic @@ -67,7 +85,6 @@ class AiCommandLogic extends BaseLogic
67 $prompt .= '.Please answer in ' . $lang; 85 $prompt .= '.Please answer in ' . $lang;
68 $ai_send = true; 86 $ai_send = true;
69 } 87 }
70 -  
71 return [ 88 return [
72 'prompt' => $prompt, 89 'prompt' => $prompt,
73 'scene' => $ai_command->scene, 90 'scene' => $ai_command->scene,