From 22674fbc63d9cb03a20e882d44e14f18fc8f614b Mon Sep 17 00:00:00 2001 From: Pine Date: Sat, 5 Sep 2026 10:50:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=82=E5=9C=BA=E7=9B=AE=E5=BD=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20region=20=E8=BF=87=E6=BB=A4=EF=BC=88tags=5Fjson=20L?= =?UTF-8?q?IKE=EF=BC=8C=E5=A6=82=20yunnan-opc=20=E4=B8=93=E5=8C=BA?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/market/routers.py | 4 ++-- app/market/service.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/market/routers.py b/app/market/routers.py index c090115..fe28745 100644 --- a/app/market/routers.py +++ b/app/market/routers.py @@ -80,7 +80,7 @@ async def market_overview(db: Database = Depends(get_db)): @router.get("/items", summary="目录列表(仅 published,游客可访问)") async def market_items( item_type: str | None = None, - q: str = "", category: str = "", featured: int = 0, + q: str = "", category: str = "", featured: int = 0, region: str = "", page: int = 1, page_size: int = 50, db: Database = Depends(get_db), user: dict | None = Depends(optional_current_user), @@ -89,7 +89,7 @@ async def market_items( raise HTTPException(status_code=400, detail="item_type 仅支持 skill/plugin/app") data = await service.list_items( db, item_type=item_type, q=q, category=category, - featured_only=bool(featured), status="published", + featured_only=bool(featured), region=region, status="published", page=page, page_size=page_size, ) if user: diff --git a/app/market/service.py b/app/market/service.py index d4247c4..6b10ad5 100644 --- a/app/market/service.py +++ b/app/market/service.py @@ -80,9 +80,10 @@ def _order_view(o: MarketPurchaseOrder) -> dict: # =========================================================================== async def list_items(db, *, item_type: str | None = None, q: str = "", category: str = "", featured_only: bool = False, + region: str = "", status: str = "published", page: int = 1, page_size: int = 50, mine: bool = False) -> dict: - """目录列表。status 传空串 = 全状态(管理端用)。""" + """目录列表。status 传空串 = 全状态(管理端用)。region 按 tags_json 过滤(专区标记,如 yunnan-opc)。""" stmt = select(MarketItem).order_by(MarketItem.is_featured.desc(), MarketItem.created_at.desc()) if item_type: stmt = stmt.where(MarketItem.item_type == item_type) @@ -92,6 +93,8 @@ async def list_items(db, *, item_type: str | None = None, q: str = "", stmt = stmt.where(MarketItem.category == category) if featured_only: stmt = stmt.where(MarketItem.is_featured == 1) + if region: + stmt = stmt.where(MarketItem.tags_json.like(f"%{region}%")) if q: like = f"%{q}%" stmt = stmt.where((MarketItem.name.like(like)) | (MarketItem.description.like(like)) | (MarketItem.slug.like(like)))