|
@@ -2,6 +2,7 @@
|
|
|
namespace app\job;
|
|
namespace app\job;
|
|
|
use app\api\controller\Common;
|
|
use app\api\controller\Common;
|
|
|
use app\service\AIGatewayService;
|
|
use app\service\AIGatewayService;
|
|
|
|
|
+use app\service\ImageService;
|
|
|
use think\Db;
|
|
use think\Db;
|
|
|
use think\queue\Job;
|
|
use think\queue\Job;
|
|
|
use think\Queue;
|
|
use think\Queue;
|
|
@@ -17,14 +18,20 @@ class ImageToImageJob{
|
|
|
$existing = $redis->get("img_to_img_task:{$taskId}");
|
|
$existing = $redis->get("img_to_img_task:{$taskId}");
|
|
|
if ($existing) {
|
|
if ($existing) {
|
|
|
$info = json_decode($existing, true);
|
|
$info = json_decode($existing, true);
|
|
|
- if (isset($info['status']) && $info['status'] === 'completed') {
|
|
|
|
|
|
|
+ if (isset($info['status']) && ImageService::isTaskCompleted($info['status'])) {
|
|
|
echo "任务 {$taskId} 已完成,跳过重复执行\n";
|
|
echo "任务 {$taskId} 已完成,跳过重复执行\n";
|
|
|
$job->delete();
|
|
$job->delete();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
try {
|
|
try {
|
|
|
- echo " 开始处理图生图".date('Y-m-d H:i:s')."\n";
|
|
|
|
|
|
|
+ // 标记处理中(前端轮询可见)
|
|
|
|
|
+ $redis->set("img_to_img_task:{$taskId}", json_encode([
|
|
|
|
|
+ 'status' => ImageService::TASK_STATUS_PROCESSING,
|
|
|
|
|
+ 'started_at' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ ], JSON_UNESCAPED_UNICODE), ['EX' => 300]);
|
|
|
|
|
+
|
|
|
|
|
+ \think\Log::info("[ImageToImageJob] start task_id={$taskId} status_type=" . ($data['status_type'] ?? ''));
|
|
|
|
|
|
|
|
$result = $this->get_img_to_img($data);
|
|
$result = $this->get_img_to_img($data);
|
|
|
// get_img_to_img 内部已写入 img_to_img_task,此处无需重复写入
|
|
// get_img_to_img 内部已写入 img_to_img_task,此处无需重复写入
|
|
@@ -37,9 +44,9 @@ class ImageToImageJob{
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
echo "图生图失败: " . $e->getMessage() . "\n";
|
|
echo "图生图失败: " . $e->getMessage() . "\n";
|
|
|
|
|
+ \think\Log::error('[ImageToImageJob] ' . $e->getMessage());
|
|
|
$job->delete();
|
|
$job->delete();
|
|
|
}
|
|
}
|
|
|
- $job->delete();
|
|
|
|
|
} else {
|
|
} else {
|
|
|
$logId = $data['log_id'] ?? null;
|
|
$logId = $data['log_id'] ?? null;
|
|
|
try {
|
|
try {
|
|
@@ -192,7 +199,7 @@ class ImageToImageJob{
|
|
|
$height = trim((string)($data['height'] ?? ''));
|
|
$height = trim((string)($data['height'] ?? ''));
|
|
|
$width = trim((string)($data['width'] ?? ''));
|
|
$width = trim((string)($data['width'] ?? ''));
|
|
|
$model = trim($data['model'] ?? '');
|
|
$model = trim($data['model'] ?? '');
|
|
|
- $sysId = (int)($data['sys_id'] ?? 0);
|
|
|
|
|
|
|
+ $sysId = $data['sys_id'];
|
|
|
$now = date('Y-m-d H:i:s');
|
|
$now = date('Y-m-d H:i:s');
|
|
|
|
|
|
|
|
// texttoimage:前端传 old_img(base64/路径),size 为空时用 width x height
|
|
// texttoimage:前端传 old_img(base64/路径),size 为空时用 width x height
|
|
@@ -211,7 +218,7 @@ class ImageToImageJob{
|
|
|
try {
|
|
try {
|
|
|
$redis = getTaskRedis();
|
|
$redis = getTaskRedis();
|
|
|
$redis->set("img_to_img_task:" . $data['task_id'], json_encode([
|
|
$redis->set("img_to_img_task:" . $data['task_id'], json_encode([
|
|
|
- 'status' => 'failed',
|
|
|
|
|
|
|
+ 'status' => ImageService::TASK_STATUS_FAILED,
|
|
|
'msg' => $msg,
|
|
'msg' => $msg,
|
|
|
'error' => $msg,
|
|
'error' => $msg,
|
|
|
'completed_at' => date('Y-m-d H:i:s')
|
|
'completed_at' => date('Y-m-d H:i:s')
|
|
@@ -229,7 +236,7 @@ class ImageToImageJob{
|
|
|
try {
|
|
try {
|
|
|
$redis = getTaskRedis();
|
|
$redis = getTaskRedis();
|
|
|
$redis->set("img_to_img_task:" . $data['task_id'], json_encode([
|
|
$redis->set("img_to_img_task:" . $data['task_id'], json_encode([
|
|
|
- 'status' => 'completed',
|
|
|
|
|
|
|
+ 'status' => ImageService::TASK_STATUS_COMPLETED,
|
|
|
'image' => $imgPath,
|
|
'image' => $imgPath,
|
|
|
'image_url' => $imgPath,
|
|
'image_url' => $imgPath,
|
|
|
'completed_at' => date('Y-m-d H:i:s')
|
|
'completed_at' => date('Y-m-d H:i:s')
|