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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user