chengwl 1 неделя назад
Родитель
Сommit
6a414cc483

+ 17 - 7
packages/Longyi/Core/src/Http/Controllers/Admin/FlexibleVariantController.php

@@ -738,19 +738,29 @@ class FlexibleVariantController extends Controller
      *
      * DELETE /variants/{id}/images/{mediaId}
      */
-    public function removeVariantImage(int $id, int $mediaId): JsonResponse
+    public function removeVariantImage(int $mediaId, Request $request): JsonResponse
     {
-        $variant = ProductVariant::findOrFail($id);
+        $this->validate($request, [
+            'variant_ids'   => 'required|array',
+            'variant_ids.*' => 'required|exists:product_variants,id',
+            'media_id'   => 'required|integer|exists:media,id',
+        ]);
 
-        $variant->variantImages()->detach($mediaId);
 
-        $media = Media::find($mediaId);
+        $variants = ProductVariant::findMany($request->input('variant_ids'));
+
+        $variants->each(fn ($variant) => $variant->variantImages()->detach($request->input('media_id')));
+
+        $mediaId = $request->input('media_id');
 
         // Only delete the media record if no other variant still references it
-        if ($media && $variant->variantImages()->where('media_id', $mediaId)->doesntExist()) {
-            $media->delete();
-        }
+        $stillReferenced = \DB::table('product_variant_images')
+            ->where('media_id', $mediaId)
+            ->exists();
 
+        if (!$stillReferenced) {
+            Media::findOrFail($mediaId)->delete();
+        }
         return response()->json([
             'success' => true,
             'message' => 'Image removed successfully',

+ 1 - 1
packages/Longyi/Core/src/Routes/admin-routes.php

@@ -34,7 +34,7 @@ Route::group(['middleware' => ['admin']], function () {
             Route::delete('/{id}', [FlexibleVariantController::class, 'deleteVariant'])->name('admin.flexible_variant.variants.destroy');
             Route::post('/images', [FlexibleVariantController::class, 'syncVariantImages'])->name('admin.flexible_variant.variants.images.sync');
             Route::post('/{id}/images/upload', [FlexibleVariantController::class, 'uploadVariantImage'])->name('admin.flexible_variant.variants.images.upload');
-            Route::delete('/{id}/images/{mediaId}', [FlexibleVariantController::class, 'removeVariantImage'])->name('admin.flexible_variant.variants.images.remove');
+            Route::delete('/images/{mediaId}', [FlexibleVariantController::class, 'removeVariantImage'])->name('admin.flexible_variant.variants.images.remove');
 
             // Bulk operations
             Route::post('/bulk/quantities', [FlexibleVariantController::class, 'bulkUpdateQuantities'])->name('admin.flexible_variant.variants.bulk.quantities');