feat: 完成图片异步生成

This commit is contained in:
ccnetcore
2025-12-26 23:46:36 +08:00
parent a9267bfc0e
commit 047937af4c
9 changed files with 470 additions and 36 deletions

View File

@@ -0,0 +1,61 @@
using System.Text.Json;
using Microsoft.Extensions.Logging;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Yi.Framework.AiHub.Domain.Entities.Chat;
using Yi.Framework.AiHub.Domain.Managers;
using Yi.Framework.AiHub.Domain.Shared.Enums;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.AiHub.Application.Jobs;
/// <summary>
/// 图片生成后台任务
/// </summary>
public class ImageGenerationJob : AsyncBackgroundJob<ImageGenerationJobArgs>, ITransientDependency
{
private readonly ILogger<ImageGenerationJob> _logger;
private readonly AiGateWayManager _aiGateWayManager;
private readonly ISqlSugarRepository<ImageStoreTaskAggregateRoot> _imageStoreTaskRepository;
public ImageGenerationJob(
ILogger<ImageGenerationJob> logger,
AiGateWayManager aiGateWayManager,
ISqlSugarRepository<ImageStoreTaskAggregateRoot> imageStoreTaskRepository)
{
_logger = logger;
_aiGateWayManager = aiGateWayManager;
_imageStoreTaskRepository = imageStoreTaskRepository;
}
public override async Task ExecuteAsync(ImageGenerationJobArgs args)
{
_logger.LogInformation("开始执行图片生成任务TaskId: {TaskId}, ModelId: {ModelId}, UserId: {UserId}",
args.TaskId, args.ModelId, args.UserId);
try
{
var request = JsonSerializer.Deserialize<JsonElement>(args.RequestJson);
await _aiGateWayManager.GeminiGenerateContentImageForStatisticsAsync(
args.TaskId,
args.ModelId,
request,
args.UserId);
_logger.LogInformation("图片生成任务完成TaskId: {TaskId}", args.TaskId);
}
catch (Exception ex)
{
_logger.LogError(ex, "图片生成任务失败TaskId: {TaskId}, Error: {Error}", args.TaskId, ex.Message);
// 更新任务状态为失败
var task = await _imageStoreTaskRepository.GetFirstAsync(x => x.Id == args.TaskId);
if (task != null)
{
task.TaskStatus = TaskStatusEnum.Fail;
await _imageStoreTaskRepository.UpdateAsync(task);
}
}
}
}