diff --git a/app/admin/controller/beforehand_order/BeforehandOrderController.php b/app/admin/controller/beforehand_order/BeforehandOrderController.php index 2da9829bd..1dbb0f96e 100644 --- a/app/admin/controller/beforehand_order/BeforehandOrderController.php +++ b/app/admin/controller/beforehand_order/BeforehandOrderController.php @@ -340,5 +340,13 @@ class BeforehandOrderController extends BaseAdminController BeforehandOrderLogic::confirmLog($params); return $this->success('确认成功'); } + + public function copy() + { + $params = $this->request->post(); + $params['admin_id'] = $this->adminId; + BeforehandOrderLogic::copy($params); + return $this->success('复制成功'); + } } diff --git a/app/admin/logic/beforehand_order/BeforehandOrderLogic.php b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php index 59ac59915..f4288223c 100644 --- a/app/admin/logic/beforehand_order/BeforehandOrderLogic.php +++ b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php @@ -1028,4 +1028,41 @@ class BeforehandOrderLogic extends BaseLogic return $data; } + + public static function copy($params) + { + Db::startTrans(); + try { + $order = BeforehandOrder::where('id', $params['id'])->find(); + if (empty($order)) { + throw new BusinessException('订单不存在'); + } + if ($order['order_type'] != 1) { + throw new BusinessException('只能复制铺货订单'); + } + $orderCartInfo = BeforehandOrderCartInfo::where('bhoid', $params['id'])->select()->toArray(); + unset($order['id'], $order['create_time'], $order['update_time']); + $newOrder = new BeforehandOrder(); + $newOrder->setAttrs($order->toArray()); + $newOrder->admin_id = $params['admin_id']; + $newOrder->store_id = $params['store_id']; + $newOrder->order_id = getNewOrderId('YG'); + if (!empty($params['mark'])) { + $newOrder->mark = $params['mark']; + } + $newOrder->save(); + $insert = []; + foreach ($orderCartInfo as $v) { + unset($v['id'], $v['create_time'], $v['update_time']); + $v['bhoid'] = $newOrder->id; + $insert[] = $v; + } + (new BeforehandOrderCartInfo())->saveAll($insert); + Db::commit(); + } catch (\Exception $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } + }