package order import "backend/internal/model" // BatchDeleteResult 批量删除结果 // Logan.Li type BatchDeleteResult struct { Deleted int `json:"deleted"` Skipped int `json:"skipped"` Failed int `json:"failed"` SkippedIDs []uint `json:"skipped_ids,omitempty"` } // BatchDelete 批量删除订单:已支付(paid)为财务凭证默认跳过,其余状态可删 // Logan.Li func (s *OrderService) BatchDelete(ids []uint) (*BatchDeleteResult, error) { result := &BatchDeleteResult{} seen := map[uint]struct{}{} for _, id := range ids { if id == 0 { continue } if _, ok := seen[id]; ok { continue } seen[id] = struct{}{} var order model.Order if err := s.db.First(&order, id).Error; err != nil { result.Failed++ continue } if order.Status == "paid" { result.Skipped++ result.SkippedIDs = append(result.SkippedIDs, id) continue } if err := s.db.Delete(&model.Order{}, id).Error; err != nil { result.Failed++ continue } result.Deleted++ } return result, nil }