vd/order.pgsql
2019-02-10 23:43:51 +08:00

105 lines
2.9 KiB
PL/PgSQL

INSERT INTO virtual_orders ( type, sn, "source", company_id, package_id, product_id, pay_channel, unit_price, counts, total_price, custom_price, order_at, created_at, updated_at ) (
SELECT
MIN(type),
order_sn,
1,
MIN ( company_id ),
MIN ( package_id ),
MIN ( product_id ),
MIN ( pay_channel ),
MIN ( unit_price ),
COUNT ( * ) AS counts,
MIN ( unit_price ) * COUNT ( * ) AS total_price,
MIN ( unit_price ) * COUNT ( * ) AS custom_price,
MIN ( created_at ) AS order_at,
MIN ( created_at ) AS created_at,
MIN ( created_at ) AS updated_at
FROM
logs
GROUP BY
order_sn
) ON conflict (
sn,
COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO
NOTHING;
INSERT INTO virtual_order_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) (
SELECT
logs."type" AS "type",
logs.sim :: BIGINT AS sim,
virtual_orders.ID AS order_id,
logs.company_id,
logs.package_id,
logs.counts,
logs.created_at AS created_at,
logs.created_at AS updated_at
FROM
logs
LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn
WHERE logs.type = 0
) ON conflict (
sim,
order_id,
COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO
NOTHING;
INSERT INTO virtual_order_renewal_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) (
SELECT
logs."type" AS "type",
logs.sim :: BIGINT AS sim,
virtual_orders.ID AS order_id,
logs.company_id,
logs.package_id,
logs.counts,
logs.created_at AS created_at,
logs.created_at AS updated_at
FROM
logs
LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn
WHERE logs.type = 1
) ON conflict (
sim,
order_id,
COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO
NOTHING;
INSERT INTO virtual_order_renewal_package_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) (
SELECT
logs."type" AS "type",
logs.sim :: BIGINT AS sim,
virtual_orders.ID AS order_id,
logs.company_id,
logs.package_id,
logs.counts,
logs.created_at AS created_at,
logs.created_at AS updated_at
FROM
logs
LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn
WHERE logs.type = 2
) ON conflict (
sim,
order_id,
COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO
NOTHING;
INSERT INTO virtual_order_flows_package_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) (
SELECT
logs."type" AS "type",
logs.sim :: BIGINT AS sim,
virtual_orders.ID AS order_id,
logs.company_id,
logs.package_id,
logs.counts,
logs.created_at AS created_at,
logs.created_at AS updated_at
FROM
logs
LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn
WHERE logs.type = 3
) ON conflict (
sim,
order_id,
COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO
NOTHING;