From 85dfd3352e13467910d48c7b7563b536aff42fbc Mon Sep 17 00:00:00 2001 From: denghy Date: Wed, 23 Jan 2019 10:40:20 +0800 Subject: [PATCH] =?UTF-8?q?counts=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Domains/Virtual/Jobs/LogSyncJob.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Domains/Virtual/Jobs/LogSyncJob.php b/app/Domains/Virtual/Jobs/LogSyncJob.php index ad841348..51134627 100644 --- a/app/Domains/Virtual/Jobs/LogSyncJob.php +++ b/app/Domains/Virtual/Jobs/LogSyncJob.php @@ -96,6 +96,8 @@ class LogSyncJob implements ShouldQueue // 按规则生成订单编号 (月6+类型1+公司3+套餐4+价格6) $sn = date('Ym', $value['create_time']) . $type . sprintf('%03d', $company['id']) . sprintf('%04d', $package['id']) . sprintf('%06d', $custom_price); + $counts = isset($orderArray[$sn]) ? $orderArray[$sn]['counts'] + 1 : 1; + $orderArray[$sn] = [ 'sn' => $sn, 'source' => 1, @@ -105,7 +107,7 @@ class LogSyncJob implements ShouldQueue 'product_id' => $product['id'], 'pay_channel' => $pay_channel, 'unit_price' => $unit_price, - 'counts' => 1, + 'counts' => $counts, 'total_price' => $unit_price, 'custom_price' => $custom_price, 'order_at' => date('Y-m-d H:i:s', $value['create_time']), @@ -114,13 +116,17 @@ class LogSyncJob implements ShouldQueue 'created_at' => date('Y-m-d H:i:s', $value['create_time']), ]; + $k = $sn . '-' . $value['sim']; + + $counts = isset($relationArray[$k]) ? $relationArray[$k]['counts'] + 1 : 1; + $relationArray[] = [ 'order_sn' => $sn, 'type' => $type, 'sim' => $value['sim'], 'company_id' => $company['id'], 'package_id' => $package['id'], - 'counts' => 1, + 'counts' => $counts, 'created_at' => date('Y-m-d H:i:s', $value['create_time']), 'updated_at' => date('Y-m-d H:i:s'), ]; @@ -132,9 +138,9 @@ class LogSyncJob implements ShouldQueue $sql = $builder->getGrammar()->compileInsert($builder, $orderArray); $sql .= " on conflict (sn, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)) do update set - counts=virtual_orders.counts + 1, - total_price=virtual_orders.unit_price * (virtual_orders.counts + 1), - custom_price=virtual_orders.unit_price * (virtual_orders.counts + 1)"; + counts=virtual_orders.counts + excluded.counts, + total_price=virtual_orders.unit_price * (virtual_orders.counts + excluded.counts), + custom_price=virtual_orders.unit_price * (virtual_orders.counts + excluded.counts)"; $builder->connection->insert($sql, Arr::flatten($orderArray, 1)); @@ -150,7 +156,7 @@ class LogSyncJob implements ShouldQueue $sql = $builder->getGrammar()->compileInsert($builder, $relationArray); $sql .= " on conflict (type, order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)) do update set - counts=virtual_order_cards_partition.counts + 1"; + counts=virtual_order_cards_partition.counts + excluded.counts"; $builder->connection->insert($sql, Arr::flatten($relationArray, 1)); } catch (\Exception $e) {