Browse Source

feat: update

jerry 2 months ago
parent
commit
949535cb8d
3 changed files with 17 additions and 4 deletions
  1. 1 0
      app/models/product.py
  2. 4 2
      app/schemas/product.py
  3. 12 2
      app/services/product_service.py

+ 1 - 0
app/models/product.py

@@ -21,6 +21,7 @@ class VasProduct(Base):
 
     schema_id = Column(Integer)
     enabled = Column(Integer, default=1)
+    recommend_score = Column(Integer, default=0)
 
     created_at = Column(DateTime, default=datetime.utcnow)
     updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

+ 4 - 2
app/schemas/product.py

@@ -16,7 +16,8 @@ class VasProductBase(BaseModel):
     extra_fields: Optional[Dict[str, Any]] = None
     schema_id: Optional[int] = None
     enabled: Optional[int] = None
-    
+    recommend_score: Optional[int] = None
+
     @field_validator("extra_fields", mode="before")
     def normalize_json_field(cls, v):
         if v is None:
@@ -43,7 +44,8 @@ class VasProductCreate(VasProductBase):
     price_currency: str
 
     schema_id: Optional[int]
-    
+    recommend_score: int = 0
+
 class VasProductUpdate(VasProductBase):
     pass
 

+ 12 - 2
app/services/product_service.py

@@ -79,7 +79,12 @@ class ProductService:
             stmt=stmt,
             model=VasProduct,
             keyword=keyword,
-            fields=["title", "provider", "description"],
+            fields=["title", "provider", "description", "country", "city"],
+        )
+
+        stmt = stmt.order_by(
+            VasProduct.recommend_score.desc(),
+            VasProduct.created_at.desc(),
         )
 
         return await paginate(db, stmt, page, size)
@@ -108,7 +113,12 @@ class ProductService:
             stmt=stmt,
             model=VasProduct,
             keyword=keyword,
-            fields=["title", "provider", "description"],
+            fields=["title", "provider", "description", "country", "city"],
+        )
+
+        stmt = stmt.order_by(
+            VasProduct.recommend_score.desc(),
+            VasProduct.created_at.desc(),
         )
 
         return await paginate(db, stmt, page, size)