vd/order.pgsql
2019-02-11 18:26:30 +08:00

163 lines
5.8 KiB
PL/PgSQL

SELECT
ckb_custom_handle_log.custom_no,
min((ckb_custom.card_number)::text) AS sim,
CASE ckb_custom_handle_log.type
WHEN 13 THEN
0
WHEN 11 THEN
1
WHEN 14 THEN
2
WHEN 15 THEN
3
ELSE
NULL::integer
END AS order_type,
concat(to_char(to_timestamp((ckb_custom_handle_log.create_time)::double precision), 'YYYYMMDDHHMISS'::text), CASE ckb_custom_handle_log.type
WHEN 13 THEN
0
WHEN 11 THEN
1
WHEN 14 THEN
2
WHEN 15 THEN
3
ELSE
NULL::integer
END, CASE ckb_custom_handle_log.pay_type
WHEN 10 THEN
2
WHEN 11 THEN
3
WHEN 12 THEN
0
ELSE
NULL::integer
END, lpad((virtual_companies.id)::text, 3, '0'::text), lpad((virtual_packages.id)::text, 4, '0'::text), lpad((((ckb_custom_handle_log.order_account)::integer * 100))::text, 6, '0'::text)) AS order_sn,
COALESCE(virtual_companies.id, 0) AS company_id,
COALESCE(virtual_packages.id, 0) AS package_id,
COALESCE(min(virtual_products.id), 0) AS product_id,
CASE ckb_custom_handle_log.pay_type
WHEN 10 THEN
'wx'::text
WHEN 11 THEN
'alipay'::text
WHEN 12 THEN
'bank'::text
ELSE
NULL::text
END AS pay_channel,
((ckb_custom_handle_log.order_account)::integer * 100) AS unit_price,
to_timestamp((ckb_custom_handle_log.create_time)::double precision) AS created_at,
count(*) AS counts
FROM ((((vd_old.ckb_custom_handle_log
LEFT JOIN vd_old.ckb_custom ON (((ckb_custom.custom_no)::text = (ckb_custom_handle_log.custom_no)::text)))
LEFT JOIN virtual_companies ON ((((virtual_companies.sn)::text = concat('No', lpad((ckb_custom_handle_log.company)::text, 11, '0'::text)))
AND (virtual_companies.deleted_at IS NULL))))
LEFT JOIN virtual_packages ON ((((virtual_packages.sn)::text = (ckb_custom_handle_log.content)::text)
AND (virtual_packages.deleted_at IS NULL))))
LEFT JOIN virtual_products ON (((virtual_products.sn)::text = concat(ckb_custom_handle_log.content, '_', virtual_companies.id, '_', ((ckb_custom_handle_log.order_account)::integer * 100)))))
WHERE (ckb_custom_handle_log.type = ANY (ARRAY[11, 13, 14, 15]))
GROUP BY
ckb_custom_handle_log.create_time,
virtual_companies.id,
virtual_packages.id,
ckb_custom_handle_log.order_account,
ckb_custom_handle_log.custom_no,
ckb_custom_handle_log.type,
ckb_custom_handle_log.pay_type;
INSERT INTO virtual_orders ("type", sn, "source", company_id, package_id, product_id, pay_channel, unit_price, counts, total_price, custom_price, order_at, order_status, transaction_status, created_at, updated_at) (
SELECT
MIN(order_type),
order_sn,
1,
MIN(company_id),
MIN(package_id),
MIN(product_id),
MIN(pay_channel),
MIN(unit_price),
SUM(counts) AS counts,
MIN(unit_price) * SUM(counts) AS total_price,
MIN(unit_price) * SUM(counts) AS custom_price,
MIN(created_at) AS order_at,
4,
1,
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.order_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.order_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.order_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.order_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.order_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.order_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.order_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.order_type = 3) ON CONFLICT (sim, order_id, COALESCE(deleted_at::TIMESTAMP, '1970-01-01 08:00:00'::TIMESTAMP))
DO NOTHING;