| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- """区域管理CRUD"""
- from typing import Optional, List
- from sqlalchemy.orm import Session
- from sqlalchemy import and_
- from app.models.models import SysRegion, SysRegionHis
- from app.crud.base import CRUDBase
- class RegionCRUD(CRUDBase[SysRegion]):
- """区域CRUD操作"""
- def get_by_code(self, db: Session, code: str) -> Optional[SysRegion]:
- """根据编码获取区域(含已删除,匹配数据库唯一索引约束)"""
- return db.query(SysRegion).filter(SysRegion.code == code).first()
- def get_active_all(self, db: Session) -> List[SysRegion]:
- """获取所有启用的区域"""
- return db.query(SysRegion).filter(
- and_(SysRegion.is_del == 0, SysRegion.is_active == True)
- ).order_by(SysRegion.sort_order.asc()).all()
- def create_with_history(self, db: Session, obj_in: dict, creator: dict = None) -> SysRegion:
- """创建区域并记录历史"""
- obj = self.create(db, obj_in, creator)
- return obj
- def update_with_history(self, db: Session, id: str, obj_in: dict, updater: dict = None) -> Optional[SysRegion]:
- """更新区域并记录历史"""
- original = self.get(db, id)
- if not original:
- return None
- his_data = {
- "id": original.id,
- "name": original.name,
- "code": original.code,
- "description": original.description,
- "sort_order": original.sort_order,
- "expected_delivery_minutes": original.expected_delivery_minutes,
- "delivery_warn_advance_minutes": original.delivery_warn_advance_minutes,
- "is_active": original.is_active,
- "create_at": original.create_at,
- "create_by": original.create_by,
- "create_name": original.create_name,
- "update_at": original.update_at,
- "update_by": original.update_by,
- }
- his = SysRegionHis(**his_data)
- db.add(his)
- return self.update(db, id, obj_in, updater)
- def soft_delete_with_history(self, db: Session, id: str) -> bool:
- """删除区域并记录历史"""
- original = self.get(db, id)
- if not original:
- return False
- his_data = {
- "id": original.id,
- "name": original.name,
- "code": original.code,
- "description": original.description,
- "sort_order": original.sort_order,
- "expected_delivery_minutes": original.expected_delivery_minutes,
- "delivery_warn_advance_minutes": original.delivery_warn_advance_minutes,
- "is_active": original.is_active,
- "create_at": original.create_at,
- "create_by": original.create_by,
- "create_name": original.create_name,
- "update_at": original.update_at,
- "update_by": original.update_by,
- }
- his = SysRegionHis(**his_data)
- db.add(his)
- return self.delete(db, id)
- region_crud = RegionCRUD(SysRegion)
|