diff --git a/app/api/routers/rbac_service_market.py b/app/api/routers/rbac_service_market.py index a02925d..eb7b9f3 100644 --- a/app/api/routers/rbac_service_market.py +++ b/app/api/routers/rbac_service_market.py @@ -192,32 +192,29 @@ async def service_detail( item["gallery"] = _parse_json(item.get("gallery_json"), []) item["skus"] = _parse_json(item.get("skus_json"), []) - # 浏览量自增(异步,不阻塞响应) - import asyncio - async def _incr_view(): - try: - await db.session.execute( - text("UPDATE opc_services SET view_count = view_count + 1 WHERE id = :id"), - {"id": service_id}, - ) - await db.session.commit() - # 记录浏览历史 - await db.session.execute( - text("""INSERT INTO service_views (id, service_id, user_id, ip, user_agent, created_at) - VALUES (:id, :service_id, :user_id, :ip, :ua, :now)"""), - { - "id": _gen_id("sv_"), - "service_id": service_id, - "user_id": user.get("id", "") if user else "", - "ip": "", - "ua": "", - "now": _now(), - }, - ) - await db.session.commit() - except Exception: - pass - asyncio.create_task(_incr_view()) + # 浏览量自增(同步执行,避免异步任务导致会话状态冲突) + try: + await db.session.execute( + text("UPDATE opc_services SET view_count = view_count + 1 WHERE id = :id"), + {"id": service_id}, + ) + await db.session.commit() + # 记录浏览历史 + await db.session.execute( + text("""INSERT INTO service_views (id, service_id, user_id, ip, user_agent, created_at) + VALUES (:id, :service_id, :user_id, :ip, :ua, :now)"""), + { + "id": _gen_id("sv_"), + "service_id": service_id, + "user_id": user.get("id", "") if user else "", + "ip": "", + "ua": "", + "now": _now(), + }, + ) + await db.session.commit() + except Exception: + pass # 评价统计 review_sql = """