From 19b23190768e21cddd49ddd634c6d587a0a23047 Mon Sep 17 00:00:00 2001 From: Devil Date: Tue, 1 Dec 2020 15:01:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E7=BC=96=E8=BE=91=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E5=87=BA=E9=94=99=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/service/WarehouseGoodsService.php | 90 +++++++++++-------- changelog.txt | 3 +- 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/application/service/WarehouseGoodsService.php b/application/service/WarehouseGoodsService.php index 6ca3d06c8..67c5b73fa 100644 --- a/application/service/WarehouseGoodsService.php +++ b/application/service/WarehouseGoodsService.php @@ -690,41 +690,49 @@ class WarehouseGoodsService // 启动事务 Db::startTrans(); + + // 捕获异常 + try { - // 删除原始数据 - $where = [ - 'warehouse_id' => $warehouse_goods['warehouse_id'], - 'goods_id' => $warehouse_goods['goods_id'], - ]; - Db::name('WarehouseGoodsSpec')->where($where)->delete(); + // 删除原始数据 + $where = [ + 'warehouse_id' => $warehouse_goods['warehouse_id'], + 'goods_id' => $warehouse_goods['goods_id'], + ]; + Db::name('WarehouseGoodsSpec')->where($where)->delete(); - // 仓库商品更新 - Db::name('WarehouseGoods')->where(['id'=>$warehouse_goods['id']])->update([ - 'inventory' => array_sum(array_column($data, 'inventory')), - 'upd_time' => time(), - ]); + // 添加数据 + if(!empty($data)) + { + if(Db::name('WarehouseGoodsSpec')->insertAll($data) < count($data)) + { + throw new \Exception('规格库存添加失败'); + } + } - // 添加数据 - if(!empty($data)) - { - if(Db::name('WarehouseGoodsSpec')->insertAll($data) < count($data)) + // 仓库商品更新 + if(!Db::name('WarehouseGoods')->where(['id'=>$warehouse_goods['id']])->update([ + 'inventory' => array_sum(array_column($data, 'inventory')), + 'upd_time' => time(), + ])) { - Db::rollback(); - return DataReturn('规格库存添加失败', -100); + throw new \Exception('库存商品更新失败'); } - } - // 同步商品库存 - $ret = self::GoodsSpecInventorySync($warehouse_goods['goods_id']); - if($ret['code'] != 0) - { + // 同步商品库存 + $ret = self::GoodsSpecInventorySync($warehouse_goods['goods_id']); + if($ret['code'] != 0) + { + throw new \Exception($ret['msg']); + } + + // 完成 + Db::commit(); + return DataReturn('操作成功', 0); + } catch(\Exception $e) { Db::rollback(); - return $ret; + return DataReturn($e->getMessage(), -1); } - - // 提交事务 - Db::commit(); - return DataReturn('更新成功', 0); } /** @@ -760,7 +768,11 @@ class WarehouseGoodsService foreach($res['value'] as $v) { $md5_key = md5(empty($v['value']) ? 'default' : str_replace(GoodsService::$goods_spec_to_string_separator, '', $v['value'])); - $inventory = (int) Db::name('WarehouseGoodsSpec')->where(['warehouse_id'=>$wg['warehouse_id'], 'md5_key'=>$md5_key])->value('inventory'); + $inventory = (int) Db::name('WarehouseGoodsSpec')->where([ + 'warehouse_id' => $wg['warehouse_id'], + 'goods_id' => $wg['goods_id'], + 'md5_key' => $md5_key, + ])->value('inventory'); $data[] = [ 'warehouse_goods_id' => $wg['id'], 'warehouse_id' => $wg['warehouse_id'], @@ -774,26 +786,30 @@ class WarehouseGoodsService // 删除原始数据 $where = [ - 'warehouse_id' => $wg['warehouse_id'], - 'goods_id' => $wg['goods_id'], + 'warehouse_id' => $wg['warehouse_id'], + 'goods_id' => $wg['goods_id'], ]; Db::name('WarehouseGoodsSpec')->where($where)->delete(); - // 仓库商品更新 - Db::name('WarehouseGoods')->where(['id'=>$wg['id']])->update([ - 'inventory' => array_sum(array_column($data, 'inventory')), - 'upd_time' => time(), - ]); - // 添加数据 if(Db::name('WarehouseGoodsSpec')->insertAll($data) < count($data)) { return DataReturn('规格库存添加失败', -1); } + + // 仓库商品更新 + if(!Db::name('WarehouseGoods')->where(['id'=>$wg['id']])->update([ + 'inventory' => array_sum(array_column($data, 'inventory')), + 'upd_time' => time(), + ])) + { + return DataReturn('库存商品更新失败', -1); + } } } - return DataReturn('操作成功', 0); + // 商品库存同步 + return self::GoodsSpecInventorySync($goods_id); } /** diff --git a/changelog.txt b/changelog.txt index e3ebc18ae..cadf1f722 100755 --- a/changelog.txt +++ b/changelog.txt @@ -15,15 +15,16 @@ web端 5. 分页组件新增自定义页码跳转 6. 后端动态表格数据列表组件优化高度固定 7. 首页轮播左侧商品分类和右侧聚合内容新增开关控制 - 8. 商品列表支持库存快捷配置 小程序 1. 支付订单0金额错误修复 2. 小程序规格图片支持放大查看 3. 微信小程序商品/直播分享支持封面图片 + 4. 小程序分享优化、微信小程序分享朋友圈支持自定义图片+参数 插件 1. 新增订单商品表单插件(下单商品详情页面动态配置表单让用户填写数据方可下单) + 2. 商品批量修改插件新增在商品列表支持库存快捷配置 +=========================================================+ -- GitLab