whereLike('good_name', '%' . $data['good_name'] . '%'); if (($data['inventory_start'] != '') && ($data['inventory_end'] != '')) { $db = $db->whereBetween('inventory', [$data['inventory_start'], $data['inventory_end']]); } $count = $db->count('id'); $list = $db->field(true) ->page($data['page'], $data['size']) ->order(['id' => 'desc']) ->select() ->toArray(); return json_show(CommonModel::$success, '获取商城商品库存列表成功', ['count' => $count, 'list' => $list]); } //添加商城商品库存 public static function add(array $data = []): Json { Db::startTrans(); try { $good_list = GoodModel::where(['is_del' => CommonModel::$del_normal, 'type' => GoodModel::$type_shopping]) ->whereIn('id', array_column($data['list'], 'good_id')) ->column('id,good_code,good_name', 'id'); if (empty($good_list)) throw new Exception('该商品不存在'); $rs = InventoryShoppingModel::field('id,good_code') ->whereIn('good_id', array_column($good_list, 'id')) ->findOrEmpty() ->toArray(); if (!empty($rs)) throw new Exception($rs['good_code'] . '该商城商品库存已存在,不能重复添加'); $date = date('Y-m-d H:i:s'); $inventory = array_column($data['list'], 'inventory', 'good_id'); foreach ($good_list as $good) { $inventory_shopping_id = Db::name('inventory_shopping') ->insertGetId([ 'good_id' => $good['id'], 'good_code' => $good['good_code'], 'good_name' => $good['good_name'], 'inventory' => $inventory[$good['id']] ?? 0, 'addtime' => $date, 'updatetime' => $date, ]); Db::name('inventory_shopping_log')->insert([ 'inventory_shopping_id' => $inventory_shopping_id, 'before_inventory' => 0, 'after_inventory' => $inventory[$good['id']] ?? 0, 'good_id' => $good['id'], 'good_code' => $good['good_code'], 'good_name' => $good['good_name'], 'source' => CommonModel::$source_admin, 'createrid' => self::$uid, 'creater' => self::$uname, 'addtime' => $date, ]); } Db::commit(); return json_show(CommonModel::$success, '添加商城商品库存成功'); } catch (Exception $exception) { Db::rollback(); return json_show(CommonModel::$error_param, '添加商城商品库存失败,' . $exception->getMessage()); } } //获取商城商品库存详情 public static function read(int $id = 0): Json { $res = InventoryShoppingModel::field(true) ->where('id', $id) ->findOrEmpty() ->toArray(); if (empty($res)) throw new ValidateException('该商城商品库存为空'); return json_show(CommonModel::$success, '获取商城商品库存详情成功', $res); } //编辑商城商品库存 public static function edit(array $data = []): Json { Db::startTrans(); try { $rs = InventoryShoppingModel::field(true) ->lock(true) ->where(['id' => $data['id']]) ->findOrEmpty(); if ($rs->isEmpty()) throw new Exception('该商城商品库存不存在'); $date = date('Y-m-d H:i:s'); if ($rs->inventory != $data['inventory']) { Db::name('inventory_shopping_log')->insert([ 'inventory_shopping_id' => $data['id'], 'before_inventory' => $rs->inventory, 'after_inventory' => $data['inventory'], 'good_id' => $rs->good_id, 'good_code' => $rs->good_code, 'good_name' => $rs->good_name, 'source' => CommonModel::$source_admin, 'createrid' => self::$uid, 'creater' => self::$uname, 'addtime' => $date, ]); } InventoryShoppingModel::where('id', $data['id'])->save(array_merge($data, ['updatetime' => $date])); Db::commit(); return json_show(CommonModel::$success, '编辑商城商品库存成功'); } catch (Exception $exception) { Db::rollback(); return json_show(CommonModel::$error_param, '编辑商城商品库存失败,' . $exception->getMessage()); } } //商城商品库存变动记录 public static function log(array $data = []): Json { $count = Db::name('inventory_shopping_log') ->where('inventory_shopping_id', $data['id']) ->count('id'); $res = Db::name('inventory_shopping_log') ->field(true) ->where('inventory_shopping_id', $data['id']) ->order('id', 'desc') ->page($data['page'], $data['size']) ->select() ->toArray(); return json_show(CommonModel::$success, '获取商城商品库存变动记录', ['count' => $count, 'list' => $res]); } }