| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from datetime import datetime
- from sqlalchemy import select
- from app.api.v1.module_system.auth.schema import AuthSchema
- from app.core.base_crud import CRUDBase
- from .enums import FacetofaceOrderStatus
- from .model import FacetofaceOrderModel
- from .schema import FacetofaceApplySchema
- class FacetofaceCRUD(CRUDBase[FacetofaceOrderModel, FacetofaceApplySchema, FacetofaceApplySchema]):
- """当面付申请单 CRUD"""
- def __init__(self, auth: AuthSchema) -> None:
- self.auth = auth
- super().__init__(model=FacetofaceOrderModel, auth=auth)
- async def get_by_batch_no(self, batch_no: str) -> FacetofaceOrderModel | None:
- return await self.get(batch_no=batch_no)
- async def get_by_enterprise_id(self, enterprise_id: str) -> FacetofaceOrderModel | None:
- return await self.get(enterprise_id=enterprise_id)
- async def get_pending_orders(self) -> list[FacetofaceOrderModel]:
- """获取需要轮询状态的申请单(next_query_time <= now 且状态为待查询)"""
- now = datetime.now()
- pending_statuses = [
- FacetofaceOrderStatus.SUBMITTED.value,
- FacetofaceOrderStatus.MERCHANT_AUDITING.value,
- FacetofaceOrderStatus.MERCHANT_CONFIRM.value,
- ]
- stmt = (
- select(FacetofaceOrderModel)
- .where(
- FacetofaceOrderModel.order_status.in_(pending_statuses),
- FacetofaceOrderModel.next_query_time <= now,
- )
- .order_by(FacetofaceOrderModel.next_query_time.asc())
- )
- result = await self.auth.db.execute(stmt)
- return list(result.scalars().all())
|