优化同步
This commit is contained in:
parent
ebf28927a4
commit
b6f1b69f32
@ -45,6 +45,13 @@ class LogSyncJob implements ShouldQueue
|
|||||||
protected static $carrierOperators = [10 => 0, 11 => 1, 12 => 2];
|
protected static $carrierOperators = [10 => 0, 11 => 1, 12 => 2];
|
||||||
protected static $payChannels = [10 => 'wx', 11 => 'alipay', 12 => 'bank'];
|
protected static $payChannels = [10 => 'wx', 11 => 'alipay', 12 => 'bank'];
|
||||||
|
|
||||||
|
protected static $orderClasses = [
|
||||||
|
\App\Models\Virtual\OrderCard::class,
|
||||||
|
\App\Models\Virtual\OrderRenewalCard::class,
|
||||||
|
\App\Models\Virtual\OrderRenewalPackageCard::class,
|
||||||
|
\App\Models\Virtual\OrderFlowPackageCards::class,
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
@ -151,14 +158,19 @@ class LogSyncJob implements ShouldQueue
|
|||||||
unset($relationArray[$key]['order_sn']);
|
unset($relationArray[$key]['order_sn']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$builder = OrderCardPartition::query()->toBase();
|
$relationArray = array_groupBy($relationArray, 'type');
|
||||||
|
|
||||||
$sql = $builder->getGrammar()->compileInsert($builder, $relationArray);
|
foreach ($relationArray as $type => $array) {
|
||||||
|
$builder = (new $orderClasses[$type])->query()->toBase();
|
||||||
|
|
||||||
$sql .= " on conflict (type, order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)) do update set
|
$sql = $builder->getGrammar()->compileInsert($builder, $array);
|
||||||
|
|
||||||
|
$sql .= " on conflict (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)) do update set
|
||||||
counts=virtual_order_cards_partition.counts + excluded.counts";
|
counts=virtual_order_cards_partition.counts + excluded.counts";
|
||||||
|
|
||||||
$builder->connection->insert($sql, Arr::flatten($relationArray, 1));
|
$builder->connection->insert($sql, Arr::flatten($array, 1));
|
||||||
|
}
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
DB::rollback();
|
DB::rollback();
|
||||||
throw $e;
|
throw $e;
|
||||||
|
@ -36,7 +36,10 @@ CREATE TABLE virtual_order_renewal_cards PARTITION OF virtual_order_cards_partit
|
|||||||
CREATE TABLE virtual_order_renewal_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (2);
|
CREATE TABLE virtual_order_renewal_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (2);
|
||||||
CREATE TABLE virtual_order_flows_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (3);
|
CREATE TABLE virtual_order_flows_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (3);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX "virtual_order_cards_partition_order_id_sim_deleted_at_unique" ON "virtual_order_cards_partition" ("type", order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp));
|
CREATE UNIQUE INDEX "virtual_order_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp));
|
||||||
|
CREATE UNIQUE INDEX "virtual_order_renewal_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp));
|
||||||
|
CREATE UNIQUE INDEX "virtual_order_renewal_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp));
|
||||||
|
CREATE UNIQUE INDEX "virtual_order_flows_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp));
|
||||||
|
|
||||||
CREATE INDEX "virtual_order_cards_timelines_index" ON "virtual_order_cards" USING GIN (timelines_array(sim));
|
CREATE INDEX "virtual_order_cards_timelines_index" ON "virtual_order_cards" USING GIN (timelines_array(sim));
|
||||||
CREATE INDEX "virtual_order_renewal_cards_timelines_index" ON "virtual_order_renewal_cards" USING GIN (timelines_array(sim));
|
CREATE INDEX "virtual_order_renewal_cards_timelines_index" ON "virtual_order_renewal_cards" USING GIN (timelines_array(sim));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user