| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- """CRUD - 商品参数模板"""
- from typing import List, Optional
- from sqlalchemy.orm import Session
- from sqlalchemy import or_
- from app.crud.base import CRUDBase, HistoryCRUD
- from app.models.product_parameter import BasProductParameter, BasProductParameterHis
- from app.schemas.product_parameter import ProductParameterCreate, ProductParameterUpdate
- class ProductParameterCRUD(CRUDBase[BasProductParameter]):
- """商品参数模板CRUD操作"""
- def get_multi_paged(
- self,
- db: Session,
- skip: int = 0,
- limit: int = 10,
- is_active: Optional[int] = None,
- keyword: Optional[str] = None,
- order_by: str = "sort_order",
- order_type: str = "asc"
- ) -> tuple:
- """分页获取参数列表"""
- query = db.query(self.model).filter(self.model.is_del == 0)
-
- if is_active is not None:
- query = query.filter(self.model.is_active == is_active)
-
- if keyword:
- query = query.filter(
- or_(
- self.model.name.like(f"%{keyword}%"),
- self.model.code.like(f"%{keyword}%")
- )
- )
-
- total = query.count()
-
- order_column = getattr(self.model, order_by, None)
- if order_column:
- if order_type == "asc":
- query = query.order_by(order_column.asc())
- else:
- query = query.order_by(order_column.desc())
- else:
- query = query.order_by(self.model.sort_order.asc())
-
- items = query.offset(skip).limit(limit).all()
- return items, total
- def get_active_all(self, db: Session) -> List[BasProductParameter]:
- """获取所有启用的参数"""
- return db.query(self.model).filter(
- self.model.is_del == 0,
- self.model.is_active == 1
- ).order_by(self.model.sort_order.asc()).all()
- def get_by_code(self, db: Session, code: str) -> Optional[BasProductParameter]:
- """根据编码获取参数"""
- return db.query(self.model).filter(
- self.model.code == code,
- self.model.is_del == 0
- ).first()
- def code_exists(self, db: Session, code: str, exclude_id: str = None) -> bool:
- """检查编码是否已存在"""
- query = db.query(self.model).filter(
- self.model.code == code,
- self.model.is_del == 0
- )
- if exclude_id:
- query = query.filter(self.model.id != exclude_id)
- return query.first() is not None
- class ProductParameterHisCRUD(HistoryCRUD[BasProductParameterHis]):
- """商品参数模板历史CRUD操作"""
- pass
- product_parameter = ProductParameterCRUD(BasProductParameter)
- product_parameter_his = ProductParameterHisCRUD(BasProductParameterHis)
|