From 33eff351fc9cb3a8aaab89bbb31b3e1c1279ba70 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Mon, 6 Jan 2025 15:13:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(warehouse):=20=E4=BF=AE=E5=A4=8D=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E4=BA=A7=E5=93=81=E6=95=B0=E9=87=8F=E5=A2=9E=E5=87=8F?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=9A=84=E7=B2=BE=E5=BA=A6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在增减产品数量时使用 bcadd 和 bcsub 函数,确保精度正确 - 修改了 decProductIncStorege 和 incProductDecStorege 方法的实现 - 添加了异常捕获时的调试信息 --- .../WarehouseProductLogic.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index 81e521d8b..bae36df45 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -242,6 +242,7 @@ class WarehouseProductLogic extends BaseLogic return $res; } catch (\Exception $e) { Db::rollback(); + d($e); throw new BusinessException($e->getMessage()); } } @@ -356,21 +357,25 @@ class WarehouseProductLogic extends BaseLogic private static function decProductIncStorege($res,$nums,$admin_id=0) { $res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) - ->where('product_id', $res['product_id'])->inc('nums',$nums)->update(); + ->where('product_id', $res['product_id'])->find(); + $res1->nums = bcadd($res1->nums,$nums,2); + $res1->save(); SqlChannelLog('WarehouseProductStorege', $res1['id'], $nums, 1, Request()->url(),$admin_id); - $res->dec('nums',$nums)->update(); - SqlChannelLog('WarehouseProduct', $res['id'], $res['nums'], -1, Request()->url(),$admin_id); + WarehouseProduct::where('id',$res['id'])->update(['nums'=>bcsub($res['nums'],$nums,2)]); + SqlChannelLog('WarehouseProduct', $res['id'], $nums, -1, Request()->url(),$admin_id); } //增加 private static function incProductDecStorege($res, $nums,$admin_id=0) { $res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id']) - ->where('product_id', $res['product_id'])->dec('nums',$nums)->update(); + ->where('product_id', $res['product_id'])->find(); + $res1->nums = bcsub($res1->nums,$nums,2); + $res1->save(); SqlChannelLog('WarehouseProductStorege', $res1['id'], $nums, -1, Request()->url(),$admin_id); - - $res->inc('nums',$nums)->update(); - SqlChannelLog('WarehouseProduct', $res['id'], $res['nums'], 1, Request()->url(),$admin_id); + + WarehouseProduct::where('id',$res['id'])->update(['nums'=>bcadd($res['nums'],$nums,2)]); + SqlChannelLog('WarehouseProduct', $res['id'], $nums, 1, Request()->url(),$admin_id); } }