diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/AiUserRoleMenuDto.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/AiUserRoleMenuDto.cs
index fa054cca..e096d523 100644
--- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/AiUserRoleMenuDto.cs
+++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/AiUserRoleMenuDto.cs
@@ -18,19 +18,4 @@ public class AiUserRoleMenuDto:UserRoleMenuDto
/// VIP到期时间
///
public DateTime? VipExpireTime { get; set; }
-
- ///
- /// 尊享包总Token数
- ///
- public long PremiumTotalTokens { get; set; }
-
- ///
- /// 尊享包已使用Token数
- ///
- public long PremiumUsedTokens { get; set; }
-
- ///
- /// 尊享包剩余Token数
- ///
- public long PremiumRemainingTokens { get; set; }
}
\ No newline at end of file
diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/UsageStatistics/PremiumTokenUsageDto.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/UsageStatistics/PremiumTokenUsageDto.cs
new file mode 100644
index 00000000..c0467b0f
--- /dev/null
+++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/UsageStatistics/PremiumTokenUsageDto.cs
@@ -0,0 +1,22 @@
+namespace Yi.Framework.AiHub.Application.Contracts.Dtos.UsageStatistics;
+
+///
+/// 尊享服务Token用量统计DTO
+///
+public class PremiumTokenUsageDto
+{
+ ///
+ /// 总Token数
+ ///
+ public long PremiumTotalTokens { get; set; }
+
+ ///
+ /// 已使用Token数
+ ///
+ public long PremiumUsedTokens { get; set; }
+
+ ///
+ /// 剩余Token数
+ ///
+ public long PremiumRemainingTokens { get; set; }
+}
diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/IServices/IUsageStatisticsService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/IServices/IUsageStatisticsService.cs
index 625b1cd2..add4d348 100644
--- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/IServices/IUsageStatisticsService.cs
+++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/IServices/IUsageStatisticsService.cs
@@ -18,4 +18,10 @@ public interface IUsageStatisticsService
///
/// 模型Token使用量列表
Task> GetModelTokenUsageAsync();
+
+ ///
+ /// 获取当前用户尊享服务Token用量统计
+ ///
+ /// 尊享服务Token用量统计
+ Task GetPremiumTokenUsageAsync();
}
\ No newline at end of file
diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiAccountService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiAccountService.cs
index c1a15efc..30b453ff 100644
--- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiAccountService.cs
+++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiAccountService.cs
@@ -9,7 +9,6 @@ using Yi.Framework.Rbac.Application.Contracts.IServices;
using Yi.Framework.Rbac.Domain.Shared.Dtos;
using Yi.Framework.SqlSugarCore.Abstractions;
using Yi.Framework.AiHub.Domain.Extensions;
-using Yi.Framework.AiHub.Domain.Shared.Consts;
namespace Yi.Framework.AiHub.Application.Services;
@@ -18,18 +17,15 @@ public class AiAccountService : ApplicationService
private IAccountService _accountService;
private ISqlSugarRepository _userRepository;
private ISqlSugarRepository _rechargeRepository;
- private ISqlSugarRepository _premiumPackageRepository;
public AiAccountService(
IAccountService accountService,
ISqlSugarRepository userRepository,
- ISqlSugarRepository rechargeRepository,
- ISqlSugarRepository premiumPackageRepository)
+ ISqlSugarRepository rechargeRepository)
{
_accountService = accountService;
_userRepository = userRepository;
_rechargeRepository = rechargeRepository;
- _premiumPackageRepository = premiumPackageRepository;
}
///
@@ -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;
}
}
\ No newline at end of file
diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/UsageStatisticsService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/UsageStatisticsService.cs
index b96950bf..79287379 100644
--- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/UsageStatisticsService.cs
+++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/UsageStatisticsService.cs
@@ -6,6 +6,7 @@ using Yi.Framework.AiHub.Application.Contracts.Dtos.UsageStatistics;
using Yi.Framework.AiHub.Application.Contracts.IServices;
using Yi.Framework.AiHub.Domain.Entities;
using Yi.Framework.AiHub.Domain.Entities.Chat;
+using Yi.Framework.AiHub.Domain.Extensions;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.AiHub.Application.Services;
@@ -18,13 +19,16 @@ public class UsageStatisticsService : ApplicationService, IUsageStatisticsServic
{
private readonly ISqlSugarRepository _messageRepository;
private readonly ISqlSugarRepository _usageStatisticsRepository;
+ private readonly ISqlSugarRepository _premiumPackageRepository;
public UsageStatisticsService(
ISqlSugarRepository messageRepository,
- ISqlSugarRepository usageStatisticsRepository)
+ ISqlSugarRepository usageStatisticsRepository,
+ ISqlSugarRepository premiumPackageRepository)
{
_messageRepository = messageRepository;
_usageStatisticsRepository = usageStatisticsRepository;
+ _premiumPackageRepository = premiumPackageRepository;
}
///
@@ -102,4 +106,34 @@ public class UsageStatisticsService : ApplicationService, IUsageStatisticsServic
return result;
}
+
+ ///
+ /// 获取当前用户尊享服务Token用量统计
+ ///
+ /// 尊享服务Token用量统计
+ public async Task 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;
+ }
}
\ No newline at end of file