refactor: 将尊享包Token统计逻辑从AiAccountService迁移至UsageStatisticsService,并移除AiUserRoleMenuDto相关字段
This commit is contained in:
@@ -18,19 +18,4 @@ public class AiUserRoleMenuDto:UserRoleMenuDto
|
|||||||
/// VIP到期时间
|
/// VIP到期时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? VipExpireTime { get; set; }
|
public DateTime? VipExpireTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 尊享包总Token数
|
|
||||||
/// </summary>
|
|
||||||
public long PremiumTotalTokens { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 尊享包已使用Token数
|
|
||||||
/// </summary>
|
|
||||||
public long PremiumUsedTokens { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 尊享包剩余Token数
|
|
||||||
/// </summary>
|
|
||||||
public long PremiumRemainingTokens { get; set; }
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
namespace Yi.Framework.AiHub.Application.Contracts.Dtos.UsageStatistics;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 尊享服务Token用量统计DTO
|
||||||
|
/// </summary>
|
||||||
|
public class PremiumTokenUsageDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 总Token数
|
||||||
|
/// </summary>
|
||||||
|
public long PremiumTotalTokens { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已使用Token数
|
||||||
|
/// </summary>
|
||||||
|
public long PremiumUsedTokens { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 剩余Token数
|
||||||
|
/// </summary>
|
||||||
|
public long PremiumRemainingTokens { get; set; }
|
||||||
|
}
|
||||||
@@ -18,4 +18,10 @@ public interface IUsageStatisticsService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>模型Token使用量列表</returns>
|
/// <returns>模型Token使用量列表</returns>
|
||||||
Task<List<ModelTokenUsageDto>> GetModelTokenUsageAsync();
|
Task<List<ModelTokenUsageDto>> GetModelTokenUsageAsync();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取当前用户尊享服务Token用量统计
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>尊享服务Token用量统计</returns>
|
||||||
|
Task<PremiumTokenUsageDto> GetPremiumTokenUsageAsync();
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,6 @@ using Yi.Framework.Rbac.Application.Contracts.IServices;
|
|||||||
using Yi.Framework.Rbac.Domain.Shared.Dtos;
|
using Yi.Framework.Rbac.Domain.Shared.Dtos;
|
||||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
using Yi.Framework.SqlSugarCore.Abstractions;
|
||||||
using Yi.Framework.AiHub.Domain.Extensions;
|
using Yi.Framework.AiHub.Domain.Extensions;
|
||||||
using Yi.Framework.AiHub.Domain.Shared.Consts;
|
|
||||||
|
|
||||||
namespace Yi.Framework.AiHub.Application.Services;
|
namespace Yi.Framework.AiHub.Application.Services;
|
||||||
|
|
||||||
@@ -18,18 +17,15 @@ public class AiAccountService : ApplicationService
|
|||||||
private IAccountService _accountService;
|
private IAccountService _accountService;
|
||||||
private ISqlSugarRepository<AiUserExtraInfoEntity> _userRepository;
|
private ISqlSugarRepository<AiUserExtraInfoEntity> _userRepository;
|
||||||
private ISqlSugarRepository<AiRechargeAggregateRoot> _rechargeRepository;
|
private ISqlSugarRepository<AiRechargeAggregateRoot> _rechargeRepository;
|
||||||
private ISqlSugarRepository<PremiumPackageAggregateRoot> _premiumPackageRepository;
|
|
||||||
|
|
||||||
public AiAccountService(
|
public AiAccountService(
|
||||||
IAccountService accountService,
|
IAccountService accountService,
|
||||||
ISqlSugarRepository<AiUserExtraInfoEntity> userRepository,
|
ISqlSugarRepository<AiUserExtraInfoEntity> userRepository,
|
||||||
ISqlSugarRepository<AiRechargeAggregateRoot> rechargeRepository,
|
ISqlSugarRepository<AiRechargeAggregateRoot> rechargeRepository)
|
||||||
ISqlSugarRepository<PremiumPackageAggregateRoot> premiumPackageRepository)
|
|
||||||
{
|
{
|
||||||
_accountService = accountService;
|
_accountService = accountService;
|
||||||
_userRepository = userRepository;
|
_userRepository = userRepository;
|
||||||
_rechargeRepository = rechargeRepository;
|
_rechargeRepository = rechargeRepository;
|
||||||
_premiumPackageRepository = premiumPackageRepository;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -74,23 +70,6 @@ public class AiAccountService : ApplicationService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取尊享包Token信息
|
|
||||||
var premiumPackages = await _premiumPackageRepository._DbQueryable
|
|
||||||
.Where(x => x.UserId == userId && x.IsActive)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
if (premiumPackages.Any())
|
|
||||||
{
|
|
||||||
// 过滤掉已过期的包
|
|
||||||
var validPackages = premiumPackages
|
|
||||||
.Where(p => p.IsAvailable())
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
output.PremiumTotalTokens = validPackages.Sum(x => x.TotalTokens);
|
|
||||||
output.PremiumUsedTokens = validPackages.Sum(x => x.UsedTokens);
|
|
||||||
output.PremiumRemainingTokens = validPackages.Sum(x => x.RemainingTokens);
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,7 @@ using Yi.Framework.AiHub.Application.Contracts.Dtos.UsageStatistics;
|
|||||||
using Yi.Framework.AiHub.Application.Contracts.IServices;
|
using Yi.Framework.AiHub.Application.Contracts.IServices;
|
||||||
using Yi.Framework.AiHub.Domain.Entities;
|
using Yi.Framework.AiHub.Domain.Entities;
|
||||||
using Yi.Framework.AiHub.Domain.Entities.Chat;
|
using Yi.Framework.AiHub.Domain.Entities.Chat;
|
||||||
|
using Yi.Framework.AiHub.Domain.Extensions;
|
||||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
using Yi.Framework.SqlSugarCore.Abstractions;
|
||||||
|
|
||||||
namespace Yi.Framework.AiHub.Application.Services;
|
namespace Yi.Framework.AiHub.Application.Services;
|
||||||
@@ -18,13 +19,16 @@ public class UsageStatisticsService : ApplicationService, IUsageStatisticsServic
|
|||||||
{
|
{
|
||||||
private readonly ISqlSugarRepository<MessageAggregateRoot> _messageRepository;
|
private readonly ISqlSugarRepository<MessageAggregateRoot> _messageRepository;
|
||||||
private readonly ISqlSugarRepository<UsageStatisticsAggregateRoot> _usageStatisticsRepository;
|
private readonly ISqlSugarRepository<UsageStatisticsAggregateRoot> _usageStatisticsRepository;
|
||||||
|
private readonly ISqlSugarRepository<PremiumPackageAggregateRoot> _premiumPackageRepository;
|
||||||
|
|
||||||
public UsageStatisticsService(
|
public UsageStatisticsService(
|
||||||
ISqlSugarRepository<MessageAggregateRoot> messageRepository,
|
ISqlSugarRepository<MessageAggregateRoot> messageRepository,
|
||||||
ISqlSugarRepository<UsageStatisticsAggregateRoot> usageStatisticsRepository)
|
ISqlSugarRepository<UsageStatisticsAggregateRoot> usageStatisticsRepository,
|
||||||
|
ISqlSugarRepository<PremiumPackageAggregateRoot> premiumPackageRepository)
|
||||||
{
|
{
|
||||||
_messageRepository = messageRepository;
|
_messageRepository = messageRepository;
|
||||||
_usageStatisticsRepository = usageStatisticsRepository;
|
_usageStatisticsRepository = usageStatisticsRepository;
|
||||||
|
_premiumPackageRepository = premiumPackageRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -102,4 +106,34 @@ public class UsageStatisticsService : ApplicationService, IUsageStatisticsServic
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取当前用户尊享服务Token用量统计
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>尊享服务Token用量统计</returns>
|
||||||
|
public async Task<PremiumTokenUsageDto> GetPremiumTokenUsageAsync()
|
||||||
|
{
|
||||||
|
var userId = CurrentUser.GetId();
|
||||||
|
|
||||||
|
// 获取尊享包Token信息
|
||||||
|
var premiumPackages = await _premiumPackageRepository._DbQueryable
|
||||||
|
.Where(x => x.UserId == userId && x.IsActive)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var result = new PremiumTokenUsageDto();
|
||||||
|
|
||||||
|
if (premiumPackages.Any())
|
||||||
|
{
|
||||||
|
// 过滤掉已过期的包
|
||||||
|
var validPackages = premiumPackages
|
||||||
|
.Where(p => p.IsAvailable())
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
result.PremiumTotalTokens = validPackages.Sum(x => x.TotalTokens);
|
||||||
|
result.PremiumUsedTokens = validPackages.Sum(x => x.UsedTokens);
|
||||||
|
result.PremiumRemainingTokens = validPackages.Sum(x => x.RemainingTokens);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user