shish 3 luni în urmă
părinte
comite
b05a1aadc6
1 a modificat fișierele cu 16 adăugiri și 8 ștergeri
  1. 16 8
      biz-ghs/order/classes/PurchaseOrderClass.php

+ 16 - 8
biz-ghs/order/classes/PurchaseOrderClass.php

@@ -842,14 +842,6 @@ class PurchaseOrderClass extends BaseClass
         //数据结构 [{itemId:0,bigNum:0,smallNum:0,productId:12,itemPrice:1,weight:1}]
         $ghsItemInfo = $data['itemInfo'];
         $ghsItemInfo = self::mergeItemInfo($ghsItemInfo);
-        usort($ghsItemInfo, function ($left, $right) {
-            $leftId = isset($left['productId']) ? intval($left['productId']) : 0;
-            $rightId = isset($right['productId']) ? intval($right['productId']) : 0;
-            if ($leftId == $rightId) {
-                return 0;
-            }
-            return $leftId < $rightId ? -1 : 1;
-        });
         //总共多少扎
         $totalBigNum = 0;
         //总共多少支
@@ -1858,4 +1850,20 @@ class PurchaseOrderClass extends BaseClass
         util::success(['file' => $fileUrl, 'shortFile' => $file]);
     }
 
+    /**
+     * 按 productId 升序排列,用于库存行锁顺序(降低多商品并发死锁)
+     * @param array $list
+     */
+    private static function sortRowsByProductIdAsc(&$list)
+    {
+        usort($list, function ($left, $right) {
+            $leftId = isset($left['productId']) ? intval($left['productId']) : 0;
+            $rightId = isset($right['productId']) ? intval($right['productId']) : 0;
+            if ($leftId == $rightId) {
+                return 0;
+            }
+            return $leftId < $rightId ? -1 : 1;
+        });
+    }
+
 }