ajun 4 роки тому
батько
коміт
7ee80aa7d7

+ 26 - 11
app/Services/OrderPackageCommoditiesService.php

@@ -697,20 +697,35 @@ class OrderPackageCommoditiesService
         $orderTrackingService = app('OrderTrackingService');
         if(!$orderCommodities)return;
         if(count($orderCommodities)==0)return;
-        try {
-            $ids = data_get($orderCommodities, '*.id');
-            if(count($ids) >0){
-                $bool = OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
-                $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',$ids)->get();
-                $orderTrackingService->deleteOrderTracings($orderTrackings);
-                LogService::log(__METHOD__, __FUNCTION__, '批量删除 OrderCommodity '  . ($bool > 0 ? 'SUCCESS' : 'FAULT') .'||' .count($orderCommodities)  . ' || ' . json_encode($orderCommodities));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__.' error', '批量删除 OrderCommodity Error' . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
-        }
+        $ids = data_get($orderCommodities, '*.id');
+        $this->deleteIds($ids);
+//        try {
+//            $ids = data_get($orderCommodities, '*.id');
+//            if(count($ids) >0){
+//
+//                $bool = OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
+//                $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',$ids)->get();
+//                $orderTrackingService->deleteOrderTracings($orderTrackings);
+//                LogService::log(__METHOD__, __FUNCTION__, '批量删除 OrderCommodity '  . ($bool > 0 ? 'SUCCESS' : 'FAULT') .'||' .count($orderCommodities)  . ' || ' . json_encode($orderCommodities));
+//            }
+//        } catch (\Exception $e) {
+//            LogService::log(__METHOD__, __FUNCTION__.' error', '批量删除 OrderCommodity Error' . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
+//        }
         unset($orderCommodities);
     }
 
+    public function deleteIds($ids)
+    {
+        /** @var OrderTrackingService $orderTrackingService */
+        $orderTrackingService = app('OrderTrackingService');
+        $deleteIds = array_chunk($ids,150);
+        foreach ($deleteIds as $delete_id) {
+            OrderPackageCommodities::query()->whereIn('id', $delete_id)->delete();
+            $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',$delete_id)->get();
+            $orderTrackingService->deleteOrderTracings($orderTrackings);
+        }
+     }
+
     public function getCommodities($orderNo)
     {
         $orderQuery = Order::query()->where('id')->where('code',$orderNo);

+ 18 - 7
app/Services/OrderPackageService.php

@@ -290,13 +290,24 @@ class OrderPackageService
 
         /** 删除 OrderPackage 和 OrderPackageCommodities*/
         if (count($packages) == 0) return;
-        try {
-            $bool = OrderPackage::query()->whereIn('id', $packages)->delete();
-            $orderPackageCommodities = OrderPackageCommodities::query()->whereIn('order_package_id', $packages)->get();
-            $orderPackageCommoditiesService->deleteOrderCommodities($orderPackageCommodities);
-            $bool ? LogService::log(__METHOD__, __FUNCTION__, '删除多余包裹 ids:' . json_encode($packages)) : null;
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '删除多余包裹 ids:' . json_encode($packages) . $e->getMessage());
+        $this->deleteIds($packages);
+//        try {
+//            $bool = OrderPackage::query()->whereIn('id', $packages)->delete();
+//            $orderPackageCommodities = OrderPackageCommodities::query()->whereIn('order_package_id', $packages)->get();
+//            $orderPackageCommoditiesService->deleteOrderCommodities($orderPackageCommodities);
+//            $bool ? LogService::log(__METHOD__, __FUNCTION__, '删除多余包裹 ids:' . json_encode($packages)) : null;
+//        } catch (\Exception $e) {
+//            LogService::log(__METHOD__, __FUNCTION__, '删除多余包裹 ids:' . json_encode($packages) . $e->getMessage());
+//        }
+    }
+
+    public function deleteIds($ids)
+    {
+        $deleteIds  = array_chunk($ids,150);
+        foreach ($deleteIds as $deleted_ids) {
+            OrderPackage::query()->whereIn('id', $deleted_ids)->delete();
+            $orderPackageCommodities = OrderPackageCommodities::query()->whereIn('order_package_id', $deleted_ids)->get();
+            app('OrderPackageCommoditiesService')->deleteOrderCommodities($orderPackageCommodities);
         }
     }