作者 张关杰

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6 into bate

@@ -89,9 +89,9 @@ class Count extends Command @@ -89,9 +89,9 @@ class Count extends Command
89 DB::table('gl_count')->insert($data); 89 DB::table('gl_count')->insert($data);
90 } 90 }
91 }catch (\Exception $e){ 91 }catch (\Exception $e){
92 - echo date('Y-m-d H:i:s') . ' error: ' . $v['test_domain'] . '->' . $e->getMessage() . PHP_EOL; 92 + echo date('Y-m-d H:i:s') . ' error: ' . '->' . $e->getMessage() . PHP_EOL;
93 } 93 }
94 - echo date('Y-m-d H:i:s') . ' end: ' . $v['test_domain'] . PHP_EOL; 94 + echo date('Y-m-d H:i:s') . ' end: ' . PHP_EOL;
95 echo $this->error; 95 echo $this->error;
96 } 96 }
97 97
@@ -55,7 +55,7 @@ class VideoTask extends Command @@ -55,7 +55,7 @@ class VideoTask extends Command
55 /** 55 /**
56 * @var int 最大子任务 56 * @var int 最大子任务
57 */ 57 */
58 - public $max_sub_task = 800; 58 + public $max_sub_task = 200;
59 59
60 /** 60 /**
61 * @return bool 61 * @return bool
@@ -101,6 +101,7 @@ class VideoTask extends Command @@ -101,6 +101,7 @@ class VideoTask extends Command
101 $task_project->save(); 101 $task_project->save();
102 continue; 102 continue;
103 } 103 }
  104 + $logo_bg = $this->getImage($domainInfo);
104 foreach ($keyword as $val) { 105 foreach ($keyword as $val) {
105 $log = KeywordVideoTaskLog::where(['project_id' => $task_project->project_id, 'keyword_id' => $val->id])->first(); 106 $log = KeywordVideoTaskLog::where(['project_id' => $task_project->project_id, 'keyword_id' => $val->id])->first();
106 if ($log){ 107 if ($log){
@@ -113,7 +114,7 @@ class VideoTask extends Command @@ -113,7 +114,7 @@ class VideoTask extends Command
113 'keyword' => $val->title, 114 'keyword' => $val->title,
114 'data' => json_encode(['url' => $keywordInfo['url'],'title' => $keywordInfo['title'], 115 'data' => json_encode(['url' => $keywordInfo['url'],'title' => $keywordInfo['title'],
115 'description' => $keywordInfo['keyword_content'], 'images' => $keywordInfo['product_list'], 116 'description' => $keywordInfo['keyword_content'], 'images' => $keywordInfo['product_list'],
116 - 'keywords' => $keywordInfo['keyword_list']]), 117 + 'keywords' => $keywordInfo['keyword_list'], 'logo_bg' => $logo_bg]),
117 'status' => KeywordVideoTaskLog::STATUS_INIT, 118 'status' => KeywordVideoTaskLog::STATUS_INIT,
118 'updated_at' => date('Y-m-d H:i:s'), 119 'updated_at' => date('Y-m-d H:i:s'),
119 'created_at' => date('Y-m-d H:i:s'), 120 'created_at' => date('Y-m-d H:i:s'),
@@ -138,8 +139,7 @@ class VideoTask extends Command @@ -138,8 +139,7 @@ class VideoTask extends Command
138 return true; 139 return true;
139 } 140 }
140 foreach ($subTask as $val) { 141 foreach ($subTask as $val) {
141 - $logo_bg = $this->getImage($val->project_id);  
142 - $valData = (array)json_decode($val->data); 142 + $valData = json_decode($val->data,true);
143 $task_id = 'v6-' . uniqid(); 143 $task_id = 'v6-' . uniqid();
144 $data = [ 144 $data = [
145 'project_data' => [ 145 'project_data' => [
@@ -148,8 +148,8 @@ class VideoTask extends Command @@ -148,8 +148,8 @@ class VideoTask extends Command
148 'keywords' => $valData['keywords'], 148 'keywords' => $valData['keywords'],
149 'description' => $valData['description'], 149 'description' => $valData['description'],
150 'images' => $valData['images'], 150 'images' => $valData['images'],
151 - 'logo'=> $logo_bg['logo'],  
152 - 'bg'=> $logo_bg['bg'] 151 + 'logo'=> $valData['logo_bg']['logo'] ?? '',
  152 + 'bg'=> $valData['logo_bg']['bg'] ?? ''
153 ], 153 ],
154 'task_id' => $task_id, 154 'task_id' => $task_id,
155 'callback_url' => env('APP_URL') . '/api/video_task_callback', 155 'callback_url' => env('APP_URL') . '/api/video_task_callback',
@@ -189,23 +189,39 @@ class VideoTask extends Command @@ -189,23 +189,39 @@ class VideoTask extends Command
189 } 189 }
190 190
191 /** 191 /**
192 - * @remark :根据关键字获取产品主图  
193 - * @name :getKeywordList  
194 - * @author :lyh  
195 - * @method :post  
196 - * @time :2024/2/23 16:28 192 + * 根据关键字获取产品主图
  193 + * @param $keyword_id
  194 + * @param $project_id
  195 + * @param $domain
  196 + * @return array
197 */ 197 */
198 public function getKeywordImage($keyword_id,$project_id,$domain){ 198 public function getKeywordImage($keyword_id,$project_id,$domain){
199 $keywordModel = new Keyword(); 199 $keywordModel = new Keyword();
200 $keywordInfo = $keywordModel->read(['id'=>$keyword_id]); 200 $keywordInfo = $keywordModel->read(['id'=>$keyword_id]);
  201 + // TODO 当内容太多时,生成视频过长, 尽量保证生成视频30秒左右, 所以需要控制文案内容长度
  202 + $content = $keywordInfo['keyword_content'];
  203 + $content_array = explode(" ", $content);
  204 + if (count($content_array) > 80) {
  205 + $content_array = preg_split("/[,,。]/u", $content);
  206 + $tmp = '';
  207 + foreach ($content_array as $val) {
  208 + $tmp .= $val . '.';
  209 + $tmp_array = explode(' ', $tmp);
  210 + if (count($tmp_array) > 60) {
  211 + $content = $tmp;
  212 + break;
  213 + }
  214 + }
  215 + }
  216 +
201 //TODO::所有产品 217 //TODO::所有产品
202 $thumb = $this->getRecommendAndHotProducts($keywordInfo['route'],$project_id); 218 $thumb = $this->getRecommendAndHotProducts($keywordInfo['route'],$project_id);
203 - $keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();; 219 + $keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();
204 $data = [ 220 $data = [
205 - 'url'=>$domain.'/'.$keywordInfo['route'], 221 + 'url'=> 'https://' . $domain.'/'.$keywordInfo['route'],
206 'title'=>$keywordInfo['title'], 222 'title'=>$keywordInfo['title'],
207 'keyword_title'=>$keywordInfo['keyword_title'], 223 'keyword_title'=>$keywordInfo['keyword_title'],
208 - 'keyword_content'=>$keywordInfo['keyword_content'], 224 + 'keyword_content'=>$content,
209 'product_list'=>$thumb ?? [], 225 'product_list'=>$thumb ?? [],
210 'keyword_list'=>$keyword_arr ?? [] 226 'keyword_list'=>$keyword_arr ?? []
211 ]; 227 ];
@@ -271,18 +287,13 @@ class VideoTask extends Command @@ -271,18 +287,13 @@ class VideoTask extends Command
271 } 287 }
272 288
273 /** 289 /**
274 - * @remark :获取图片  
275 - * @name :getImage  
276 - * @author :lyh  
277 - * @method :post  
278 - * @time :2024/3/12 15:29 290 + * 获取图片
  291 + * @param $domainInfo
  292 + * @return array
279 */ 293 */
280 - public function getImage($project_id){  
281 - $domainModel = new DomainInfo();  
282 - $domainInfo = $domainModel->read(['project_id'=>$project_id]);  
283 - if($domainInfo === false){  
284 - return '';  
285 - } 294 + public function getImage($domainInfo){
  295 + $logo = $bg = '';
  296 + try {
286 $dom = file_get_html('https://'.$domainInfo['domain'].'/'); 297 $dom = file_get_html('https://'.$domainInfo['domain'].'/');
287 $logoDom = $dom->find('.logo', 0)->find("img",0); 298 $logoDom = $dom->find('.logo', 0)->find("img",0);
288 if($logoDom != null){ 299 if($logoDom != null){
@@ -292,6 +303,10 @@ class VideoTask extends Command @@ -292,6 +303,10 @@ class VideoTask extends Command
292 if($bgDom != null){ 303 if($bgDom != null){
293 $bg = $bgDom->src; 304 $bg = $bgDom->src;
294 } 305 }
295 - return ['logo'=>$logo ?? '','ng'=>$bg ?? '']; 306 + $dom->clear();
  307 + } catch (\Exception $e) {
  308 + Log::error('file_get_html: ' . $domainInfo['domain'] . ', error message: ' . $e->getMessage());
  309 + }
  310 + return ['logo' => $logo, 'bg' => $bg];
296 } 311 }
297 } 312 }
@@ -665,8 +665,6 @@ class ProjectUpdate extends Command @@ -665,8 +665,6 @@ class ProjectUpdate extends Command
665 foreach ($item['extend'] as $ke => $ve) { 665 foreach ($item['extend'] as $ke => $ve) {
666 $extend = $extend_model->read(['title' => $ke]); 666 $extend = $extend_model->read(['title' => $ke]);
667 if ($extend) { 667 if ($extend) {
668 - $extend_info = $extend_info_model->read(['key' => $extend['key'], 'content_id' => $id]);  
669 - if (!$extend_info) {  
670 if ($extend['type'] == 3) { 668 if ($extend['type'] == 3) {
671 $gallery = []; 669 $gallery = [];
672 if (is_array($ve)) { 670 if (is_array($ve)) {
@@ -682,6 +680,9 @@ class ProjectUpdate extends Command @@ -682,6 +680,9 @@ class ProjectUpdate extends Command
682 } else { 680 } else {
683 $value = $ve; 681 $value = $ve;
684 } 682 }
  683 +
  684 + $extend_info = $extend_info_model->read(['key' => $extend['key'], 'content_id' => $id]);
  685 + if (!$extend_info) {
685 $extend_info_model->add([ 686 $extend_info_model->add([
686 'key' => $extend['key'], 687 'key' => $extend['key'],
687 'type' => $extend['type'], 688 'type' => $extend['type'],
@@ -690,6 +691,8 @@ class ProjectUpdate extends Command @@ -690,6 +691,8 @@ class ProjectUpdate extends Command
690 'module_id' => $custom_info['id'], 691 'module_id' => $custom_info['id'],
691 'values' => $value, 692 'values' => $value,
692 ]); 693 ]);
  694 + } else {
  695 + $extend_info_model->edit(['type' => $extend['type'], 'values' => $value], ['key' => $extend['key'], 'content_id' => $id]);
693 } 696 }
694 } 697 }
695 } 698 }
@@ -114,6 +114,7 @@ class ProjectController extends BaseController @@ -114,6 +114,7 @@ class ProjectController extends BaseController
114 'gl_project_deploy_optimize.quality_mid AS quality_mid', 114 'gl_project_deploy_optimize.quality_mid AS quality_mid',
115 'gl_project_deploy_optimize.design_mid AS design_mid', 115 'gl_project_deploy_optimize.design_mid AS design_mid',
116 'gl_project_deploy_optimize.api_no AS api_no', 116 'gl_project_deploy_optimize.api_no AS api_no',
  117 + 'gl_project_deploy_optimize.brand_keyword AS brand_keyword',
117 ]; 118 ];
118 return $select; 119 return $select;
119 } 120 }
@@ -778,7 +778,7 @@ class ProjectLogic extends BaseLogic @@ -778,7 +778,7 @@ class ProjectLogic extends BaseLogic
778 $token = $common->encrypt($param); 778 $token = $common->encrypt($param);
779 $res = Http::withoutVerifying()->get($url, ['token' => $token])->json(); 779 $res = Http::withoutVerifying()->get($url, ['token' => $token])->json();
780 if(empty($res['code']) || $res['code'] != 200){ 780 if(empty($res['code']) || $res['code'] != 200){
781 - $this->fail('ProjectToHagro error'); 781 + $this->fail($res['msg']);
782 } 782 }
783 return true; 783 return true;
784 } 784 }