From 3a100dc66219c94b4a1c6b70fa9a0aaa4830e4a2 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Mon, 30 Sep 2024 16:44:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=A2=84=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=A1=A8=E5=92=8C=E9=A2=84=E8=AE=A2=E5=8D=95=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=AF=A6=E6=83=85=E8=A1=A8=E7=9A=84API=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BeforehandOrderController.php | 92 ++++++++++++ .../BeforehandOrderCartInfoController.php | 104 +++++++++++++ .../beforehand_order/BeforehandOrderLists.php | 65 +++++++++ .../BeforehandOrderCartInfoLists.php | 70 +++++++++ .../beforehand_order/BeforehandOrderLogic.php | 135 +++++++++++++++++ .../BeforehandOrderCartInfoLogic.php | 138 ++++++++++++++++++ .../beforehand_order/BeforehandOrder.php | 22 +++ .../BeforehandOrderCartInfo.php | 22 +++ 8 files changed, 648 insertions(+) create mode 100644 app/admin/controller/beforehand_order/BeforehandOrderController.php create mode 100644 app/admin/controller/beforehand_order_cart_info/BeforehandOrderCartInfoController.php create mode 100644 app/admin/lists/beforehand_order/BeforehandOrderLists.php create mode 100644 app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php create mode 100644 app/admin/logic/beforehand_order/BeforehandOrderLogic.php create mode 100644 app/admin/logic/beforehand_order_cart_info/BeforehandOrderCartInfoLogic.php create mode 100644 app/common/model/beforehand_order/BeforehandOrder.php create mode 100644 app/common/model/beforehand_order_cart_info/BeforehandOrderCartInfo.php diff --git a/app/admin/controller/beforehand_order/BeforehandOrderController.php b/app/admin/controller/beforehand_order/BeforehandOrderController.php new file mode 100644 index 000000000..683ff87c8 --- /dev/null +++ b/app/admin/controller/beforehand_order/BeforehandOrderController.php @@ -0,0 +1,92 @@ +dataLists(new BeforehandOrderLists()); + } + + + /** + * @notes 添加预订单表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:26 + */ + public function add() + { + $params =$this->request->post(); + $params['admin_id'] = $this->adminId; + $result = BeforehandOrderLogic::add($params); + return $this->success('添加成功', [], 1, 1); + } + + + /** + * @notes 编辑预订单表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:26 + */ + public function edit() + { + $params =$this->request->post(); + $result = BeforehandOrderLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(BeforehandOrderLogic::getError()); + } + + + /** + * @notes 删除预订单表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:26 + */ + public function delete() + { + $params =$this->request->post(); + BeforehandOrderLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取预订单表详情 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:26 + */ + public function detail() + { + $params = (new BeforehandOrderValidate())->goCheck('detail'); + $result = BeforehandOrderLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/admin/controller/beforehand_order_cart_info/BeforehandOrderCartInfoController.php b/app/admin/controller/beforehand_order_cart_info/BeforehandOrderCartInfoController.php new file mode 100644 index 000000000..7f31a85ec --- /dev/null +++ b/app/admin/controller/beforehand_order_cart_info/BeforehandOrderCartInfoController.php @@ -0,0 +1,104 @@ +dataLists(new BeforehandOrderCartInfoLists()); + } + + + /** + * @notes 添加预订单购物详情表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:32 + */ + public function add() + { + $params = $this->request->post(); + $result = BeforehandOrderCartInfoLogic::add($params); + return $this->success('添加成功', [], 1, 1); + + } + /** + * @notes 添加预订单购物详情表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:32 + */ + public function append_add() + { + $params = $this->request->post(); + $result = BeforehandOrderCartInfoLogic::appendAdd($params); + return $this->success('追加成功', [], 1, 1); + + } + + + /** + * @notes 编辑预订单购物详情表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:32 + */ + public function edit() + { + $params = $this->request->post(); + $result = BeforehandOrderCartInfoLogic::edit($params); + return $this->success('编辑成功', [], 1, 1); + + } + + + /** + * @notes 删除预订单购物详情表 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:32 + */ + public function delete() + { + $params = $this->request->post(); + BeforehandOrderCartInfoLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取预订单购物详情表详情 + * @return \think\response\Json + * @author admin + * @date 2024/09/30 11:32 + */ + public function detail() + { + $params = $this->request->get(); + $result = BeforehandOrderCartInfoLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/admin/lists/beforehand_order/BeforehandOrderLists.php b/app/admin/lists/beforehand_order/BeforehandOrderLists.php new file mode 100644 index 000000000..1526fea26 --- /dev/null +++ b/app/admin/lists/beforehand_order/BeforehandOrderLists.php @@ -0,0 +1,65 @@ + ['store_id', 'order_id', 'uid','paid','status',], + ]; + } + + + /** + * @notes 获取预订单表列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author admin + * @date 2024/09/30 11:26 + */ + public function lists(): array + { + return BeforehandOrder::where($this->searchWhere) + ->field(['id', 'store_id', 'order_id', 'uid', 'total_num', 'total_price', 'pay_price', 'deduction_price','create_time', 'source', 'status', 'mark']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取预订单表数量 + * @return int + * @author admin + * @date 2024/09/30 11:26 + */ + public function count(): int + { + return BeforehandOrder::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php b/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php new file mode 100644 index 000000000..54a3a61d7 --- /dev/null +++ b/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php @@ -0,0 +1,70 @@ + ['bhoid', 'uid', 'product_id'], + ]; + } + + + /** + * @notes 获取预订单购物详情表列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author admin + * @date 2024/09/30 11:32 + */ + public function lists(): array + { + return BeforehandOrderCartInfo::where($this->searchWhere) + ->field(['id', 'bhoid', 'uid', 'product_id', 'attr_value_id', 'is_pay', 'purchase', 'price', 'total_price', 'cart_num']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function($item){ + $find=StoreProduct::where('id',$item['product_id'])->field('store_name,image')->withTrashed()->find(); + $item['store_name']=$find['store_name']; + $item['image']=$find['image']; + return $item; + }) + ->toArray(); + } + + + /** + * @notes 获取预订单购物详情表数量 + * @return int + * @author admin + * @date 2024/09/30 11:32 + */ + public function count(): int + { + return BeforehandOrderCartInfo::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/admin/logic/beforehand_order/BeforehandOrderLogic.php b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php new file mode 100644 index 000000000..1f9d3796c --- /dev/null +++ b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php @@ -0,0 +1,135 @@ + $v) { + $datas[$k]['product_id'] = $v['product_id']; + $datas[$k]['uid'] = $uid; + $datas[$k]['cart_num'] = $v['nums']; + $datas[$k]['price'] = $v['purchase']; + $datas[$k]['total_price'] = $v['total_price']; + $datas[$k]['create_time'] = time(); + $datas[$k]['update_time'] =time(); + $total_num += $v['nums']; + $total_price += $v['total_price']; + } + $order = BeforehandOrder::create([ + 'order_id' => getNewOrderId('YG'), + 'admin_id' => $params['admin_id']??0, + 'uid' => $uid, + 'total_num' => $total_num, + 'total_price' => $total_price, + 'pay_price' => 0, + 'pay_type' => 0, + 'deduction_price' => 0, + 'paid' => 0, + 'source' => 0, + 'mark' => $params['mark']??'' + ]); + foreach ($datas as $k => $v) { + $datas[$k]['bhoid'] = $order['id']; + } + (new BeforehandOrderCartInfo())->saveAll($datas); + Db::commit(); + return true; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + + + /** + * @notes 编辑预订单表 + * @param array $params + * @return bool + * @author admin + * @date 2024/09/30 11:26 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + BeforehandOrder::where('id', $params['id'])->update([ + 'store_id' => $params['store_id'], + 'order_id' => $params['order_id'], + 'uid' => $params['uid'], + 'cart_id' => $params['cart_id'], + 'total_num' => $params['total_num'], + 'total_price' => $params['total_price'], + 'pay_price' => $params['pay_price'], + 'deduction_price' => $params['deduction_price'], + 'paid' => $params['paid'], + 'pay_time' => $params['pay_time'], + 'pay_type' => $params['pay_type'], + 'source' => $params['source'], + 'status' => $params['status'], + 'mark' => $params['mark'] + ]); + + Db::commit(); + return true; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + + + /** + * @notes 删除预订单表 + * @param array $params + * @return bool + * @author admin + * @date 2024/09/30 11:26 + */ + public static function delete(array $params): bool + { + return BeforehandOrder::destroy($params['id']); + } + + + /** + * @notes 获取预订单表详情 + * @param $params + * @return array + * @author admin + * @date 2024/09/30 11:26 + */ + public static function detail($params): array + { + return BeforehandOrder::findOrEmpty($params['id'])->toArray(); + } +} diff --git a/app/admin/logic/beforehand_order_cart_info/BeforehandOrderCartInfoLogic.php b/app/admin/logic/beforehand_order_cart_info/BeforehandOrderCartInfoLogic.php new file mode 100644 index 000000000..837e99643 --- /dev/null +++ b/app/admin/logic/beforehand_order_cart_info/BeforehandOrderCartInfoLogic.php @@ -0,0 +1,138 @@ + $params['oid'], + 'uid' => $params['uid'], + 'product_id' => $params['product_id'], + 'attr_value_id' => $params['attr_value_id'], + 'is_pay' => $params['is_pay'], + 'purchase' => $params['purchase'], + 'price' => $params['price'], + 'total_price' => $params['total_price'], + 'cart_num' => $params['cart_num'], + 'old_cart_id' => $params['old_cart_id'] + ]); + + Db::commit(); + return true; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + /** + * @notes 追加预订单购物详情表 + */ + public static function appendAdd(array $params): bool + { + Db::startTrans(); + try { + $datas = []; + $uid=$params['uid'] ?? 0; + $bhoid=$params['id']; + foreach ($params['product_arr'] as $k => $v) { + $datas[$k]['product_id'] = $v['id']; + $datas[$k]['uid'] = $uid; + $datas[$k]['bhoid'] = $bhoid; + $datas[$k]['cart_num'] = $v['nums']; + $datas[$k]['price'] = $v['purchase']; + $datas[$k]['total_price'] = $v['total_price']; + $datas[$k]['create_time'] = time(); + $datas[$k]['update_time'] =time(); + } + (new BeforehandOrderCartInfo())->saveAll($datas); + + $info=BeforehandOrderCartInfo::where('bhoid',$bhoid)->field('sum(cart_num) as cart_num,sum(total_price) as total_price')->find(); + BeforehandOrder::where('id',$bhoid)->update(['total_price'=>$info['total_price'],'total_num'=>$info['cart_num']]); + Db::commit(); + return true; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + + + /** + * @notes 编辑预订单购物详情表 + * @param array $params + * @return bool + * @author admin + * @date 2024/09/30 11:32 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + BeforehandOrderCartInfo::where('id', $params['id'])->update([ + 'price' => $params['purchase'], + 'total_price' => $params['total_price'], + 'cart_num' => $params['nums'], + ]); + $bhoid=$params['bhoid']; + $info=BeforehandOrderCartInfo::where('bhoid',$bhoid)->field('sum(cart_num) as cart_num,sum(total_price) as total_price')->find(); + BeforehandOrder::where('id',$bhoid)->update(['total_price'=>$info['total_price'],'total_num'=>$info['cart_num']]); + Db::commit(); + return true; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + + + /** + * @notes 删除预订单购物详情表 + * @param array $params + * @return bool + * @author admin + * @date 2024/09/30 11:32 + */ + public static function delete(array $params): bool + { + return BeforehandOrderCartInfo::destroy($params['id']); + } + + + /** + * @notes 获取预订单购物详情表详情 + * @param $params + * @return array + * @author admin + * @date 2024/09/30 11:32 + */ + public static function detail($params): array + { + return BeforehandOrderCartInfo::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/common/model/beforehand_order/BeforehandOrder.php b/app/common/model/beforehand_order/BeforehandOrder.php new file mode 100644 index 000000000..e7944436d --- /dev/null +++ b/app/common/model/beforehand_order/BeforehandOrder.php @@ -0,0 +1,22 @@ +