diff --git a/app/ExceptionHandler.php b/app/ExceptionHandler.php index 179dd0a7..483b9d6b 100644 --- a/app/ExceptionHandler.php +++ b/app/ExceptionHandler.php @@ -21,6 +21,9 @@ class ExceptionHandler extends Handler if ($exception instanceof Dumper) { return \response(self::convertToHtml($exception)); }elseif ($exception instanceof BusinessException) { + if ($request->expectsJson()) { + return json(['code' => 0, 'msg' => $exception->getMessage(),'show'=>1]); + } return response($exception->getMessage()); } elseif ($exception instanceof \Exception) { $isDebug = config('app.debug'); diff --git a/app/admin/controller/store_product/StoreProductController.php b/app/admin/controller/store_product/StoreProductController.php index 99970956..f39f949c 100644 --- a/app/admin/controller/store_product/StoreProductController.php +++ b/app/admin/controller/store_product/StoreProductController.php @@ -95,6 +95,22 @@ class StoreProductController extends BaseAdminController return $this->data($result); } + /** + * @notes 复制商品 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/31 10:53 + */ + public function copy() + { + $params = $this->request->post(); + $find = StoreProduct::where('id', $params['product_id'])->findOrEmpty()->toArray(); + foreach ($params['store_arr'] as $key => $store_id) { + StoreProductLogic::ordinary($find, $store_id, $this->adminId, $find); + } + return $this->success('复制成功', [], 1, 1); + } + /** * 商品导入到门店 */ diff --git a/app/admin/controller/warehouse_product/WarehouseProductController.php b/app/admin/controller/warehouse_product/WarehouseProductController.php index 27850ca8..e723cf2a 100644 --- a/app/admin/controller/warehouse_product/WarehouseProductController.php +++ b/app/admin/controller/warehouse_product/WarehouseProductController.php @@ -42,29 +42,29 @@ class WarehouseProductController extends BaseAdminController $params = $this->request->post(); - foreach($params['product_arr'] as $k=>$v){ - $data['admin_id']=$this->adminId; - $data['store_id']=0; - $data['supplier_id']=$params['supplier_id']; - $data['warehouse_id']=$params['warehouse_id']; - $data['code']=$params['code']; - $data['product_id']=$v['product_id']; - $data['nums']=$v['nums']; - $data['purchase']=$v['purchase']; - $data['total_price']=$v['total_price']; - $data['financial_pm']=1; - if(!empty($v['manufacture'])){ - $data['manufacture']=$v['manufacture']; + foreach ($params['product_arr'] as $k => $v) { + $data['admin_id'] = $this->adminId; + $data['store_id'] = 0; + $data['supplier_id'] = $params['supplier_id']; + $data['warehouse_id'] = $params['warehouse_id']; + $data['code'] = $params['code']; + $data['product_id'] = $v['product_id']; + $data['nums'] = $v['nums']; + $data['purchase'] = $v['purchase']; + $data['total_price'] = $v['total_price']; + $data['financial_pm'] = 1; + if (!empty($v['manufacture'])) { + $data['manufacture'] = $v['manufacture']; } - if(!empty($v['expiration_date'])){ - $data['expiration_date']=$v['expiration_date']; + if (!empty($v['expiration_date'])) { + $data['expiration_date'] = $v['expiration_date']; } WarehouseProductLogic::add($data); } if (WarehouseProductLogic::hasError()) { return $this->fail(WarehouseProductLogic::getError()); - }else{ + } else { return $this->success('添加成功', [], 1, 1); } } @@ -78,14 +78,10 @@ class WarehouseProductController extends BaseAdminController */ public function edit() { - $params = (new WarehouseProductValidate())->post()->goCheck('edit'); - $params['admin_id']=$this->adminId; + $params = $this->request->post(); + $params['admin_id'] = $this->adminId; $result = WarehouseProductLogic::edit($params); - if (WarehouseProductLogic::hasError()) { - return $this->fail(WarehouseProductLogic::getError()); - }else{ - return $this->success('编辑成功', [], 1, 1); - } + return $this->success('编辑成功', [], 1, 1); } @@ -101,7 +97,7 @@ class WarehouseProductController extends BaseAdminController WarehouseProductLogic::delete($params); if (WarehouseProductLogic::hasError()) { return $this->fail(WarehouseProductLogic::getError()); - }else{ + } else { return $this->success('删除成功', [], 1, 1); } } @@ -123,7 +119,8 @@ class WarehouseProductController extends BaseAdminController /** * 确认操作 */ - public function enter(){ + public function enter() + { // $id=$this->request->post('id'); // $result = WarehouseProductLogic::enter($id); // if (true === $result) { @@ -132,4 +129,4 @@ class WarehouseProductController extends BaseAdminController // return $this->fail(WarehouseProductLogic::getError()); return $this->success(''); } -} \ No newline at end of file +} diff --git a/app/admin/lists/warehouse_product/WarehouseProductLists.php b/app/admin/lists/warehouse_product/WarehouseProductLists.php index a301f663..41919963 100644 --- a/app/admin/lists/warehouse_product/WarehouseProductLists.php +++ b/app/admin/lists/warehouse_product/WarehouseProductLists.php @@ -71,7 +71,7 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt } } return WarehouseProduct::where($this->searchWhere) - ->field(['id', 'admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time']) + ->field(['id', 'oid','admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($item) { diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index acd1741d..dc84e99b 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -122,7 +122,6 @@ 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()); @@ -141,34 +140,54 @@ class WarehouseProductLogic extends BaseLogic */ public static function edit(array $params): bool { + Db::startTrans(); try { - $data = [ - 'warehouse_id' => $params['warehouse_id'], - 'product_id' => $params['product_id'], - 'financial_pm' => $params['financial_pm'], - 'nums' => $params['nums'], - // 'price' => $params['price'], - 'admin_id' => $params['admin_id'], - 'total_price' => $params['total_price'], - 'code' => $params['code'], - 'purchase' => $params['purchase'] ?? '', - // 'cost' => $params['cost'] ?? '', - ]; - if (isset($params['manufacture']) && $params['manufacture'] != '') { - $data['manufacture'] = strtotime($params['manufacture']); - } - if (isset($params['expiration_date']) && $params['expiration_date'] != '') { - $data['expiration_date'] = strtotime($params['expiration_date']); - } - $res = WarehouseProduct::where('id', $params['id'])->update($data); + $before_nums = 0; + $after_nums = 0; + $find=WarehouseOrder::where('id',$params['oid'])->find(); + if($find){ + $res = WarehouseProduct::where('id', $params['id'])->find(); + if($find['financial_pm']==1){ + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$res['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); + + $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$params['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); + $before_nums=$warehouseProductStorege['nums']; + $after_nums=$warehouseProductStorege['nums']+$params['nums']; + }else{ + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$res['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); + + $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$params['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); + $before_nums=$warehouseProductStorege['nums']; + $after_nums=bcsub($warehouseProductStorege['nums'],$params['nums'],2); + } + WarehouseProduct::where('id', $params['id'])->update([ + 'nums' => $params['nums'], + 'purchase' => $params['purchase'], + 'before_nums' => $before_nums, + 'after_nums' => $after_nums, + 'total_price' => $params['nums'] * $params['purchase'], + ]); + $finds = WarehouseProduct::where('oid', $params['oid'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); + if ($finds) { + WarehouseOrder::where('id', $params['oid'])->update([ + 'nums' => $finds['nums'], + 'total_price' => $finds['total_price'] + ]); + } + } Db::commit(); return $res; } catch (\Exception $e) { Db::rollback(); - self::setError($e->getMessage()); - return false; + throw new BusinessException($e->getMessage()); } }