92 lines
2.9 KiB
Python
92 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""团购/套餐定义加载器"""
|
|
|
|
from ..base_loader import BaseLoader
|
|
|
|
|
|
class PackageDefinitionLoader(BaseLoader):
|
|
"""写入 dim_package_coupon"""
|
|
|
|
def upsert_packages(self, records: list) -> tuple:
|
|
if not records:
|
|
return (0, 0, 0)
|
|
|
|
sql = """
|
|
INSERT INTO billiards.dim_package_coupon (
|
|
store_id,
|
|
package_id,
|
|
package_code,
|
|
package_name,
|
|
table_area_id,
|
|
table_area_name,
|
|
selling_price,
|
|
duration_seconds,
|
|
start_time,
|
|
end_time,
|
|
type,
|
|
is_enabled,
|
|
is_delete,
|
|
usable_count,
|
|
creator_name,
|
|
date_type,
|
|
group_type,
|
|
coupon_money,
|
|
area_tag_type,
|
|
system_group_type,
|
|
card_type_ids,
|
|
raw_data
|
|
)
|
|
VALUES (
|
|
%(store_id)s,
|
|
%(package_id)s,
|
|
%(package_code)s,
|
|
%(package_name)s,
|
|
%(table_area_id)s,
|
|
%(table_area_name)s,
|
|
%(selling_price)s,
|
|
%(duration_seconds)s,
|
|
%(start_time)s,
|
|
%(end_time)s,
|
|
%(type)s,
|
|
%(is_enabled)s,
|
|
%(is_delete)s,
|
|
%(usable_count)s,
|
|
%(creator_name)s,
|
|
%(date_type)s,
|
|
%(group_type)s,
|
|
%(coupon_money)s,
|
|
%(area_tag_type)s,
|
|
%(system_group_type)s,
|
|
%(card_type_ids)s,
|
|
%(raw_data)s
|
|
)
|
|
ON CONFLICT (store_id, package_id) DO UPDATE SET
|
|
package_code = EXCLUDED.package_code,
|
|
package_name = EXCLUDED.package_name,
|
|
table_area_id = EXCLUDED.table_area_id,
|
|
table_area_name = EXCLUDED.table_area_name,
|
|
selling_price = EXCLUDED.selling_price,
|
|
duration_seconds = EXCLUDED.duration_seconds,
|
|
start_time = EXCLUDED.start_time,
|
|
end_time = EXCLUDED.end_time,
|
|
type = EXCLUDED.type,
|
|
is_enabled = EXCLUDED.is_enabled,
|
|
is_delete = EXCLUDED.is_delete,
|
|
usable_count = EXCLUDED.usable_count,
|
|
creator_name = EXCLUDED.creator_name,
|
|
date_type = EXCLUDED.date_type,
|
|
group_type = EXCLUDED.group_type,
|
|
coupon_money = EXCLUDED.coupon_money,
|
|
area_tag_type = EXCLUDED.area_tag_type,
|
|
system_group_type = EXCLUDED.system_group_type,
|
|
card_type_ids = EXCLUDED.card_type_ids,
|
|
raw_data = EXCLUDED.raw_data,
|
|
updated_at = now()
|
|
RETURNING (xmax = 0) AS inserted
|
|
"""
|
|
|
|
inserted, updated = self.db.batch_upsert_with_returning(
|
|
sql, records, page_size=self._batch_size()
|
|
)
|
|
return (inserted, updated, 0)
|