feat: 新增VIP充值接口并支持通过角色代码为用户分配角色
This commit is contained in:
@@ -32,19 +32,40 @@ public class AiRechargeManager : DomainService
|
||||
// 获取当前时间
|
||||
var currentTime = DateTime.Now;
|
||||
|
||||
// 查找过期的充值记录
|
||||
var expiredRecharges = await _rechargeRepository._DbQueryable
|
||||
.Where(x => x.ExpireDateTime.HasValue && x.ExpireDateTime.Value < currentTime)
|
||||
// 查找所有充值记录,按用户分组
|
||||
var allRecharges = await _rechargeRepository._DbQueryable
|
||||
.ToListAsync();
|
||||
|
||||
if (!expiredRecharges.Any())
|
||||
if (!allRecharges.Any())
|
||||
{
|
||||
_logger.LogInformation("没有找到任何充值记录");
|
||||
return;
|
||||
}
|
||||
|
||||
// 按用户分组,找出真正过期的用户
|
||||
var expiredUserIds = allRecharges
|
||||
.GroupBy(x => x.UserId)
|
||||
.Where(group =>
|
||||
{
|
||||
// 如果用户有任何一个过期时间为空的记录,说明是永久VIP,不过期
|
||||
if (group.Any(x => !x.ExpireDateTime.HasValue))
|
||||
return false;
|
||||
|
||||
// 找到用户最大的过期时间
|
||||
var maxExpireTime = group.Max(x => x.ExpireDateTime);
|
||||
|
||||
// 如果最大过期时间小于当前时间,说明用户已过期
|
||||
return maxExpireTime.HasValue && maxExpireTime.Value < currentTime;
|
||||
})
|
||||
.Select(group => group.Key)
|
||||
.ToList();
|
||||
|
||||
if (!expiredUserIds.Any())
|
||||
{
|
||||
_logger.LogInformation("没有找到过期的VIP用户");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取过期用户的ID列表
|
||||
var expiredUserIds = expiredRecharges.Select(x => x.UserId).Distinct().ToList();
|
||||
_logger.LogInformation($"找到 {expiredUserIds.Count} 个过期的VIP用户");
|
||||
|
||||
// 获取YiXinAi-Vip角色ID
|
||||
|
||||
Reference in New Issue
Block a user