"""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)