feat: 完成条件
This commit is contained in:
@@ -1,24 +1,26 @@
|
|||||||
|
using Volo.Abp.Application.Dtos;
|
||||||
using Yi.Framework.AiHub.Domain.Shared.Enums;
|
using Yi.Framework.AiHub.Domain.Shared.Enums;
|
||||||
|
using Yi.Framework.Ddd.Application.Contracts;
|
||||||
|
|
||||||
namespace Yi.Framework.AiHub.Application.Contracts.Dtos.Chat;
|
namespace Yi.Framework.AiHub.Application.Contracts.Dtos.Chat;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 图片任务分页查询输入
|
/// 图片任务分页查询输入
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ImageTaskPageInput
|
public class ImageMyTaskPageInput: PagedAllResultRequestDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 页码(从1开始)
|
/// 提示词
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int PageIndex { get; set; } = 1;
|
public string? Prompt { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 每页数量
|
|
||||||
/// </summary>
|
|
||||||
public int PageSize { get; set; } = 10;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务状态筛选(可选)
|
/// 任务状态筛选(可选)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TaskStatusEnum? TaskStatus { get; set; }
|
public TaskStatusEnum? TaskStatus { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发布状态
|
||||||
|
/// </summary>
|
||||||
|
public PublishStatusEnum? PublishStatus { get; set; }
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using Volo.Abp.Application.Dtos;
|
||||||
|
using Yi.Framework.AiHub.Domain.Shared.Enums;
|
||||||
|
using Yi.Framework.Ddd.Application.Contracts;
|
||||||
|
|
||||||
|
namespace Yi.Framework.AiHub.Application.Contracts.Dtos.Chat;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 图片任务分页查询输入
|
||||||
|
/// </summary>
|
||||||
|
public class ImagePlazaPageInput: PagedAllResultRequestDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 分类
|
||||||
|
/// </summary>
|
||||||
|
public string? Categories { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提示词
|
||||||
|
/// </summary>
|
||||||
|
public string? Prompt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任务状态筛选(可选)
|
||||||
|
/// </summary>
|
||||||
|
public TaskStatusEnum? TaskStatus { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户名
|
||||||
|
/// </summary>
|
||||||
|
public string? UserName{ get; set; }
|
||||||
|
}
|
||||||
@@ -61,4 +61,14 @@ public class ImageTaskOutput
|
|||||||
/// 错误信息
|
/// 错误信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? ErrorInfo { get; set; }
|
public string? ErrorInfo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户名称
|
||||||
|
/// </summary>
|
||||||
|
public string? UserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户名称Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid UserId { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class ImageGenerationJob : AsyncBackgroundJob<ImageGenerationJobArgs>, IT
|
|||||||
// 构建 Gemini API 请求对象
|
// 构建 Gemini API 请求对象
|
||||||
var parts = new List<object>
|
var parts = new List<object>
|
||||||
{
|
{
|
||||||
new { role="user",text = task.Prompt }
|
new { text = task.Prompt }
|
||||||
};
|
};
|
||||||
|
|
||||||
// 添加参考图(如果有)
|
// 添加参考图(如果有)
|
||||||
@@ -64,7 +64,7 @@ public class ImageGenerationJob : AsyncBackgroundJob<ImageGenerationJobArgs>, IT
|
|||||||
{
|
{
|
||||||
contents = new[]
|
contents = new[]
|
||||||
{
|
{
|
||||||
new { parts }
|
new { role = "user", parts }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ public class ImageGenerationJob : AsyncBackgroundJob<ImageGenerationJobArgs>, IT
|
|||||||
task.ModelId,
|
task.ModelId,
|
||||||
request,
|
request,
|
||||||
task.UserId,
|
task.UserId,
|
||||||
tokenId:task.TokenId);
|
tokenId: task.TokenId);
|
||||||
|
|
||||||
|
|
||||||
_logger.LogInformation("图片生成任务完成,TaskId: {TaskId}", args.TaskId);
|
_logger.LogInformation("图片生成任务完成,TaskId: {TaskId}", args.TaskId);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization;
|
|||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using SqlSugar;
|
||||||
using Volo.Abp;
|
using Volo.Abp;
|
||||||
using Volo.Abp.Application.Services;
|
using Volo.Abp.Application.Services;
|
||||||
using Volo.Abp.BackgroundJobs;
|
using Volo.Abp.BackgroundJobs;
|
||||||
@@ -104,6 +105,7 @@ public class AiImageService : ApplicationService
|
|||||||
ReferenceImagesUrl = new List<string>(),
|
ReferenceImagesUrl = new List<string>(),
|
||||||
TaskStatus = TaskStatusEnum.Processing,
|
TaskStatus = TaskStatusEnum.Processing,
|
||||||
UserId = userId,
|
UserId = userId,
|
||||||
|
UserName = CurrentUser.UserName,
|
||||||
TokenId = input.TokenId,
|
TokenId = input.TokenId,
|
||||||
ModelId = input.ModelId
|
ModelId = input.ModelId
|
||||||
};
|
};
|
||||||
@@ -147,7 +149,6 @@ public class AiImageService : ApplicationService
|
|||||||
Categories = task.Categories,
|
Categories = task.Categories,
|
||||||
CreationTime = task.CreationTime,
|
CreationTime = task.CreationTime,
|
||||||
ErrorInfo = task.ErrorInfo,
|
ErrorInfo = task.ErrorInfo,
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,26 +239,23 @@ public class AiImageService : ApplicationService
|
|||||||
/// 分页查询我的任务列表
|
/// 分页查询我的任务列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpGet("ai-image/my-tasks")]
|
[HttpGet("ai-image/my-tasks")]
|
||||||
public async Task<PagedResult<ImageTaskOutput>> GetMyTaskPageAsync([FromQuery] ImageTaskPageInput input)
|
public async Task<PagedResult<ImageTaskOutput>> GetMyTaskPageAsync([FromQuery] ImageMyTaskPageInput input)
|
||||||
{
|
{
|
||||||
var userId = CurrentUser.GetId();
|
var userId = CurrentUser.GetId();
|
||||||
|
|
||||||
var query = _imageTaskRepository._DbQueryable
|
RefAsync<int> total = 0;
|
||||||
|
var output = await _imageTaskRepository._DbQueryable
|
||||||
.Where(x => x.UserId == userId)
|
.Where(x => x.UserId == userId)
|
||||||
.WhereIF(input.TaskStatus.HasValue, x => x.TaskStatus == input.TaskStatus!.Value)
|
.WhereIF(input.TaskStatus is not null, x => x.TaskStatus == input.TaskStatus)
|
||||||
.OrderByDescending(x => x.CreationTime);
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Prompt), x => x.Prompt.Contains(input.Prompt))
|
||||||
|
.WhereIF(input.PublishStatus is not null, x => x.PublishStatus == input.PublishStatus)
|
||||||
var total = await query.CountAsync();
|
.WhereIF(input.StartTime is not null && input.EndTime is not null,
|
||||||
var items = await query
|
x => x.CreationTime >= input.StartTime && x.CreationTime <= input.EndTime)
|
||||||
.Skip((input.PageIndex - 1) * input.PageSize)
|
.OrderByDescending(x => x.CreationTime)
|
||||||
.Take(input.PageSize)
|
|
||||||
.Select(x => new ImageTaskOutput
|
.Select(x => new ImageTaskOutput
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
Prompt = x.Prompt,
|
Prompt = x.Prompt,
|
||||||
// ReferenceImagesBase64 = x.ReferenceImagesBase64,
|
|
||||||
// ReferenceImagesUrl = x.ReferenceImagesUrl,
|
|
||||||
// StoreBase64 = x.StoreBase64,
|
|
||||||
StoreUrl = x.StoreUrl,
|
StoreUrl = x.StoreUrl,
|
||||||
TaskStatus = x.TaskStatus,
|
TaskStatus = x.TaskStatus,
|
||||||
PublishStatus = x.PublishStatus,
|
PublishStatus = x.PublishStatus,
|
||||||
@@ -265,9 +263,10 @@ public class AiImageService : ApplicationService
|
|||||||
CreationTime = x.CreationTime,
|
CreationTime = x.CreationTime,
|
||||||
ErrorInfo = x.ErrorInfo
|
ErrorInfo = x.ErrorInfo
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToPageListAsync(input.SkipCount, input.MaxResultCount, total);
|
||||||
|
|
||||||
return new PagedResult<ImageTaskOutput>(total, items);
|
|
||||||
|
return new PagedResult<ImageTaskOutput>(total, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -275,32 +274,36 @@ public class AiImageService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpGet("ai-image/plaza")]
|
[HttpGet("ai-image/plaza")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<PagedResult<ImageTaskOutput>> GetPlazaPageAsync([FromQuery] ImageTaskPageInput input)
|
public async Task<PagedResult<ImageTaskOutput>> GetPlazaPageAsync([FromQuery] ImagePlazaPageInput input)
|
||||||
{
|
{
|
||||||
var query = _imageTaskRepository._DbQueryable
|
RefAsync<int> total = 0;
|
||||||
|
var output = await _imageTaskRepository._DbQueryable
|
||||||
.Where(x => x.PublishStatus == PublishStatusEnum.Published)
|
.Where(x => x.PublishStatus == PublishStatusEnum.Published)
|
||||||
.Where(x => x.TaskStatus == TaskStatusEnum.Success)
|
.Where(x => x.TaskStatus == TaskStatusEnum.Success)
|
||||||
.OrderByDescending(x => x.CreationTime);
|
.WhereIF(input.TaskStatus is not null, x => x.TaskStatus == input.TaskStatus)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Prompt), x => x.Prompt.Contains(input.Prompt))
|
||||||
var total = await query.CountAsync();
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Categories), x => SqlFunc.JsonLike(x.Categories, input.Categories))
|
||||||
var items = await query
|
.WhereIF(!string.IsNullOrWhiteSpace(input.UserName),x=>x.UserName.Contains(input.UserName) )
|
||||||
.Skip((input.PageIndex - 1) * input.PageSize)
|
.WhereIF(input.StartTime is not null && input.EndTime is not null,
|
||||||
.Take(input.PageSize)
|
x => x.CreationTime >= input.StartTime && x.CreationTime <= input.EndTime)
|
||||||
|
.OrderByDescending(x => x.CreationTime)
|
||||||
.Select(x => new ImageTaskOutput
|
.Select(x => new ImageTaskOutput
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
Prompt = x.Prompt,
|
Prompt = x.Prompt,
|
||||||
// ReferenceImagesPrefixBase64 = x.ReferenceImagesPrefixBase64,
|
|
||||||
// ReferenceImagesUrl = x.ReferenceImagesUrl,
|
|
||||||
StoreUrl = x.StoreUrl,
|
StoreUrl = x.StoreUrl,
|
||||||
TaskStatus = x.TaskStatus,
|
TaskStatus = x.TaskStatus,
|
||||||
PublishStatus = x.PublishStatus,
|
PublishStatus = x.PublishStatus,
|
||||||
Categories = x.Categories,
|
Categories = x.Categories,
|
||||||
CreationTime = x.CreationTime
|
CreationTime = x.CreationTime,
|
||||||
|
UserName = x.UserName,
|
||||||
|
UserId = x.UserId,
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToPageListAsync(input.SkipCount, input.MaxResultCount, total);
|
||||||
|
;
|
||||||
|
|
||||||
return new PagedResult<ImageTaskOutput>(total, items);
|
|
||||||
|
return new PagedResult<ImageTaskOutput>(total, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public class ImageStoreTaskAggregateRoot : FullAuditedAggregateRoot<Guid>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 参考图PrefixBase64(带前缀,如 data:image/png;base64,xxx)
|
/// 参考图PrefixBase64(带前缀,如 data:image/png;base64,xxx)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(IsJson = true,ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
[SugarColumn(IsJson = true, ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||||
public List<string> ReferenceImagesPrefixBase64 { get; set; }
|
public List<string> ReferenceImagesPrefixBase64 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -41,6 +41,11 @@ public class ImageStoreTaskAggregateRoot : FullAuditedAggregateRoot<Guid>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid UserId { get; set; }
|
public Guid UserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户名称
|
||||||
|
/// </summary>
|
||||||
|
public string? UserName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 模型id
|
/// 模型id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user