fix
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 24s
Docker Build & Deploy / Deploy to Production (push) Successful in 6s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 3s

This commit is contained in:
SunCheng
2026-01-30 10:41:19 +08:00
parent d9703d31ae
commit 704f58b1a1
46 changed files with 6074 additions and 301 deletions

View File

@@ -31,10 +31,10 @@ public class TransactionPeriodicService(
try
{
logger.LogInformation("开始执行周期性账单检查...");
var pendingBills = await periodicRepository.GetPendingPeriodicBillsAsync();
var billsList = pendingBills.ToList();
logger.LogInformation("找到 {Count} 条需要执行的周期性账单", billsList.Count);
foreach (var bill in billsList)
@@ -61,10 +61,10 @@ public class TransactionPeriodicService(
};
var success = await transactionRepository.AddAsync(transaction);
if (success)
{
logger.LogInformation("成功创建周期性账单交易记录: {Reason}, 金额: {Amount}",
logger.LogInformation("成功创建周期性账单交易记录: {Reason}, 金额: {Amount}",
bill.Reason, bill.Amount);
// 创建未读消息
@@ -80,8 +80,8 @@ public class TransactionPeriodicService(
var now = DateTime.Now;
var nextTime = CalculateNextExecuteTime(bill, now);
await periodicRepository.UpdateExecuteTimeAsync(bill.Id, now, nextTime);
logger.LogInformation("周期性账单 {Id} 下次执行时间: {NextTime}",
logger.LogInformation("周期性账单 {Id} 下次执行时间: {NextTime}",
bill.Id, nextTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? "无");
}
else
@@ -114,7 +114,7 @@ public class TransactionPeriodicService(
}
var today = DateTime.Today;
// 如果从未执行过,需要执行
if (bill.LastExecuteTime == null)
{
@@ -236,7 +236,7 @@ public class TransactionPeriodicService(
return null;
var currentDayOfWeek = (int)baseTime.DayOfWeek;
// 找下一个执行日
var nextDay = executeDays.FirstOrDefault(d => d > currentDayOfWeek);
if (nextDay > 0)
@@ -244,7 +244,7 @@ public class TransactionPeriodicService(
var daysToAdd = nextDay - currentDayOfWeek;
return baseTime.Date.AddDays(daysToAdd);
}
// 下周的第一个执行日
var firstDay = executeDays.First();
var daysUntilNextWeek = 7 - currentDayOfWeek + firstDay;
@@ -293,7 +293,7 @@ public class TransactionPeriodicService(
var currentQuarterStartMonth = ((baseTime.Month - 1) / 3) * 3 + 1;
var nextQuarterStartMonth = currentQuarterStartMonth + 3;
var nextQuarterYear = baseTime.Year;
if (nextQuarterStartMonth > 12)
{
nextQuarterStartMonth = 1;
@@ -318,7 +318,7 @@ public class TransactionPeriodicService(
// 处理闰年情况
var daysInYear = DateTime.IsLeapYear(nextYear) ? 366 : 365;
var actualDay = Math.Min(dayOfYear, daysInYear);
return new DateTime(nextYear, 1, 1).AddDays(actualDay - 1);
}
}