修复退款bug
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m43s

This commit is contained in:
2026-04-23 11:30:46 +08:00
parent 1f1f31a7cb
commit 8d2e8faa84
7 changed files with 128 additions and 534 deletions

View File

@@ -423,7 +423,7 @@ func (s *Service) deductSingleCommission(ctx context.Context, refund *model.Refu
}
// handleAssetReset 异步处理资产重置
// 包括:套餐失效、停机、世代重置generation+1、钱包重建、订单状态更新
// 包括:退款套餐精准失效、停机、世代重置generation+1、钱包重建、订单状态更新
// 失败仅记录日志,不影响审批结果
func (s *Service) handleAssetReset(ctx context.Context, refundID uint) {
logger := s.logger
@@ -465,10 +465,19 @@ func (s *Service) handleAssetReset(ctx context.Context, refundID uint) {
return
}
// 1. 失效所有套餐
// 1. 按退款单精准失效套餐(仅处理本次退款订单关联套餐
if s.packageActivationService != nil {
if err := s.packageActivationService.InvalidateAllPackagesByAsset(ctx, assetType, assetID); err != nil {
logger.Error("资产重置:失效套餐失败", zap.String("asset_type", assetType), zap.Uint("asset_id", assetID), zap.Error(err))
if err := s.packageActivationService.InvalidatePackagesForRefund(ctx, assetType, assetID, order.ID, refund.PackageUsageID); err != nil {
fields := []zap.Field{
zap.String("asset_type", assetType),
zap.Uint("asset_id", assetID),
zap.Uint("order_id", order.ID),
zap.Error(err),
}
if refund.PackageUsageID != nil {
fields = append(fields, zap.Uint("package_usage_id", *refund.PackageUsageID))
}
logger.Error("资产重置:退款套餐精准失效失败", fields...)
}
}