handleData($param); if ($res[ 'code' ] != 0) return $res; $param = $res[ 'data' ]; model('cashier_pendorder')->startTrans(); try { $order_id = model('cashier_pendorder')->add([ 'site_id' => $param[ 'site_id' ], 'store_id' => $param[ 'store_id' ], 'member_id' => $param[ 'member_id' ] ?? 0, 'create_time' => time(), 'remark' => $param[ 'remark' ] ?? '', 'order_money' => $param[ 'order_money' ], 'discount_money' => $param[ 'discount_money' ] ?? 0.00, 'discount_data' => $param[ 'discount' ] ?? '' ]); $order_goods = []; foreach ($param[ 'goods' ] as $item) { array_push($order_goods, [ 'order_id' => $order_id, 'site_id' => $param[ 'site_id' ], 'store_id' => $param[ 'store_id' ], 'goods_id' => $item[ 'goods_id' ], 'sku_id' => $item[ 'sku_id' ], 'num' => $item[ 'num' ], 'price' => $item[ 'price' ], 'goods_class' => $item[ 'goods_class' ] ]); } model('cashier_pendorder_goods')->addList($order_goods); model('cashier_pendorder')->commit(); return $this->success($order_id); } catch (\Exception $e) { model('cashier_pendorder')->rollback(); Log::write('挂单出现错误,错误原因:' . $e->getMessage() . $e->getFile() . $e->getLine()); return $this->error(); } } private function handleData($param) { $store_info = model('store')->getInfo([ [ 'site_id', '=', $param[ 'site_id' ] ], [ 'store_id', '=', $param[ 'store_id' ] ] ], 'store_id'); if (empty($store_info)) return $this->error('', '门店不存在!'); $param[ 'order_money' ] = 0; $join = [ [ 'goods g', 'sku.goods_id=g.goods_id', 'inner' ], [ 'store_goods_sku sgs', 'sku.sku_id=sgs.sku_id and sgs.store_id=' . $param[ 'store_id' ], 'inner' ], ]; foreach ($param[ 'goods' ] as $k => $item) { if (isset($item[ 'money' ]) && $item[ 'money' ] > 0) { $param[ 'goods' ][ $k ][ 'price' ] = round($item[ 'money' ], 2); $param[ 'goods' ][ $k ][ 'goods_class' ] = 'money'; } else { $sku_info = model('goods_sku')->getInfo([ [ 'sku.sku_id', '=', $item[ 'sku_id' ] ] ], 'sku.goods_class,IF(g.is_unify_price = 1,sku.price,sgs.price) as price', 'sku', $join); if (empty($sku_info)) return $this->error('', '不存在的商品!'); $param[ 'goods' ][ $k ][ 'price' ] = $sku_info[ 'price' ]; $param[ 'goods' ][ $k ][ 'goods_class' ] = $sku_info[ 'goods_class' ]; } $param[ 'order_money' ] += ( $param[ 'goods' ][ $k ][ 'price' ] * $item[ 'num' ] ); } return $this->success($param); } /** * 编辑 * @param $param */ public function edit($param) { $res = $this->handleData($param); if ($res[ 'code' ] != 0) return $res; $param = $res[ 'data' ]; model('cashier_pendorder')->startTrans(); try { $condition = [ [ 'site_id', '=', $param[ 'site_id' ] ], [ 'store_id', '=', $param[ 'store_id' ] ], [ 'order_id', '=', $param[ 'order_id' ] ] ]; model('cashier_pendorder')->update([ 'member_id' => $param[ 'member_id' ] ?? 0, 'remark' => $param[ 'remark' ] ?? '', 'order_money' => $param[ 'order_money' ], 'discount_money' => $param[ 'discount_money' ] ?? 0.00, 'discount_data' => $param[ 'discount' ] ?? '' ], $condition); model('cashier_pendorder_goods')->delete($condition); $order_goods = []; foreach ($param[ 'goods' ] as $item) { array_push($order_goods, [ 'order_id' => $param[ 'order_id' ], 'store_id' => $param[ 'store_id' ], 'site_id' => $param[ 'site_id' ], 'goods_id' => $item[ 'goods_id' ], 'sku_id' => $item[ 'sku_id' ], 'num' => $item[ 'num' ], 'price' => $item[ 'price' ] ]); } model('cashier_pendorder_goods')->addList($order_goods); model('cashier_pendorder')->commit(); return $this->success($param[ 'order_id' ]); } catch (\Exception $e) { model('cashier_pendorder')->rollback(); Log::write('挂单出现错误,错误原因:' . $e->getMessage() . $e->getFile() . $e->getLine()); return $this->error(); } } /** * 挂单表编辑 * @param $data * @param $where * @return array */ public function update($data, $where) { $res = model('cashier_pendorder')->update($data, $where); if ($res) { return $this->success($res); } else { return $this->error(); } } /** * 删除订单 * @param $param */ public function delete($param) { model('cashier_pendorder')->startTrans(); try { $res = model('cashier_pendorder')->delete([ [ 'site_id', '=', $param[ 'site_id' ] ], [ 'store_id', '=', $param[ 'store_id' ] ], [ 'order_id', '=', $param[ 'order_id' ] ] ]); if (!$res) { model('cashier_pendorder')->rollback(); return $this->error(); } model('cashier_pendorder_goods')->delete([ [ 'order_id', '=', $param[ 'order_id' ] ] ]); model('cashier_pendorder')->commit(); return $this->success(); } catch (\Exception $e) { model('cashier_pendorder')->rollback(); Log::write('挂单删除出现错误,错误原因:' . $e->getMessage() . $e->getFile() . $e->getLine()); return $this->error(); } } /** * 查询挂单分页列表 * @param array $condition * @param bool $field * @param string $order * @param int $page * @param int $list_rows * @param string $alias * @param array $join * @return array */ public function getOrderPageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = []) { $data = model('cashier_pendorder')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join); return $this->success($data); } /** * 查询挂单商品项列表 * @param array $condition * @param bool $field * @param string $order * @param string $alias * @param array $join * @return array */ public function getOrderGoodsList($condition = [], $field = true, $order = '', $alias = 'a', $join = []) { $list = model('cashier_pendorder_goods')->getList($condition, $field, $order, $alias, $join); foreach ($list as $k => $v) { if (isset($v[ 'num' ])) { $list[ $k ][ 'num' ] = numberFormat($list[ $k ][ 'num' ]); } } return $this->success($list); } }