数据生成

This commit is contained in:
邓皓元 2019-04-24 16:24:01 +08:00
parent c8da6621f1
commit 602bade2ff
2 changed files with 32 additions and 29 deletions

View File

@ -183,6 +183,7 @@ class FlowPoolController extends Controller
*/
public function flows()
{
begin_time_consuming();
$pool_id = $this->request->get('pool_id');
$month = $this->request->time('month');

View File

@ -22,7 +22,8 @@ CREATE OR REPLACE FUNCTION GET_TIMELINES(INT8[])
service_start_at TIMESTAMP,
service_end_at TIMESTAMP
)
AS $$
AS
$$
DECLARE
activate_cards JSONB := '[]';
packages JSONB := '[]';
@ -38,20 +39,17 @@ BEGIN
FROM (SELECT cards.sim, cards.virtual_activated_at FROM vd.cards WHERE cards.sim = ANY ($1)) t;
SELECT array_to_json(array_agg(row_to_json(t))) INTO packages
FROM (SELECT virtual_packages.id, virtual_packages.service_months, virtual_packages.effect_months, virtual_packages.effect_months FROM vd.virtual_packages) t;
FROM (SELECT virtual_packages.id,
virtual_packages.service_months,
virtual_packages.effect_months,
virtual_packages.delay_months
FROM vd.virtual_packages) t;
query := 'SELECT id, type, sim, package_id, created_at, counts, service_start_at, service_end_at
FROM vd.virtual_order_cards_partition
WHERE sim = ANY($1)
ORDER BY sim ASC, created_at ASC';
SELECT array_agg(row_to_json(t)) INTO orders
FROM EXECUTE query;
RAISE NOTICE '%s', orders;
FOR order_row IN EXECUTE query USING $1
LOOP
SELECT value ->> 'virtual_activated_at' INTO activated_at
@ -79,11 +77,13 @@ BEGIN
IF (temp_service_end_at > order_row.created_at) THEN
temp_service_start_at := TO_CHAR(temp_service_end_at + '1 month'::INTERVAL, 'YYYY-MM-01 00:00:00');
ELSE
temp_service_start_at := TO_CHAR(order_row.created_at + (package_row->>'effect_months' || ' month')::INTERVAL,
temp_service_start_at :=
TO_CHAR(order_row.created_at + (package_row ->> 'effect_months' || ' month')::INTERVAL,
'YYYY-MM-01 00:00:00');
END IF;
temp_service_end_at :=
temp_service_start_at + order_row.counts * (package_row->>'service_months' || ' month')::INTERVAL +
temp_service_start_at +
order_row.counts * (package_row ->> 'service_months' || ' month')::INTERVAL +
(package_row ->> 'delay_months' || ' month')::INTERVAL - '1 second'::INTERVAL;
ELSE
-- 先购买了加油包后再激活的
@ -95,11 +95,13 @@ BEGIN
ELSE
-- 延时生效
temp_service_start_at :=
TO_CHAR(activated_at + (package_row->>'effect_months' || ' month')::INTERVAL, 'YYYY-MM-01 00:00:00');
TO_CHAR(activated_at + (package_row ->> 'effect_months' || ' month')::INTERVAL,
'YYYY-MM-01 00:00:00');
END IF;
ELSE
-- 延时生效
temp_service_start_at := TO_CHAR(order_row.created_at + (package_row->>'effect_months' || ' month')::INTERVAL,
temp_service_start_at :=
TO_CHAR(order_row.created_at + (package_row ->> 'effect_months' || ' month')::INTERVAL,
'YYYY-MM-01 00:00:00');
END IF;
temp_service_end_at := temp_service_start_at + (package_row ->> 'service_months' || ' month')::INTERVAL +