crud.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from app.api.v1.module_system.auth.schema import AuthSchema
  2. from app.core.base_crud import CRUDBase
  3. from app.core.exceptions import CustomException
  4. from .model import EmployeeModel
  5. from .schema import EmployeeCreateSchema, EmployeeOutSchema
  6. class EmployeeCRUD(CRUDBase[EmployeeModel, EmployeeCreateSchema, EmployeeCreateSchema]):
  7. """员工 CRUD 操作"""
  8. def __init__(self, auth: AuthSchema) -> None:
  9. self.auth = auth
  10. super().__init__(model=EmployeeModel, auth=auth)
  11. async def get_by_employee_id(
  12. self, employee_id: str
  13. ) -> EmployeeModel | None:
  14. """根据员工ID查询员工(业务主键)"""
  15. return await self.get(employee_id=employee_id)
  16. async def update_by_employee_id(
  17. self, employee_id: str, data: dict
  18. ) -> EmployeeModel | None:
  19. """根据员工ID更新员工(业务主键)"""
  20. obj = await self.get(employee_id=employee_id, preload=[])
  21. if not obj:
  22. raise CustomException(msg="更新失败!对象不存在")
  23. if self.auth.user and hasattr(obj, "updated_id"):
  24. setattr(obj, "updated_id", self.auth.user.id)
  25. for key, value in data.items():
  26. if hasattr(obj, key):
  27. setattr(obj, key, value)
  28. await self.auth.db.flush()
  29. await self.auth.db.refresh(obj)
  30. verify_obj = await self.get(employee_id=employee_id, preload=[])
  31. if not verify_obj:
  32. raise CustomException(msg="更新失败!对象不存在或无权限访问")
  33. return obj
  34. async def delete_by_employee_id(self, employee_id: str) -> None:
  35. """根据员工ID将员工状态更新为解约(业务主键)"""
  36. from .enums import EmployeeStatusEnum
  37. obj = await self.get(employee_id=employee_id, preload=[])
  38. if not obj:
  39. return # 员工不存在,直接返回
  40. # 更新状态为解约
  41. obj.status = EmployeeStatusEnum.EMPLOYEE_UNSIGN.value
  42. if self.auth.user and hasattr(obj, "updated_id"):
  43. setattr(obj, "updated_id", self.auth.user.id)
  44. await self.auth.db.flush()
  45. await self.auth.db.refresh(obj)