diff --git a/app/market/routers.py b/app/market/routers.py index 293e4cc..50ebf96 100644 --- a/app/market/routers.py +++ b/app/market/routers.py @@ -93,6 +93,11 @@ async def market_item_detail( raise HTTPException(status_code=404, detail=str(exc)) from exc if user: item["owned"] = await service.has_purchase(db, user["id"], item_id) + # 详情浏览量 +1(异步不阻塞响应) + try: + await service.bump_stats(db, item_id, views=1) + except Exception: + pass return item @@ -115,6 +120,11 @@ async def market_item_bundle( if not owned: raise HTTPException(status_code=403, detail="未购买该商品,请先完成购买") if item["item_type"] == "skill": + # skill 下载量 +1 + try: + await service.bump_stats(db, item_id, downloads=1) + except Exception: + pass return JSONResponse(service.bundle_payload(item)) # plugin / app:OSS 直链 if not item["bundle_url"]: @@ -122,10 +132,19 @@ async def market_item_bundle( key = item["bundle_url"].removeprefix("/oss/") if key == item["bundle_url"]: # 本地降级存储(/uploads/...)→ 直接重定向 + try: + await service.bump_stats(db, item_id, downloads=1) + except Exception: + pass return RedirectResponse(url=item["bundle_url"], status_code=302) url = await oss.download_url(key) resp = RedirectResponse(url=url, status_code=302) resp.headers["X-Checksum-Sha256"] = item.get("bundle_sha256", "") + # 下载量 +1 + try: + await service.bump_stats(db, item_id, downloads=1) + except Exception: + pass return resp