handleData($param); if ($res['code'] != 0) return $res; $param = $res['data']; model('store_pendorder')->startTrans(); try { $order_id = model('store_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'] ]); } model('store_pendorder_goods')->addList($order_goods); model('store_pendorder')->commit(); return $this->success($order_id); } catch (\Exception $e) { model('store_pendorder')->rollback(); runlog('挂单出现错误,错误原因:'.$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; foreach ($param['goods'] as $k => $item) { $goods_info = model('goods')->getInfo([ ['site_id', '=', $param['site_id'] ], ['goods_id', '=', $item['goods_id'] ], ['goods_state', '=', 1], ['is_delete', '=', 0] ], 'discount_price,goods_type'); if (empty($goods_info)) return $this->error('', '不存在的商品!'); if (!empty($goods_info['type'])) { $sku_info = model('store_goods_sku_data')->getInfo([ ['sku_id', '=', $item['sku_id'] ],['store_id', '=', $param['store_id'] ] ], 'stock,price'); if (empty($sku_info)) return $this->error('', '不存在的商品!'); $param['goods'][$k]['price'] = $sku_info['price']; if ($item['num'] > $sku_info['stock']) return $this->error('', '商品库存不足!'); } else { $param['goods'][$k]['price'] = $goods_info['discount_price']; } $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('store_pendorder')->startTrans(); try { $condition = [ ['site_id', '=', $param['site_id'] ], ['store_id', '=', $param['store_id'] ], ['order_id', '=', $param['order_id'] ] ]; model('store_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('store_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('store_pendorder_goods')->addList($order_goods); model('store_pendorder')->commit(); return $this->success($param['order_id']); } catch (\Exception $e) { model('store_pendorder')->rollback(); runlog('挂单出现错误,错误原因:'.$e->getMessage().$e->getFile().$e->getLine()); return $this->error(); } } /** * 挂单表编辑 * @param $data * @param $where * @return array */ public function update($data, $where) { $res = model('store_pendorder')->update($data, $where); if ($res) { return $this->success($res); } else { return $this->error(); } } /** * 删除订单 * @param $param */ public function delete($param) { model('store_pendorder')->startTrans(); try { $res = model('store_pendorder')->delete([ ['site_id', '=', $param['site_id']], ['store_id', '=', $param['store_id'] ], ['order_id', '=', $param['order_id'] ] ]); if (!$res) { model('store_pendorder')->rollback(); return $this->error(); } model('store_pendorder_goods')->delete([ ['order_id', '=', $param['order_id'] ] ]); model('store_pendorder')->commit(); return $this->success(); } catch (\Exception $e) { model('store_pendorder')->rollback(); runlog('挂单删除出现错误,错误原因:'.$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('store_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 = []) { $data = model('store_pendorder_goods')->getList($condition, $field, $order, $alias, $join); return $this->success($data); } }