feat: 完成图片生成功能

This commit is contained in:
ccnetcore
2026-01-02 19:26:09 +08:00
parent 3f53eb14ab
commit 560a76558a
14 changed files with 251 additions and 134 deletions

View File

@@ -31,14 +31,14 @@ public class AiImageService : ApplicationService
private readonly PremiumPackageManager _premiumPackageManager;
private readonly IGuidGenerator _guidGenerator;
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly TokenManager _tokenManager;
public AiImageService(
ISqlSugarRepository<ImageStoreTaskAggregateRoot> imageTaskRepository,
IBackgroundJobManager backgroundJobManager,
AiBlacklistManager aiBlacklistManager,
PremiumPackageManager premiumPackageManager,
IGuidGenerator guidGenerator,
IWebHostEnvironment webHostEnvironment)
IWebHostEnvironment webHostEnvironment, TokenManager tokenManager)
{
_imageTaskRepository = imageTaskRepository;
_backgroundJobManager = backgroundJobManager;
@@ -46,6 +46,7 @@ public class AiImageService : ApplicationService
_premiumPackageManager = premiumPackageManager;
_guidGenerator = guidGenerator;
_webHostEnvironment = webHostEnvironment;
_tokenManager = tokenManager;
}
/// <summary>
@@ -58,10 +59,17 @@ public class AiImageService : ApplicationService
public async Task<Guid> GenerateAsync([FromBody] ImageGenerationInput input)
{
var userId = CurrentUser.GetId();
// 黑名单校验
await _aiBlacklistManager.VerifiyAiBlacklist(userId);
//校验token
if (input.TokenId is not null)
{
await _tokenManager.ValidateTokenAsync(input.TokenId, input.ModelId);
}
// VIP校验
if (!CurrentUser.IsAiVip())
{
@@ -82,32 +90,21 @@ public class AiImageService : ApplicationService
var task = new ImageStoreTaskAggregateRoot
{
Prompt = input.Prompt,
ReferenceImagesBase64 = input.ReferenceImagesBase64 ?? new List<string>(),
ReferenceImagesPrefixBase64 = input.ReferenceImagesPrefixBase64 ?? new List<string>(),
ReferenceImagesUrl = new List<string>(),
TaskStatus = TaskStatusEnum.Processing,
UserId = userId
UserId = userId,
TokenId = input.TokenId
};
await _imageTaskRepository.InsertAsync(task);
var taskId = task.Id;
// 构建请求JSON
var requestJson = JsonSerializer.Serialize(new
{
prompt = input.Prompt,
referenceImages = input.ReferenceImagesBase64
});
// 入队后台任务
await _backgroundJobManager.EnqueueAsync(new ImageGenerationJobArgs
{
TaskId = taskId,
ModelId = input.ModelId,
RequestJson = requestJson,
UserId = userId
TaskId = task.Id,
});
return taskId;
return task.Id;
}
/// <summary>
@@ -130,9 +127,9 @@ public class AiImageService : ApplicationService
{
Id = task.Id,
Prompt = task.Prompt,
ReferenceImagesBase64 = task.ReferenceImagesBase64,
ReferenceImagesUrl = task.ReferenceImagesUrl,
StoreBase64 = task.StoreBase64,
// ReferenceImagesBase64 = task.ReferenceImagesBase64,
// ReferenceImagesUrl = task.ReferenceImagesUrl,
// StoreBase64 = task.StoreBase64,
StoreUrl = task.StoreUrl,
TaskStatus = task.TaskStatus,
CreationTime = task.CreationTime
@@ -234,9 +231,9 @@ public class AiImageService : ApplicationService
{
Id = x.Id,
Prompt = x.Prompt,
ReferenceImagesBase64 = x.ReferenceImagesBase64,
ReferenceImagesUrl = x.ReferenceImagesUrl,
StoreBase64 = x.StoreBase64,
// ReferenceImagesBase64 = x.ReferenceImagesBase64,
// ReferenceImagesUrl = x.ReferenceImagesUrl,
// StoreBase64 = x.StoreBase64,
StoreUrl = x.StoreUrl,
TaskStatus = x.TaskStatus,
CreationTime = x.CreationTime