From cbbd75cf60d6633cfa0b67e2b4fdeaa10ed00a3e Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sat, 4 Jan 2025 15:08:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(warehouse):=20=E4=BF=AE=E5=A4=8D=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E8=B0=83=E6=8B=A8=E5=BA=93=E5=AD=98=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 decStock 和 incStock 方法,使用 bcsub 和 bcadd 函数进行精确计算 - 从数据库中获取对象后再更新,以确保操作的原子性和准确性 - 优化 SqlChannelLog 调用,使用正确的参数记录日志 --- .../WarehouseProductLogic.php | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index 3fd3e1bdf..29ee35a5d 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -346,31 +346,28 @@ class WarehouseProductLogic extends BaseLogic //减少 private static function decStock($res) { - $res = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) - ->where('product_id', $res['product_id']) - ->dec('nums', $res['nums']) - ->save(); - SqlChannelLog('WarehouseProductStorege', $res['id'], $res['nums'], -1, Request()->url()); + $res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) + ->where('product_id', $res['product_id'])->find(); + $res1->save(['nums'=>bcsub($res1['nums'], $res['nums'],2)]); + SqlChannelLog('WarehouseProductStorege', $res1['id'], $res['nums'], -1, Request()->url()); - $res2 = StoreBranchProduct::where('id', $res['id']) - ->dec('stock', $res['nums']) - ->update(); + $res2 = StoreBranchProduct::where('id', $res['id'])->find(); + $res2->save(['stock'=>bcsub($res2['stock'], $res['nums'],2)]); SqlChannelLog('StoreBranchProduct', $res2['id'], $res['nums'], -1, Request()->url()); } //增加 private static function incStock($res, $params) { - $res = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) + $res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) ->where('product_id', $res['product_id']) - ->inc('nums', $params['nums']) - ->save(); - SqlChannelLog('WarehouseProductStorege', $res['id'], $res['nums'], 1, Request()->url()); + ->find(); + $res1->save(['nums'=>bcadd($res1['nums'], $params['nums'],2)]); + + SqlChannelLog('WarehouseProductStorege', $res1['id'], $res['nums'], 1, Request()->url()); - - $res2 = StoreBranchProduct::where('id', $res['id']) - ->inc('stock', $params['nums']) - ->save(); + $res2 = StoreBranchProduct::where('id', $res['id'])->find(); + $res2->save(['stock'=>bcadd($res2['stock'], $params['nums'],2)]); SqlChannelLog('StoreBranchProduct', $res2['id'], $res['nums'], 1, Request()->url()); } }