88 lines
2.8 KiB
C#
88 lines
2.8 KiB
C#
using Microsoft.AspNetCore.Http;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Volo.Abp.Application.Services;
|
||
using Volo.Abp.Users;
|
||
using Yi.Framework.AiHub.Application.Contracts.Dtos.FileMaster;
|
||
using Yi.Framework.AiHub.Domain.Managers;
|
||
using Yi.Framework.AiHub.Domain.Shared.Dtos.OpenAi;
|
||
|
||
namespace Yi.Framework.AiHub.Application.Services.FileMaster;
|
||
|
||
public class FileMasterService : ApplicationService
|
||
{
|
||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||
private readonly AiGateWayManager _aiGateWayManager;
|
||
private readonly AiBlacklistManager _aiBlacklistManager;
|
||
|
||
public FileMasterService(IHttpContextAccessor httpContextAccessor, AiGateWayManager aiGateWayManager,
|
||
AiBlacklistManager aiBlacklistManager)
|
||
{
|
||
_httpContextAccessor = httpContextAccessor;
|
||
_aiGateWayManager = aiGateWayManager;
|
||
_aiBlacklistManager = aiBlacklistManager;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 校验下一步
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("FileMaster/VerifyNext")]
|
||
public Task<string> VerifyNextAsync(VerifyNextInput input)
|
||
{
|
||
if (!CurrentUser.IsAuthenticated)
|
||
{
|
||
if (input.DirectoryCount + input.FileCount >= 20)
|
||
{
|
||
throw new UserFriendlyException("未登录用户,文件夹与文件数量不能大于20个,请登录后解锁全部功能");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (input.DirectoryCount + input.FileCount >= 100)
|
||
{
|
||
throw new UserFriendlyException("为防止无限制暴力使用,当前文件整理大师Vip最多支持200文件与文件夹数量");
|
||
}
|
||
}
|
||
|
||
return Task.FromResult("success");
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 对话
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <param name="cancellationToken"></param>
|
||
[HttpPost("FileMaster/chat/completions")]
|
||
public async Task ChatCompletionsAsync([FromBody] ThorChatCompletionsRequest input,
|
||
CancellationToken cancellationToken)
|
||
{
|
||
if (CurrentUser.IsAuthenticated)
|
||
{
|
||
input.Model = "gpt-5-chat";
|
||
}
|
||
else
|
||
{
|
||
input.Model = "gpt-5-chat";
|
||
}
|
||
|
||
Guid? userId = CurrentUser.IsAuthenticated ? CurrentUser.GetId() : null;
|
||
if (userId is not null)
|
||
{
|
||
await _aiBlacklistManager.VerifiyAiBlacklist(userId.Value);
|
||
}
|
||
|
||
//ai网关代理httpcontext
|
||
if (input.Stream == true)
|
||
{
|
||
await _aiGateWayManager.CompleteChatStreamForStatisticsAsync(_httpContextAccessor.HttpContext, input,
|
||
userId, null, cancellationToken);
|
||
}
|
||
else
|
||
{
|
||
await _aiGateWayManager.CompleteChatForStatisticsAsync(_httpContextAccessor.HttpContext, input, userId,
|
||
null,
|
||
cancellationToken);
|
||
}
|
||
}
|
||
} |