Commit c5229286 authored by 刘小敏's avatar 刘小敏

AI试戴生成视频队列程序优化2

parent f5efc586
...@@ -183,9 +183,9 @@ class AiTryon extends Common ...@@ -183,9 +183,9 @@ class AiTryon extends Common
$user = auth_user(); $user = auth_user();
\think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => 'cgt-20260506113558-x6wtq', 'user' => $user], 'shopro-high'); // \think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => 'cgt-20260506113558-x6wtq', 'user' => $user], 'shopro-high');
$this->success('推送队列成功'); // $this->success('推送队列成功');
exit; // exit;
$userService = new User(); $userService = new User();
$res = $userService->isTry($user->id); $res = $userService->isTry($user->id);
...@@ -193,42 +193,46 @@ class AiTryon extends Common ...@@ -193,42 +193,46 @@ class AiTryon extends Common
if ($res === 0) { if ($res === 0) {
$this->success('今日免费试戴次数已用完', 0); $this->success('今日免费试戴次数已用完', 0);
} else { } else {
// 合成AI视频
$ai = new Ai();
$res = $ai->generateVideo($params, $user->id);
// 我的试戴 // 开发过程中临时代码
$tryonModel = new AiTryOnModel(); $this->success('视频生成中');
$tryonData = [
'user_id' => $user->id,
'goods_id' => $params['goods_id'],
'goods_title' => $params['goods_title'],
'goods_subtitle' => $params['goods_subtitle'],
'goods_image' => $params['jewelry_image'],
'ai_type' => 1,
];
if ($res['code'] === 0) { // // 合成AI视频
// $ai = new Ai();
$tryonData['ai_status'] = 2; // $res = $ai->generateVideo($params, $user->id);
$tryonData['ai_err_msg'] = $res['msg']; //
$tryonModel->save($tryonData); // // 我的试戴
// $tryonModel = new AiTryOnModel();
$this->error($res['msg']); // $tryonData = [
// 'user_id' => $user->id,
} else { // 'goods_id' => $params['goods_id'],
// 'goods_title' => $params['goods_title'],
// 保存一条 我的试戴 // 'goods_subtitle' => $params['goods_subtitle'],
$tryonData['ai_status'] = 0; // 'goods_image' => $params['jewelry_image'],
$tryonData['ai_task_id'] = isset($res['data']) ? $res['data'] : ''; // 'ai_type' => 1,
$tryonModel->save($tryonData); // ];
//
// 推送队列 // if ($res['code'] === 0) {
\think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => $res['data'], 'user' => $user], 'shopro-high'); //
// $tryonData['ai_status'] = 2;
$this->success($res['msg']); // $tryonData['ai_err_msg'] = $res['msg'];
// $tryonModel->save($tryonData);
} //
// $this->error($res['msg']);
//
// } else {
//
// // 保存一条 我的试戴
// $tryonData['ai_status'] = 0;
// $tryonData['ai_task_id'] = isset($res['data']) ? $res['data'] : '';
// $tryonModel->save($tryonData);
//
// // 推送队列
// \think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => $res['data'], 'user' => $user], 'shopro-high');
//
// $this->success($res['msg']);
//
// }
} }
} }
......
...@@ -114,17 +114,17 @@ class AiVideoGen extends BaseJob ...@@ -114,17 +114,17 @@ class AiVideoGen extends BaseJob
$user_id = isset($user['id']) ? $user['id'] : 0; $user_id = isset($user['id']) ? $user['id'] : 0;
if (!isset($taskid) || empty($taskid) || !isset($user_id) || empty($user_id)) { if (!isset($taskid) || empty($taskid) || !isset($user_id) || empty($user_id)) {
debug_echo('入参有空值 taskid:'.$taskid .' user_id:'.$user_id); debug_echo('[AI视频]入参有空值 taskid:'.$taskid .' user_id:'.$user_id);
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
return false; return false;
} }
$url = $this->ark_host . '/api/v3/contents/generations/tasks/' . $taskid; $url = $this->ark_host . '/api/v3/contents/generations/tasks/' . $taskid;
debug_echo('脚本开始执行 AI接口url:'.$url); debug_echo('[AI视频]脚本开始执行 AI接口url:'.$url);
$params = [ $params = [
'headers' => [ 'headers' => [
...@@ -152,68 +152,68 @@ class AiVideoGen extends BaseJob ...@@ -152,68 +152,68 @@ class AiVideoGen extends BaseJob
Log::error('AI生成视频队列返回:taskId: ' . $taskid . 'code '.$code . 'message: ' . $message . ' result:' . $content . PHP_EOL); Log::error('AI生成视频队列返回:taskId: ' . $taskid . 'code '.$code . 'message: ' . $message . ' result:' . $content . PHP_EOL);
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
return false; return false;
} }
// AI接口 返回成功 // AI接口 返回成功
if (isset($result['status'])){ if (isset($result['status'])){
debug_echo('AI接口 返回成功 status有值:'.$result['status']); debug_echo('[AI视频]AI接口 返回成功 status有值:'.$result['status']);
switch ($result['status']) { switch ($result['status']) {
// 成功返回视频链接 // 成功返回视频链接
case 'succeeded': case 'succeeded':
// 保存远程视频到本地 // 保存远程视频到本地
$video_url = $this->saveVideoLoc(isset($result['content']['video_url']) ? $result['content']['video_url'] : ''); $video_url = $this->saveVideoLoc(isset($result['content']['video_url']) ? $result['content']['video_url'] : '');
debug_echo('保存本地接口返回值 video_url:'.$video_url); debug_echo('[AI视频]保存本地接口返回值 video_url:'.$video_url);
if ($video_url === 0){ if ($video_url === 0){
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频保存到本地失败']); AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频保存到本地失败']);
debug_echo('保存本地视频失败sql:'.db()->getLastSql()); debug_echo('[AI视频]保存本地视频失败sql:'.db()->getLastSql());
break; break;
} }
// 更新我的试戴 // 更新我的试戴
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 1,'ai_url' => $video_url, 'ai_err_msg' => '视频生成成功']); AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 1,'ai_url' => $video_url, 'ai_err_msg' => '视频生成成功']);
debug_echo('保存本地视频成功sql:'.db()->getLastSql()); debug_echo('[AI视频]保存本地视频成功sql:'.db()->getLastSql());
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
break; break;
case 'cancelled': case 'cancelled':
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已取消']); AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已取消']);
debug_echo('AI生成视频任务 取消: taskId: ' . $taskid . 'userId '. $user_id ); debug_echo('[AI视频]AI生成视频任务 取消: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 取消: result:'.json_encode($result)); debug_echo('[AI视频]AI生成视频任务 取消: result:'.json_encode($result));
debug_echo('AI生成视频任务 取消: sql:' .db()->getLastSql()); debug_echo('[AI视频]AI生成视频任务 取消: sql:' .db()->getLastSql());
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
break; break;
case 'failed': case 'failed':
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频生成失败']); AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频生成失败']);
debug_echo('AI生成视频任务 失败: taskId: ' . $taskid . 'userId '. $user_id ); debug_echo('[AI视频]AI生成视频任务 失败: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 失败: result:'.json_encode($result)); debug_echo('[AI视频]AI生成视频任务 失败: result:'.json_encode($result));
debug_echo('AI生成视频任务 失败: sql:' .db()->getLastSql()); debug_echo('[AI视频]AI生成视频任务 失败: sql:' .db()->getLastSql());
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
break; break;
case 'expired': case 'expired':
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已过期']); AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已过期']);
debug_echo('AI生成视频任务 过期: taskId: ' . $taskid . 'userId '. $user_id ); debug_echo('[AI视频]AI生成视频任务 过期: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 过期: result:'.json_encode($result)); debug_echo('[AI视频]AI生成视频任务 过期: result:'.json_encode($result));
debug_echo('AI生成视频任务 过期: sql:' .db()->getLastSql()); debug_echo('[AI视频]AI生成视频任务 过期: sql:' .db()->getLastSql());
// 删除队列job // 删除队列job
debug_echo('删除Job'); debug_echo('[AI视频]删除Job');
$job->delete(); $job->delete();
break; break;
...@@ -228,10 +228,10 @@ class AiVideoGen extends BaseJob ...@@ -228,10 +228,10 @@ class AiVideoGen extends BaseJob
} catch (\Exception $e) { } catch (\Exception $e) {
// 队列执行失败 // 队列执行失败
debug_echo('异常:' . $e->getMessage()); debug_echo('[AI视频]异常:' . $e->getMessage());
format_log_error($e, 'AiVideoGen.save.' . isset($user['id']) ?? 'user_id' . isset($video_url) ?? 'video_url'); format_log_error($e, 'AiVideoGen.save.' . isset($user['id']) ?? 'user_id' . isset($video_url) ?? 'video_url');
debug_echo('异常删除视频:'. $video_url); debug_echo('[AI视频]异常删除视频:'. $video_url);
$this->deleteLocalVideo($video_url); // 删除保存到本地的视频,如果已经保存了的话 $this->deleteLocalVideo($video_url); // 删除保存到本地的视频,如果已经保存了的话
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment