This commit is contained in:
@@ -783,6 +783,18 @@ func (s *Service) deductAllCommission(ctx context.Context, refundID uint) {
|
||||
return
|
||||
}
|
||||
|
||||
// 先确认订单佣金已计算完成;否则可能与异步佣金计算竞态:
|
||||
// “无已入账记录”会被误判为“无需回扣”并提前置 commission_deducted,随后佣金才入账且不再回溯。
|
||||
var order model.Order
|
||||
if err := s.db.Select("commission_status").First(&order, refund.OrderID).Error; err != nil {
|
||||
logger.Error("佣金回扣:查询订单佣金状态失败", zap.Uint("refund_id", refundID), zap.Uint("order_id", refund.OrderID), zap.Error(err))
|
||||
return
|
||||
}
|
||||
if order.CommissionStatus == model.CommissionStatusPending {
|
||||
logger.Info("佣金回扣:订单佣金尚未计算完成,等待重试", zap.Uint("refund_id", refundID), zap.Uint("order_id", refund.OrderID))
|
||||
return
|
||||
}
|
||||
|
||||
// 查询该订单所有已入账佣金记录
|
||||
var commissions []model.CommissionRecord
|
||||
if err := s.db.Where("order_id = ? AND status = ?", refund.OrderID, constants.CommissionStatusReleased).Find(&commissions).Error; err != nil {
|
||||
|
||||
Reference in New Issue
Block a user