This commit is contained in:
2026-07-06 18:35:41 +08:00
parent cc74a2ee8b
commit c49f93dcd9
+9 -3
View File
@@ -347,7 +347,13 @@ async def export_team_credit_records(
# 生成 CSV(兼容 Excel 打开) # 生成 CSV(兼容 Excel 打开)
import csv import csv
import io import io
from datetime import datetime
def _format_dt(val):
if val is None:
return "-"
if isinstance(val, datetime):
return val.strftime("%Y-%m-%d %H:%M:%S")
return str(val)
output = io.StringIO() output = io.StringIO()
writer = csv.writer(output) writer = csv.writer(output)
@@ -360,12 +366,12 @@ async def export_team_credit_records(
item.get("amount", 0), item.get("amount", 0),
item.get("balance_after", 0), item.get("balance_after", 0),
item.get("description") or "-", item.get("description") or "-",
datetime.fromisoformat(item.get("created_at") or "-").strftime("%Y-%m-%d %H:%M:%S"), _format_dt(item.get("created_at")),
]) ])
from starlette.responses import StreamingResponse from starlette.responses import StreamingResponse
output.seek(0) output.seek(0)
filename = f"team_credits_{team.id}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" filename = f"团队积分_{team.name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"
return StreamingResponse( return StreamingResponse(
iter([output.getvalue()]), iter([output.getvalue()]),
media_type="text/csv; charset=utf-8-sig", media_type="text/csv; charset=utf-8-sig",