合并分支 'master-server' 到 'master'
Master server 查看合并请求 !1097
正在显示
4 个修改的文件
包含
68 行增加
和
50 行删除
| @@ -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, |
-
请 注册 或 登录 后发表评论