From 9fca148539c201256d34c37a7430afbb6835521b Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sun, 25 Aug 2024 13:56:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E4=BA=86=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=BA=93=E5=AD=98=E7=AE=A1=E7=90=86=E7=9A=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WarehouseOrderController.php | 2 + app/admin/logic/statistic/WarehouseLogic.php | 8 ++- .../StoreBranchProductLogic.php | 8 +-- .../logic/store_product/StoreProductLogic.php | 2 - .../WarehouseProductLogic.php | 1 + app/api/logic/order/OrderLogic.php | 1 - .../store_product/StoreProductController.php | 49 +++---------------- .../StoreProductAttrValueController.php | 35 +++---------- app/store/lists/cart/CartList.php | 1 - .../StoreProductAttrValueLists.php | 2 +- .../StoreBranchProductLogic.php | 41 ---------------- .../logic/store_product/StoreProductLogic.php | 34 ------------- 12 files changed, 28 insertions(+), 156 deletions(-) diff --git a/app/admin/controller/warehouse_order/WarehouseOrderController.php b/app/admin/controller/warehouse_order/WarehouseOrderController.php index e25b20083..053a82baa 100644 --- a/app/admin/controller/warehouse_order/WarehouseOrderController.php +++ b/app/admin/controller/warehouse_order/WarehouseOrderController.php @@ -115,6 +115,7 @@ class WarehouseOrderController extends BaseAdminController $data['total_price'] = bcmul($arr['stock'], $storeProduct['purchase'], 2); $data['purchase'] = $storeProduct['purchase']; $data['oid'] = $res['id']; + $data['financial_pm'] = 0; WarehouseProductLogic::add($data); $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); @@ -124,6 +125,7 @@ class WarehouseOrderController extends BaseAdminController Db::commit(); } catch (\Throwable $e) { Db::rollback(); + d($e); throw new BusinessException($e->getMessage()); } return $this->success('已导入后台队列,请在门店入库记录中查看', [], 1, 1); diff --git a/app/admin/logic/statistic/WarehouseLogic.php b/app/admin/logic/statistic/WarehouseLogic.php index 67d1ef0a9..7ac2f2807 100644 --- a/app/admin/logic/statistic/WarehouseLogic.php +++ b/app/admin/logic/statistic/WarehouseLogic.php @@ -190,12 +190,16 @@ class WarehouseLogic extends BaseLogic $list = StoreProduct::where('stock', '<', 0)->page($parmas['page_no'], 15)->select()->toArray(); $count = StoreProduct::where('stock', '<', 0)->count(); } elseif ($parmas['type'] == 2) { - $list = StoreBranchProduct::where('stock', '<', 0)->page($parmas['page_no'], 15)->select() + $where[]=['stock','<',0]; + if(isset($parmas['store_id']) && $parmas['store_id'] > 0){ + $where[]=['store_id','=',$parmas['store_id']]; + } + $list = StoreBranchProduct::where($where)->page($parmas['page_no'], 15)->select() ->each(function ($item) { $item->remark = SystemStore::where('id', $item['store_id'])->value('name'); }) ->toArray(); - $count = StoreBranchProduct::where('stock', '<', 0)->count(); + $count = StoreBranchProduct::where($where)->count(); } elseif ($parmas['type'] == 3) { $list = WarehouseProductStorege::where('nums', '<', 0)->page($parmas['page_no'], 15)->select() ->each(function ($item) { diff --git a/app/admin/logic/store_branch_product/StoreBranchProductLogic.php b/app/admin/logic/store_branch_product/StoreBranchProductLogic.php index 6de8c8246..57e2cd93b 100644 --- a/app/admin/logic/store_branch_product/StoreBranchProductLogic.php +++ b/app/admin/logic/store_branch_product/StoreBranchProductLogic.php @@ -6,6 +6,7 @@ use app\admin\logic\store_product\StoreProductLogic; use app\common\model\store_branch_product\StoreBranchProduct; use app\common\logic\BaseLogic; use app\common\model\store_product\StoreProduct; +use support\exception\BusinessException; use think\facade\Db; use Webman\RedisQueue\Redis; @@ -90,22 +91,21 @@ class StoreBranchProductLogic extends BaseLogic $find=StoreProduct::where('id', $params['product_id'])->find(); if($find){ $stock=bcadd($find['stock'],$params['nums'],2); - $find->update(['stock'=>$stock,'total_price'=>bcmul($stock,$find['purchase'],2)]); + StoreProduct::where('id', $params['product_id'])->update(['stock'=>$stock,'total_price'=>bcmul($stock,$find['purchase'],2)]); } }else{ StoreBranchProduct::where('id', $params['id'])->dec('stock',$params['nums'])->update(); $find=StoreProduct::where('id', $params['product_id'])->find(); if($find){ $stock=bcsub($find['stock'],$params['nums'],2); - $find->update(['stock'=>$stock,'total_price'=>bcmul($stock,$find['purchase'],2)]); + StoreProduct::where('id', $params['product_id'])->update(['stock'=>$stock,'total_price'=>bcmul($stock,$find['purchase'],2)]); } } Db::commit(); return true; } catch (\Throwable $e) { Db::rollback(); - self::setError($e->getMessage()); - return false; + throw new BusinessException($e->getMessage()); } } /** diff --git a/app/admin/logic/store_product/StoreProductLogic.php b/app/admin/logic/store_product/StoreProductLogic.php index dcd2fb31d..55614093c 100644 --- a/app/admin/logic/store_product/StoreProductLogic.php +++ b/app/admin/logic/store_product/StoreProductLogic.php @@ -74,7 +74,6 @@ class StoreProductLogic extends BaseLogic "unit" => $params["unit"], "stock" => 0, "product_id" => $res['id'], - "unique" => setUnique($res['id'], '', 0), 'sales' => 0, ]); Db::commit(); @@ -320,7 +319,6 @@ class StoreProductLogic extends BaseLogic $arr = [ 'product_id' => $product_arr['id'], 'store_id' => $store_id, - 'unique' => setUnique($branch['id'], '', 0), 'sales' => 0, 'type' => 0, 'bar_code' => $find['bar_code'] diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index 6d168d8e1..acd1741db 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -122,6 +122,7 @@ class WarehouseProductLogic extends BaseLogic // Db::commit(); return $res; } catch (\Throwable $e) { + d($e); throw new BusinessException($e->getMessage()); // Db::rollback(); // Log::error($e->getMessage().',file:'.$e->getFile().',line:'.$e->getLine()); diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php index 522dc374a..3c0b8c2f0 100644 --- a/app/api/logic/order/OrderLogic.php +++ b/app/api/logic/order/OrderLogic.php @@ -481,7 +481,6 @@ class OrderLogic extends BaseLogic $data = []; foreach ($arr as $k => $v) { $data[$k]['product_id'] = $v['product_id']; - // $unique = StoreProductAttrValue::where('product_id', $v['product_id'])->value('v'); $data[$k]['product_attr_unique'] = ''; $data[$k]['cart_num'] = $v['cart_num']; $data[$k]['type'] = ''; diff --git a/app/store/controller/store_product/StoreProductController.php b/app/store/controller/store_product/StoreProductController.php index f56219f1f..c873d0331 100644 --- a/app/store/controller/store_product/StoreProductController.php +++ b/app/store/controller/store_product/StoreProductController.php @@ -27,32 +27,12 @@ class StoreProductController extends BaseAdminController return $this->dataLists(new StoreBranchProductLists()); } - // #[ - // ApiDoc\Title('添加商品'), - // ApiDoc\url('/store/store_product/storeProduct/add'), - // ApiDoc\Method('POST'), - // ApiDoc\NotHeaders(), - // ApiDoc\Header(ref: [Definitions::class, "token"]), - // ApiDoc\ResponseSuccess("data", type: "array", children: [ - // ['name' => 'id', 'desc' => 'ID', 'type' => 'int'], - // ['name' => 'image', 'desc' => '图片', 'type' => 'string'], - // ['name' => 'store_name', 'desc' => '商品名称', 'type' => 'string'], - // ['name' => 'price', 'desc' => '零售价', 'type' => 'float'], - // ['name' => 'cost', 'desc' => '成本价', 'type' => 'float'], - // ['name' => 'sales', 'desc' => '销量', 'type' => 'int'], - // ['name' => 'stock', 'desc' => '库存', 'type' => 'int'], - // ['name' => 'unit_name', 'desc' => '单位', 'type' => 'string'], - // ['name' => 'cate_name', 'desc' => '分类', 'type' => 'string'], - // ]), - // ] + /** + * 添加商品 + */ public function add() { - $params = (new StoreProductValidate())->post()->goCheck('add'); - $result = StoreProductLogic::add($params); - if (true === $result) { - return $this->success('添加成功', [], 1, 1); - } - return $this->fail(StoreProductLogic::getError()); + return $this->fail('暂未开放'); } // #[ @@ -152,24 +132,11 @@ class StoreProductController extends BaseAdminController return $this->success('操作成功', [], 1, 1); } - // #[ - // ApiDoc\Title('商品库存增减'), - // ApiDoc\url('/store/store_product/storeProduct/stock'), - // ApiDoc\Method('POST'), - // ApiDoc\Param(name: "attrs", type: "array", require: true, desc: "id", children: [ - // ['name' => 'unique', 'desc' => '唯一值', 'type' => 'string'], - // ['name' => 'type', 'desc' => '类型:1增加,2减少', 'type' => 'int'], - // ['name' => 'number', 'desc' => '数量', 'type' => 'int'], - // ]), - // ApiDoc\NotHeaders(), - // ApiDoc\Header(ref: [Definitions::class, "token"]), - // ApiDoc\ResponseSuccess("data", type: "array"), - // ] + /** + * 商品库存增减 + */ public function stock() { - $params = (new StoreProductValidate())->post()->goCheck('stock'); - $params['store_id'] = $this->request->adminInfo['store_id']; - StoreBranchProductLogic::stock($params); - return $this->success('操作成功', [], 1, 1); + return $this->fail('门店禁止手动增减商品库存'); } } diff --git a/app/store/controller/store_product_attr_value/StoreProductAttrValueController.php b/app/store/controller/store_product_attr_value/StoreProductAttrValueController.php index 9b99546ac..86aec06b2 100644 --- a/app/store/controller/store_product_attr_value/StoreProductAttrValueController.php +++ b/app/store/controller/store_product_attr_value/StoreProductAttrValueController.php @@ -11,40 +11,17 @@ use app\store\validate\store_product_attr_value\StoreProductAttrValueValidate; /** - * 商品属性值控制器 + * 商品规格列表控制器 * Class StoreProductAttrValueController - * @package app\store\controller\store_product_attr_value */ -// #[ApiDoc\title('商品属性值')] + class StoreProductAttrValueController extends BaseAdminController { - // #[ - // ApiDoc\Title('商品属性值列表'), - // ApiDoc\url('/store/store_product_attr_value/storeProductAttrValue/lists'), - // ApiDoc\Method('GET'), - // ApiDoc\NotHeaders(), - // ApiDoc\Header(ref: [Definitions::class, "token"]), - // ApiDoc\Query(ref: [Definitions::class, "page"]), - // ApiDoc\Query(name: 'product_id', type: 'int', require: true, desc: '商品ID'), - // ApiDoc\Query(name: 'store_id', type: 'int', require: true, desc: '门店ID'), - // ApiDoc\ResponseSuccess("data", type: "array", children: [ - // ['name' => 'count', 'desc' => '总数', 'type' => 'int'], - // ['name' => 'page_no', 'desc' => '页码', 'type' => 'int'], - // ['name' => 'page_size', 'desc' => '每页数量', 'type' => 'int'], - // ['name' => 'extend', 'desc' => '扩展数据', 'type' => 'array'], - // ['name' => 'lists', 'desc' => '列表数据', 'type' => 'array', 'children' => [ - // ['name' => 'id', 'desc' => 'ID', 'type' => 'int'], - // ['name' => 'product_id', 'desc' => '商品ID', 'type' => 'int'], - // ['name' => 'stock', 'desc' => '库存', 'type' => 'int'], - // ['name' => 'unique', 'desc' => '唯一值', 'type' => 'string'], - // ['name' => 'sales', 'desc' => '销量', 'type' => 'int'], - // ['name' => 'bar_code', 'desc' => '条码', 'type' => 'string'], - // ['name' => 'image', 'desc' => '规格图片', 'type' => 'string'], - // ]], - // ]), - // ] - public function lists() + /** + * 商品规格列表 + * @return mixed + */ public function lists() { return $this->dataLists(new StoreProductAttrValueLists()); } diff --git a/app/store/lists/cart/CartList.php b/app/store/lists/cart/CartList.php index fdbd21fab..27ca4ecf3 100644 --- a/app/store/lists/cart/CartList.php +++ b/app/store/lists/cart/CartList.php @@ -72,7 +72,6 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists foreach ($list as $key => &$item) { $find = StoreBranchProduct::where(['product_id' => $item['product_id'], 'store_id' => $item['store_id']]) ->field('product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id') - ->withTrashed() ->find(); if ($find) { if ($off_activity == 1) { diff --git a/app/store/lists/store_product_attr_value/StoreProductAttrValueLists.php b/app/store/lists/store_product_attr_value/StoreProductAttrValueLists.php index b30469d01..5b6e542de 100644 --- a/app/store/lists/store_product_attr_value/StoreProductAttrValueLists.php +++ b/app/store/lists/store_product_attr_value/StoreProductAttrValueLists.php @@ -43,7 +43,7 @@ class StoreProductAttrValueLists extends BaseAdminDataLists implements ListsSear public function lists(): array { return StoreBranchProductAttrValue::with('attr')->where($this->searchWhere) - ->field(['id', 'product_id', 'stock', 'unique', 'sales', 'bar_code' + ->field(['id', 'product_id', 'stock','sales', 'bar_code' ]) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) diff --git a/app/store/logic/store_branch_product/StoreBranchProductLogic.php b/app/store/logic/store_branch_product/StoreBranchProductLogic.php index b08da5d3b..d37e60cad 100644 --- a/app/store/logic/store_branch_product/StoreBranchProductLogic.php +++ b/app/store/logic/store_branch_product/StoreBranchProductLogic.php @@ -57,7 +57,6 @@ class StoreBranchProductLogic extends BaseLogic "price" => $data['price'], "stock" => $params['stock'], "product_id" => $res['id'], - "unique" => setUnique($res['id'], '', 0), 'sales' => 0, ]); StoreCategory::where('id', $params['cate_id'])->inc('three')->update(); @@ -149,46 +148,6 @@ class StoreBranchProductLogic extends BaseLogic } } - /** - * @notes 商品库存 - * @param array $params - * @return bool - */ - public static function stock(array $params): bool - { - $attrs = reset_index($params['attrs'], 'unique'); - $attrValue = StoreBranchProductAttrValue::where('store_id', $params['store_id'])->whereIn('unique', array_keys($attrs))->select()->toArray(); - if (empty($attrValue)) { - throw new \Exception('商品属性不存在'); - } - $StoreProduct = StoreBranchProduct::where('store_id', $params['store_id'])->where('product_id', $attrValue[0]['product_id'])->find(); - if (empty($StoreProduct)) { - throw new \Exception('商品不存在'); - } - self::checkAuth($StoreProduct); - Db::startTrans(); - try { - $productStockIn = 0; - foreach ($attrValue as $k => $v) { - $current = $attrs[$v['unique']] ?? []; - if (empty($current) || $v['unique'] != $current['unique']) { - continue; - } - $stock = $current['type'] == 1 ? $v['stock'] + $current['number'] : $v['stock'] - $current['number']; - $stock = max($stock, 0); - $productStockIn = $current['type'] == 1 ? $StoreProduct['stock'] + $current['number'] : $StoreProduct['stock'] - $current['number']; - $productStockIn = max($productStockIn, 0); - StoreBranchProductAttrValue::where('id', $v['id'])->update(['stock' => $stock]); - } - StoreBranchProduct::where('id', $StoreProduct['id'])->update(['stock' => $productStockIn]); - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - throw new \Exception($e->getMessage()); - } - } - public static function checkAuth($product) { if (request()->adminInfo['store_id'] != $product['store_id']) { diff --git a/app/store/logic/store_product/StoreProductLogic.php b/app/store/logic/store_product/StoreProductLogic.php index 150040c2f..7af0b7980 100644 --- a/app/store/logic/store_product/StoreProductLogic.php +++ b/app/store/logic/store_product/StoreProductLogic.php @@ -30,34 +30,6 @@ class StoreProductLogic extends BaseLogic { Db::startTrans(); try { - $data = [ - 'store_name' => $params['store_name'], - 'image' => $params['image'], - 'bar_code' => $params['bar_code'] ?? '', - 'cate_id' => $params['cate_id'], - 'unit' => $params['unit'], - 'stock' => $params['stock'], - 'cost' => $params['cost'], - 'purchase' => $params['purchase'], - 'rose' => $params['rose'], - ]; - $rose_price = bcmul($params['cost'], $params['rose'], 2); - $data['price'] = bcadd($params['cost'], $rose_price, 2); - $res = StoreProduct::create($data); - StoreProductAttrValue::create([ - "bar_code" => $params["bar_code"] ?? '', - "image" => $params["image"] ?? '', - "cost" => $params['cost'], - "purchase" => $params['purchase'], - "unit" => $params["unit"], - "price" => $data['price'], - "stock" => $params['stock'], - "product_id" => $res['id'], - "unique" => setUnique($res['id'], '', 0), - 'sales' => 0, - ]); - StoreCategory::where('id', $params['cate_id'])->inc('three')->update(); - Db::commit(); return true; } catch (\Exception $e) { @@ -78,16 +50,10 @@ class StoreProductLogic extends BaseLogic public static function edit(array $params): bool { Db::startTrans(); - $StoreProduct = StoreProduct::where('id', $params['id'])->find(); try { - if ($StoreProduct['cate_id'] != $params['cate_id']) { - StoreCategory::where('id', $params['cate_id'])->inc('three')->update(); - StoreCategory::where('id', $StoreProduct['cate_id'])->dec('three')->update(); - } StoreProduct::where('id', $params['id'])->update([ 'store_name' => $params['store_name'] ]); - Db::commit(); return true; } catch (\Exception $e) {