diff --git a/internal/service/asset/service.go b/internal/service/asset/service.go index 4ee02d73..81e0e532 100644 --- a/internal/service/asset/service.go +++ b/internal/service/asset/service.go @@ -1499,7 +1499,7 @@ func (s *Service) SetPollingRestorer(restorer PollingRestorer, evaluator AssetRe s.pollingRestorer, s.resumeEvaluator, s.logger = restorer, evaluator, logger } -// restorePollingAfterExpiryChange 改有效期保存后,资产有生效中主套餐时恢复关闭轮询的卡或设备(来源"改有效期"),再按规则评估复机。 +// restorePollingAfterExpiryChange 改有效期保存后,资产有未到期的生效中主套餐时恢复(把有效期改到过去不恢复)关闭轮询的卡或设备(来源"改有效期"),再按规则评估复机。 func (s *Service) restorePollingAfterExpiryChange(ctx context.Context, assetType string, assetID uint) { if s.pollingRestorer == nil || assetID == 0 { return @@ -1514,7 +1514,7 @@ func (s *Service) restorePollingAfterExpiryChange(ctx context.Context, assetType } var active int64 if err := s.db.WithContext(ctx).Model(&model.PackageUsage{}). - Where(column+" = ? AND status = ? AND master_usage_id IS NULL", assetID, constants.PackageUsageStatusActive). + Where(column+" = ? AND status = ? AND master_usage_id IS NULL AND (expires_at IS NULL OR expires_at > ?)", assetID, constants.PackageUsageStatusActive, time.Now()). Count(&active).Error; err != nil || active == 0 { return }