From 0aef0ce1933f27ec3488b3c7f0d2b0e702695869 Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Mon, 26 May 2025 15:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/v1/endpoints/events.py | 110 ++++++++++++++++----------------- app/crud/event.py | 22 +++++-- 2 files changed, 71 insertions(+), 61 deletions(-) diff --git a/app/api/v1/endpoints/events.py b/app/api/v1/endpoints/events.py index 290faf7..535f48e 100644 --- a/app/api/v1/endpoints/events.py +++ b/app/api/v1/endpoints/events.py @@ -10,32 +10,32 @@ import datetime router = APIRouter() -@router.get("/events", response_model=List[EventList]) -async def get_events( - db: AsyncSession = Depends(get_db), - start_time: Optional[str] = None, - end_time: Optional[str] = None, - etypeName: Optional[str] = None, - area: Optional[str] = None, - skip: int = Query(0, ge=0), - limit: int = Query(100, ge=1, le=1000) -): - """ - 获取事件列表 - - 支持时间范围查询 - - 支持事件类型和区域筛选 - - 支持分页 - """ - query = EventQuery( - start_time=start_time, - end_time=end_time, - etypeName=etypeName, - area=area, - skip=skip, - limit=limit - ) - events = await event.get_multi_with_query(db, query=query) - return [EventList.model_validate(event) for event in events] +# @router.get("/events", response_model=List[EventList]) +# async def get_events( +# db: AsyncSession = Depends(get_db), +# start_time: Optional[str] = None, +# end_time: Optional[str] = None, +# etypeName: Optional[str] = None, +# area: Optional[str] = None, +# skip: int = Query(0, ge=0), +# limit: int = Query(100, ge=1, le=1000) +# ): +# """ +# 获取事件列表 +# - 支持时间范围查询 +# - 支持事件类型和区域筛选 +# - 支持分页 +# """ +# query = EventQuery( +# start_time=start_time, +# end_time=end_time, +# etypeName=etypeName, +# area=area, +# skip=skip, +# limit=limit +# ) +# events = await event.get_multi_with_query(db, query=query) +# return [EventList.model_validate(event) for event in events] # 后台获取事件列表 # @router.post("/backstageEventlist", response_model=List[BackStageEvent]) @@ -60,36 +60,36 @@ async def get_event_detail( -@router.get("/events/{event_id}", response_model=EventDetail) -async def get_event( - event_id: str, - db: AsyncSession = Depends(get_db) -): - """ - 获取事件详情 - """ - event_obj = await event.get_by_id(db, event_id=event_id) - if not event_obj: - raise HTTPException(status_code=404, detail="事件不存在") - return EventDetail.model_validate(event_obj) +# @router.get("/events/{event_id}", response_model=EventDetail) +# async def get_event( +# event_id: str, +# db: AsyncSession = Depends(get_db) +# ): +# """ +# 获取事件详情 +# """ +# event_obj = await event.get_by_id(db, event_id=event_id) +# if not event_obj: +# raise HTTPException(status_code=404, detail="事件不存在") +# return EventDetail.model_validate(event_obj) -@router.put("/events/{event_id}", response_model=EventDetail) -async def update_event( - event_id: str, - event_in: EventUpdate, - db: AsyncSession = Depends(get_db) -): - """ - 更新事件信息 - """ - event_obj = await event.update_event( - db, - event_id=event_id, - obj_in=event_in - ) - if not event_obj: - raise HTTPException(status_code=404, detail="事件不存在") - return EventDetail.model_validate(event_obj) +# @router.put("/events/{event_id}", response_model=EventDetail) +# async def update_event( +# event_id: str, +# event_in: EventUpdate, +# db: AsyncSession = Depends(get_db) +# ): +# """ +# 更新事件信息 +# """ +# event_obj = await event.update_event( +# db, +# event_id=event_id, +# obj_in=event_in +# ) +# if not event_obj: +# raise HTTPException(status_code=404, detail="事件不存在") +# return EventDetail.model_validate(event_obj) @router.delete("/events/{event_id}", response_model=BaseResponse[EventDetail]) async def delete_event( diff --git a/app/crud/event.py b/app/crud/event.py index c12235c..2ce7c7a 100644 --- a/app/crud/event.py +++ b/app/crud/event.py @@ -60,20 +60,30 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]): conditions.append(Temperature.createTime >= query.start_time) if query.end_time is not None: conditions.append(Temperature.createTime <= query.end_time) + + stmt = (select(Event.eventId, Event.number, Event.name, Image.imageUrl, Image.localPath, Temperature.temperature, Temperature.confidence, Temperature.createTime, Temperature.status) - .select_from(Event) - .outerjoin(Image, Event.eventId==Image.eventId) - .outerjoin(Temperature, Image.imageId == Temperature.imageId) + .select_from(Temperature) + .outerjoin(Event, Event.eventId==Temperature.eventId) + .outerjoin(Image, Image.imageId == Temperature.imageId) .where(*conditions) + .order_by(Temperature.createTime.desc()) .offset(query.skip) .limit(query.limit)) - result = await db.execute(stmt) + results = await db.execute(stmt) - result = result.mappings().all() + results = results.mappings().all() + + back = list() + + for result in results: + # if result["temperature"] is not None: + back.append(BackStageEvent(**result)) + + return back - return [BackStageEvent(**row) for row in result]