2026-05-15 11:47:29 +08:00
|
|
|
|
import csv
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExportService:
|
|
|
|
|
|
def __init__(self) -> None:
|
|
|
|
|
|
self.export_root = Path("D:/tmp/order-flow-exports")
|
|
|
|
|
|
self.export_root.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
|
|
def build_performance_export(self, report: dict) -> dict:
|
|
|
|
|
|
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
|
|
|
|
|
|
suffix = report["stat_type"]
|
|
|
|
|
|
file_name = f"performance-{suffix}-{timestamp}.csv"
|
|
|
|
|
|
file_path = self.export_root / file_name
|
|
|
|
|
|
|
|
|
|
|
|
with file_path.open("w", encoding="utf-8-sig", newline="") as csvfile:
|
|
|
|
|
|
writer = csv.writer(csvfile)
|
|
|
|
|
|
writer.writerow(["统计周期", "订单数", "订单金额", "固定提成", "分类明细"])
|
|
|
|
|
|
for item in report["list"]:
|
|
|
|
|
|
category_text = ";".join(
|
|
|
|
|
|
f"{category['category_name']}:{category['amount']:.2f}"
|
|
|
|
|
|
for category in item.get("category_amounts", [])
|
|
|
|
|
|
)
|
|
|
|
|
|
writer.writerow(
|
|
|
|
|
|
[
|
|
|
|
|
|
item["stat_period"],
|
|
|
|
|
|
item["order_count"],
|
|
|
|
|
|
f"{item['order_amount']:.2f}",
|
|
|
|
|
|
f"{item['commission_amount']:.2f}",
|
|
|
|
|
|
category_text,
|
|
|
|
|
|
]
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
"file_name": file_name,
|
|
|
|
|
|
"file_path": str(file_path),
|
|
|
|
|
|
"file_size": file_path.stat().st_size,
|
|
|
|
|
|
"content_type": "text/csv",
|
2026-05-15 13:17:45 +08:00
|
|
|
|
"object_key": f"exports/performance/{file_name}",
|
2026-05-15 11:47:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export_service = ExportService()
|