作者 lyh

gx ai视频

@@ -64,11 +64,13 @@ class AiVideoController extends BaseController @@ -64,11 +64,13 @@ class AiVideoController extends BaseController
64 */ 64 */
65 public function sendTask(AiVideoLogic $aiVideoLogic){ 65 public function sendTask(AiVideoLogic $aiVideoLogic){
66 $this->request->validate([ 66 $this->request->validate([
67 - 'keyword'=>['required'],  
68 - 'type'=>['required'], 67 + 'title'=>['required'],
  68 + 'description'=>['required'],
  69 + 'images'=>['required'],
69 ],[ 70 ],[
70 - 'keyword.required' => '关键字不能为空',  
71 - 'type.required' => '场景不能为空', 71 + 'title.required' => '标题不能为空',
  72 + 'description.required' => '短描述不能为空',
  73 + 'images.required' => '图片集合不能为空',
72 ]); 74 ]);
73 $result = $aiVideoLogic->sendTask(); 75 $result = $aiVideoLogic->sendTask();
74 $this->response('success',Code::SUCCESS,$result); 76 $this->response('success',Code::SUCCESS,$result);
@@ -7,9 +7,11 @@ use App\Http\Logic\Bside\BaseLogic; @@ -7,9 +7,11 @@ use App\Http\Logic\Bside\BaseLogic;
7 use App\Models\Ai\AiBlogAuthor; 7 use App\Models\Ai\AiBlogAuthor;
8 use App\Models\Ai\AiVideo; 8 use App\Models\Ai\AiVideo;
9 use App\Models\Project\AiBlogTask; 9 use App\Models\Project\AiBlogTask;
  10 +use App\Models\Project\AiVideoTask;
10 use App\Models\Project\ProjectAiSetting; 11 use App\Models\Project\ProjectAiSetting;
11 use App\Models\RouteMap\RouteMap; 12 use App\Models\RouteMap\RouteMap;
12 use App\Services\AiBlogService; 13 use App\Services\AiBlogService;
  14 +use App\Services\AiVideoService;
13 15
14 /** 16 /**
15 * @remark :视频模块 17 * @remark :视频模块
@@ -52,10 +54,7 @@ class AiVideoLogic extends BaseLogic @@ -52,10 +54,7 @@ class AiVideoLogic extends BaseLogic
52 */ 54 */
53 public function videoSave(){ 55 public function videoSave(){
54 try { 56 try {
55 - if(!empty($this->param['image'])){  
56 - $this->param['image'] = str_replace_url($this->param['image']);  
57 - }  
58 - $this->param['route'] = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_AI_VIDEO, $this->param['id'], $this->user['project_id']); 57 + $this->param['route'] = RouteMap::setRoute($this->param['tit'], RouteMap::SOURCE_AI_VIDEO, $this->param['id'], $this->user['project_id']);
59 $this->model->edit($this->param,['id'=>$this->param['id']]); 58 $this->model->edit($this->param,['id'=>$this->param['id']]);
60 $aiSettingInfo = $this->getProjectAiSetting(); 59 $aiSettingInfo = $this->getProjectAiSetting();
61 $aiBlogService = new AiBlogService(); 60 $aiBlogService = new AiBlogService();
@@ -78,16 +77,13 @@ class AiVideoLogic extends BaseLogic @@ -78,16 +77,13 @@ class AiVideoLogic extends BaseLogic
78 * @detail :status=1/待执行 77 * @detail :status=1/待执行
79 */ 78 */
80 public function sendTask(){ 79 public function sendTask(){
81 - $aiSettingInfo = $this->getProjectAiSetting();  
82 - $aiBlogService = new AiBlogService();  
83 - $aiBlogService->mch_id = $aiSettingInfo['mch_id'];  
84 - $aiBlogService->key = $aiSettingInfo['key'];  
85 - $aiBlogService->route = generateRoute(Translate::tran($this->param['keyword'], 'en'));  
86 - $result = $aiBlogService->createTask($this->param['keyword'],2,'video',$this->param['anchor'] ?? []); 80 + $aiVideoService = new AiVideoService($this->user['project_id']);
  81 + $result = $aiVideoService->createTask($this->param['title'],$this->param['description'],$this->param['images'],$this->param['anchor'] ?? []);
87 if($result['status'] == 200){ 82 if($result['status'] == 200){
88 - $aiBlogTaskModel = new AiBlogTask();  
89 - $aiBlogTaskModel->addReturnId(['project_id'=>$this->user['project_id'],'type'=>3,'task_id'=>$result['data']['task_id'],'status'=>1]);  
90 - $this->model->addReturnId(['keyword'=>$this->param['keyword'],'status'=>1,'task_id'=>$result['data']['task_id'],'project_id'=>$this->user['project_id'],'anchor'=>json_encode($this->param['anchor'] ?? [],true)]); 83 + $aiVideoTaskModel = new AiVideoTask();
  84 + $aiVideoTaskModel->addReturnId(['task_id'=>$result['data']['task_id'],'project_id'=>$this->user['project_id']]);
  85 + $id = $this->model->addReturnId(['task_id'=>$result['data']['task_id'],'description'=>$this->param['description'],'project_id'=>$this->user['project_id'],'images'=>json_encode($this->param['images'],true),'anchor'=>json_encode($this->param['anchor'] ?? [],true)]);
  86 + return $this->success(['id'=>$id]);
91 } 87 }
92 return $this->success(); 88 return $this->success();
93 } 89 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :AiVideoTask.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2025/4/30 9:41
  8 + */
  9 +
  10 +namespace App\Models\Project;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +class AiVideoTask extends Base
  15 +{
  16 + protected $table = 'gl_ai_video_task';
  17 +
  18 + /**
  19 + * 任务状态
  20 + */
  21 + const STATUS_RUNNING = 1;
  22 + const STATUS_FINISH = 2;
  23 +}
@@ -45,4 +45,42 @@ class AiVideoService @@ -45,4 +45,42 @@ class AiVideoService
45 $this->route = generateRoute(Translate::tran($keyword, 'en')); 45 $this->route = generateRoute(Translate::tran($keyword, 'en'));
46 return $this; 46 return $this;
47 } 47 }
  48 +
  49 + /**
  50 + * @remark :创建任务
  51 + * @name :createTask
  52 + * @author :lyh
  53 + * @method :post
  54 + * @time :2025/4/29 17:59
  55 + */
  56 + public function createTask($title,$description,$images = [],$anchor = []){
  57 + $request_url = $this->url.'api/video/create';
  58 + $param = ['title'=>$title, 'description'=>$description, 'images'=>json_encode($images,true),'anchor'=>json_encode($anchor,true)];
  59 + $param['mch_id'] = $this->mch_id;
  60 + $this->sign = $this->generateSign($param,$this->key);
  61 + $param['sign'] = $this->sign;
  62 + return http_post($request_url,json_encode($param,true));
  63 + }
  64 +
  65 + /**
  66 + * @remark :计算签名
  67 + * @name :generateSign
  68 + * @author :lyh
  69 + * @method :post
  70 + * @time :2025/2/13 15:07
  71 + */
  72 + public function generateSign($params, $key)
  73 + {
  74 + // 去除数组中所有值为空的项
  75 + array_filter($params);
  76 + // 按照key值的ASCII码从小到大排序
  77 + ksort($params);
  78 + // 生成URL的查询字符串
  79 + $string = http_build_query($params);
  80 + // 生成签名
  81 + $sign = md5($string . $key);
  82 + // 转换成大写
  83 + $sign = strtoupper($sign);
  84 + return $sign;
  85 + }
48 } 86 }