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;
///
/// 图片生成后台任务
///
public class ImageGenerationJob : AsyncBackgroundJob, ITransientDependency
{
private readonly ILogger _logger;
private readonly AiGateWayManager _aiGateWayManager;
private readonly ISqlSugarRepository _imageStoreTaskRepository;
public ImageGenerationJob(
ILogger logger,
AiGateWayManager aiGateWayManager,
ISqlSugarRepository imageStoreTaskRepository)
{
_logger = logger;
_aiGateWayManager = aiGateWayManager;
_imageStoreTaskRepository = imageStoreTaskRepository;
}
public override async Task ExecuteAsync(ImageGenerationJobArgs args)
{
var task = await _imageStoreTaskRepository.GetFirstAsync(x => x.Id == args.TaskId);
if (task is null)
{
throw new UserFriendlyException($"{args.TaskId} 图片生成任务不存在");
}
_logger.LogInformation("开始执行图片生成任务,TaskId: {TaskId}, ModelId: {ModelId}, UserId: {UserId}",
task.Id, task.ModelId, task.UserId);
try
{
// 构建 Gemini API 请求对象
var parts = new List