|
|
|
@ -57,7 +57,7 @@ class OrderService implements OrderServiceInterface |
|
|
|
|
|
|
|
// 店铺IDs
|
|
|
|
$dataMain['store_ids'] = ''; |
|
|
|
$storeList = json_decode(json_encode($data['store_list']), true); |
|
|
|
$storeList = json_decode(html_entity_decode($data['store_list']), true); |
|
|
|
if (!is_array($storeList)||empty($storeList)) { |
|
|
|
Db::rollBack(); |
|
|
|
return '订单中商品不存在或已失效'; |
|
|
|
@ -72,15 +72,19 @@ class OrderService implements OrderServiceInterface |
|
|
|
$currentTime = time(); |
|
|
|
$dataMain['time'] = date('Y-m-d H:i:s', $currentTime); |
|
|
|
$dataMain['time_add'] = $currentTime; |
|
|
|
$dataMain['pay_time'] = date('Y-m-d H:i:s', $currentTime); |
|
|
|
$dataMain['state'] = OrderMain::ORDER_STATE_UNPAY; |
|
|
|
$dataMain['code'] = $dataMain['global_order_id']; |
|
|
|
$dataMain['jj_note'] = ''; |
|
|
|
|
|
|
|
// 主订单模型保存
|
|
|
|
$orderMain = OrderMain::create($dataMain); |
|
|
|
$orderMainId = $orderMain->id; |
|
|
|
|
|
|
|
// 统计订单中所有店铺当日订单数,做店铺订单序号
|
|
|
|
$countsArr = Order::query()->select('COUNT(*) AS count, id') |
|
|
|
$countsArr = Order::query() |
|
|
|
->selectRaw('COUNT(*) AS count') |
|
|
|
->select('id') |
|
|
|
->whereIn('store_id', explode(',', $dataMain['store_ids'])) |
|
|
|
->where(['type' => OrderMain::ORDER_TYPE_ONLINE]) |
|
|
|
->whereBetween('time', [date('Y-m-d 00:00:00'), date('Y-m-d 23:59:59')]) |
|
|
|
@ -102,14 +106,14 @@ class OrderService implements OrderServiceInterface |
|
|
|
'order_num' => 's'.date('YmdHis', time()) . rand(1111, 9999), |
|
|
|
'user_id' => $orderMain->user_id, |
|
|
|
'store_id' => $item['store_id'], |
|
|
|
'order_main_id' => $orderMain, |
|
|
|
'order_main_id' => $orderMainId, |
|
|
|
'state' => OrderMain::ORDER_STATE_UNPAY, |
|
|
|
'tel' => $orderMain->tel, |
|
|
|
'name' => $orderMain->name, |
|
|
|
'address' => $orderMain->address, |
|
|
|
'area' => $orderMain->area, |
|
|
|
'time' => date("Y-m-d H:i:s"), |
|
|
|
'note' => $item['note'], |
|
|
|
'note' => $item['note'] ?? '', |
|
|
|
'delivery_time' => $orderMain->delivery_time, |
|
|
|
'type' => $orderMain->type, |
|
|
|
'lat' => $orderMain->lat, |
|
|
|
@ -127,10 +131,13 @@ class OrderService implements OrderServiceInterface |
|
|
|
'xyh_money' => floatval($item['xyh_money']), |
|
|
|
'oid' => (isset($storeOrderCounts[$item['store_id']]) ? $item['store_id'] : 0) + 1, |
|
|
|
'time_add' => date("Y-m-d H:i:s"), |
|
|
|
'jj_note' => '', |
|
|
|
'form_id' => '', |
|
|
|
'form_id2' => '', |
|
|
|
'code' => '', |
|
|
|
]; |
|
|
|
|
|
|
|
$order = Order::create($dataChild); |
|
|
|
$orderChildId = $order->id; |
|
|
|
$orderChildId = Order::query()->insertGetId($dataChild); |
|
|
|
|
|
|
|
// 子订单内商品处理
|
|
|
|
$goodsAmountTotal = 0; |
|
|
|
@ -140,7 +147,6 @@ class OrderService implements OrderServiceInterface |
|
|
|
return '订单商品异常'; |
|
|
|
} |
|
|
|
foreach ($item['good_list'] as &$goods) { |
|
|
|
|
|
|
|
$goodsAmount = bcadd(floatval($goods['money']), floatval($goods['box_money'])); |
|
|
|
$goodsAmount = bcmul($goodsAmount, $goods['num']); |
|
|
|
$goodsAmountTotal = bcadd($goodsAmountTotal, $goodsAmount); |
|
|
|
@ -179,21 +185,27 @@ class OrderService implements OrderServiceInterface |
|
|
|
if ($goodsItem['combination_id'] > 0) { |
|
|
|
|
|
|
|
$goods = SpecCombination::query() |
|
|
|
->select('id, number AS inventory') |
|
|
|
->with(['goods' => function($query){ |
|
|
|
$query->select(['name', 'is_max']); |
|
|
|
}]) |
|
|
|
->select(['id', 'number AS inventory']) |
|
|
|
->where(['id' => $goodsItem['combination_id']]) |
|
|
|
->first(); |
|
|
|
->first() |
|
|
|
->toArray(); |
|
|
|
$goods->name = $goods->goods->name; |
|
|
|
$goods->is_max = $goods->goods->is_max; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$goods = Goods::query() |
|
|
|
->select('id, name, is_max, inventory') |
|
|
|
->select(['id', 'name', 'is_max', 'inventory']) |
|
|
|
->where(['id' => $goodsItem['good_id']]) |
|
|
|
->first(); |
|
|
|
->first() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var_dump('$goods', $goods); |
|
|
|
if (!$goods) { |
|
|
|
Db::rollBack(); |
|
|
|
return '缺少商品'; |
|
|
|
@ -243,7 +255,7 @@ class OrderService implements OrderServiceInterface |
|
|
|
$goods['combination_id'] = $value['combination_id']; |
|
|
|
$orderGoods[] = $goods; |
|
|
|
} |
|
|
|
|
|
|
|
var_dump('$orderGoods', $orderGoods); |
|
|
|
$addOrderGoods = OrderGoods::query()->insert($orderGoods); |
|
|
|
if (!$addOrderGoods) { |
|
|
|
Db::rollBack(); |
|
|
|
@ -324,7 +336,7 @@ class OrderService implements OrderServiceInterface |
|
|
|
} |
|
|
|
|
|
|
|
Db::commit(); |
|
|
|
|
|
|
|
return $orderMainId; |
|
|
|
|
|
|
|
} catch (Exception $e) { |
|
|
|
|
|
|
|
@ -332,16 +344,6 @@ class OrderService implements OrderServiceInterface |
|
|
|
return $e->getMessage(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 订单成功后处理
|
|
|
|
if ($orderMainId) { |
|
|
|
|
|
|
|
// 处理喇叭播报
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return $orderMainId; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|