fix: 活动列表image字段统一调用resolve_url

根因: 数据库中活动image字段格式不统一,早期数据是完整URL,
新上传数据是相对路径/oss/...,桌面端直接使用导致相对路径404。

修复:
- list_activities(运营端) 对image调用resolve_url
- list_activities_public(用户端) 对image调用resolve_url
- get_event_detail(活动详情) 对image调用resolve_url
resolve_url会自动将/oss/路径转为CDN鉴权直链,完整URL原样返回
This commit is contained in:
Pine
2026-09-13 22:57:57 +08:00
parent b701f8ea95
commit e1bcacef60
+7
View File
@@ -62,7 +62,10 @@ def delete_course(course_id: str) -> bool:
# ── 活动(events 表)─────────────────────────────────────────────────────
def list_activities(status: str | None = None) -> list[dict]:
from app.infrastructure.oss import resolve_url
rows = tdb.list_all("events", "start_at DESC")
for r in rows:
r["image"] = resolve_url(r.get("image", "") or "")
if status:
return [r for r in rows if r.get("status") == status]
return rows
@@ -83,11 +86,13 @@ def create_activity(data: dict) -> dict:
def list_activities_public(user_id: str | None = None, status: str | None = None) -> list[dict]:
"""公开活动列表;标注 is_mine(我发布的)与 my_registered(我已报名)。"""
from app.infrastructure.oss import resolve_url
rows = tdb.list_all("events", "start_at DESC")
bookings = tdb.list_all("bookings")
out: list[dict] = []
for r in rows:
r = dict(r)
r["image"] = resolve_url(r.get("image", "") or "")
r["is_mine"] = bool(user_id and r.get("publisher_id") == user_id)
r["my_registered"] = bool(
user_id and any(
@@ -166,10 +171,12 @@ def delete_activity_owned(event_id: str, user_id: str) -> bool:
def get_event_detail(user_id: str | None, event_id: str) -> dict | None:
"""活动详情:发布者附带报名列表(bookings);非发布者只返回活动与我的报名标记。"""
from app.infrastructure.oss import resolve_url
ev = tdb.fetch_by_id("events", event_id)
if ev is None:
return None
ev = dict(ev)
ev["image"] = resolve_url(ev.get("image", "") or "")
is_mine = bool(user_id and ev.get("publisher_id") == user_id)
ev["is_mine"] = is_mine
ev["my_registered"] = False