fix(log): add traffic reset logging for subscription resets

This commit is contained in:
Chang lue Tsen 2025-08-21 10:31:46 -04:00
parent 7c707f2ecf
commit fcdb9f72ef

View File

@ -8,6 +8,7 @@ import (
"strings"
"time"
"github.com/perfect-panel/server/internal/model/log"
"github.com/perfect-panel/server/internal/model/subscribe"
"github.com/perfect-panel/server/internal/model/user"
"github.com/perfect-panel/server/internal/svc"
@ -252,16 +253,7 @@ func (l *ResetTrafficLogic) resetMonth(ctx context.Context) error {
return err
}
// Clear cache for these subscriptions
for _, sub := range userSubs {
if sub.SubscribeId > 0 {
err = l.svc.UserModel.ClearSubscribeCache(ctx, sub)
if err != nil {
logger.Errorw("[ResetTraffic] Failed to clear cache for subscription",
logger.Field("subscribeId", sub.SubscribeId),
logger.Field("error", err.Error()))
}
}
}
l.clearCache(ctx, userSubs)
logger.Infow("[ResetTraffic] Monthly reset completed", logger.Field("count", len(monthlyResetUsers)))
} else {
logger.Infow("[ResetTraffic] No users found for monthly reset")
@ -344,17 +336,7 @@ func (l *ResetTrafficLogic) reset1st(ctx context.Context, cache resetTrafficCach
}
// Clear cache for these subscriptions
for _, sub := range userSubs {
if sub.SubscribeId > 0 {
err = l.svc.UserModel.ClearSubscribeCache(ctx, sub)
if err != nil {
logger.Errorw("[ResetTraffic] Failed to clear cache for subscription",
logger.Field("subscribeId", sub.SubscribeId),
logger.Field("error", err.Error()))
}
}
}
l.clearCache(ctx, userSubs)
logger.Infow("[ResetTraffic] 1st reset completed", logger.Field("count", len(users1stReset)))
} else {
logger.Infow("[ResetTraffic] No users found for 1st reset")
@ -438,16 +420,7 @@ func (l *ResetTrafficLogic) resetYear(ctx context.Context) error {
return err
}
// Clear cache for these subscriptions
for _, sub := range userSubs {
if sub.SubscribeId > 0 {
err = l.svc.UserModel.ClearSubscribeCache(ctx, sub)
if err != nil {
logger.Errorw("[ResetTraffic] Failed to clear cache for subscription",
logger.Field("subscribeId", sub.SubscribeId),
logger.Field("error", err.Error()))
}
}
}
l.clearCache(ctx, userSubs)
logger.Infow("[ResetTraffic] Yearly reset completed", logger.Field("count", len(usersYearReset)))
} else {
logger.Infow("[ResetTraffic] No users found for yearly reset")
@ -601,3 +574,38 @@ func (l *ResetTrafficLogic) isRetryableError(err error) bool {
logger.Field("error", err.Error()))
return true
}
// clearCache clears the reset traffic cache
func (l *ResetTrafficLogic) clearCache(ctx context.Context, list []*user.Subscribe) {
if len(list) != 0 {
for _, sub := range list {
if sub.SubscribeId > 0 {
err := l.svc.UserModel.ClearSubscribeCache(ctx, sub)
if err != nil {
logger.Errorw("[ResetTraffic] Failed to clear cache for subscription",
logger.Field("subscribeId", sub.SubscribeId),
logger.Field("error", err.Error()))
}
}
// Insert traffic reset log
l.insertLog(ctx, sub.Id)
}
}
}
// insertLog inserts a reset traffic log entry
func (l *ResetTrafficLogic) insertLog(ctx context.Context, subId int64) {
trafficLog := log.ResetSubscribe{
Type: log.ResetSubscribeTypeAuto,
ResetAt: time.Now().UnixMilli(),
}
content, _ := trafficLog.Marshal()
if err := l.svc.DB.Model(&log.SystemLog{}).Create(&log.SystemLog{
Type: log.TypeResetSubscribe.Uint8(),
ObjectID: subId,
Date: time.Now().Format(time.DateOnly),
Content: string(content),
}).Error; err != nil {
logger.Errorw("[ResetTraffic] Failed to create system log for subscription", logger.Field("error", err.Error()))
}
}