from models.consultant import Consultant from schemas.consultant import ConsultantCreate, ConsultantUpdate from sqlalchemy.orm import Session def create_consultant(db:Session, obj_in: ConsultantCreate): try: db_obj = Consultant(**obj_in.model_dump()) db.add(db_obj) except: db.rollback() return False else: db.commit() return db_obj # 查询全部可分页(过滤已删除) def get_consultant_list( db: Session, page: int = 1, page_size: int = 20, name: str | None = None, phone: str | None = None ): page_size = max(1, min(page_size, 100)) skip = (page - 1) * page_size query = db.query(Consultant).filter(Consultant.is_deleted == 0) # 有传参数才追加过滤条件 if name: query = query.filter(Consultant.consultant_name.like(f"%{name}%")) if phone: query = query.filter(Consultant.phone.like(f"%{phone}%")) total = query.count() items = query.offset(skip).limit(page_size).all() return { "items": items, "total": total, "page": page, "page_size": page_size } # 根据id查单条 def get_consultant_by_id(db:Session, cid: int): return db.query(Consultant).filter(Consultant.id == cid, Consultant.is_deleted == 0 ).first() # 修改 def update_consultant(db: Session, cid: int, update_data: dict): try: db_obj = db.query(Consultant).filter( Consultant.id == cid, Consultant.is_deleted == 0 ).first() if not db_obj: return None # 循环赋值 for k, v in update_data.items(): setattr(db_obj, k, v) db.commit() db.refresh(db_obj) # 刷新从数据库拿最新数据(updated_at) return db_obj except Exception: db.rollback() return None # 逻辑删除(只改is_deleted=1) def delete_consultant(db:Session, cid: int): try: db_obj = get_consultant_by_id(db, cid) if not db_obj: return None db_obj.is_deleted = 1 except: db.rollback() return None else: db.commit() return db_obj