feat: 激活码与VIP充值支持按天计费
- 新增 VIP 天数概念,支持月数与天数组合计算过期时间 - 激活码商品新增 VipDays 配置,并新增 1 天会员试用组合包 - VIP 充值统一按天数计算(1 个月 = 31 天),兼容原有逻辑 - 激活码兑换时支持仅天数或天月组合的 VIP 充值
This commit is contained in:
@@ -92,7 +92,7 @@ public class ActivationCodeService : ApplicationService, IActivationCodeService
|
||||
isCreateRechargeRecord: !goods.IsCombo);
|
||||
}
|
||||
|
||||
if (goods.VipMonths > 0)
|
||||
if (goods.VipMonths > 0 || goods.VipDays > 0)
|
||||
{
|
||||
await _rechargeService.RechargeVipAsync(new RechargeCreateInput
|
||||
{
|
||||
@@ -100,6 +100,7 @@ public class ActivationCodeService : ApplicationService, IActivationCodeService
|
||||
RechargeAmount = totalAmount,
|
||||
Content = packageName,
|
||||
Months = goods.VipMonths,
|
||||
Days = goods.VipDays,
|
||||
Remark = "激活码兑换",
|
||||
ContactInfo = null
|
||||
});
|
||||
|
||||
@@ -55,13 +55,24 @@ namespace Yi.Framework.AiHub.Application.Services
|
||||
/// </summary>
|
||||
/// <param name="input">充值输入参数</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("recharge/vip")]
|
||||
[RemoteService(isEnabled:false)]
|
||||
public async Task RechargeVipAsync(RechargeCreateInput input)
|
||||
{
|
||||
DateTime? expireDateTime = null;
|
||||
|
||||
// 如果传入了月数,计算过期时间
|
||||
// 计算总天数(1个月 = 31天)
|
||||
int totalDays = 0;
|
||||
if (input.Months.HasValue && input.Months.Value > 0)
|
||||
{
|
||||
totalDays += input.Months.Value * 31;
|
||||
}
|
||||
if (input.Days.HasValue && input.Days.Value > 0)
|
||||
{
|
||||
totalDays += input.Days.Value;
|
||||
}
|
||||
|
||||
// 如果有天数,计算过期时间
|
||||
if (totalDays > 0)
|
||||
{
|
||||
// 直接查询该用户最大的过期时间
|
||||
var maxExpireTime = await _repository._DbQueryable
|
||||
@@ -75,9 +86,9 @@ namespace Yi.Framework.AiHub.Application.Services
|
||||
? maxExpireTime.Value
|
||||
: DateTime.Now;
|
||||
// 计算新的过期时间
|
||||
expireDateTime = baseDateTime.AddMonths(input.Months.Value);
|
||||
expireDateTime = baseDateTime.AddDays(totalDays);
|
||||
}
|
||||
// 如果月数为空或0,表示永久VIP,ExpireDateTime保持为null
|
||||
// 如果总天数为0,表示永久VIP,ExpireDateTime保持为null
|
||||
|
||||
// 创建充值记录
|
||||
var rechargeRecord = new AiRechargeAggregateRoot
|
||||
|
||||
Reference in New Issue
Block a user