封装返回消息格式, 类似于 code, msg, data
This commit is contained in:
parent
b2a481ff30
commit
7fb9cf2aa4
@ -4,6 +4,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from app.core.database import get_db
|
||||
from app.crud.event import event
|
||||
from app.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail
|
||||
from app.util.httpResponse import BaseResponse
|
||||
|
||||
import datetime
|
||||
|
||||
@ -37,7 +38,8 @@ async def get_events(
|
||||
return [EventList.model_validate(event) for event in events]
|
||||
|
||||
# 后台获取事件列表
|
||||
@router.post("/backstageEventlist", response_model=List[BackStageEvent])
|
||||
# @router.post("/backstageEventlist", response_model=List[BackStageEvent])
|
||||
@router.post("/backstageEventlist", response_model=BaseResponse[List[BackStageEvent]])
|
||||
async def get_events_backstage(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
query: BackStageEventDto = Body(...)
|
||||
@ -45,16 +47,16 @@ async def get_events_backstage(
|
||||
):
|
||||
|
||||
events = await event.get_multi_backstage_events(db, query=query)
|
||||
return events
|
||||
return BaseResponse(code=200, msg="success", data=events)
|
||||
|
||||
# 后台获取事件详情
|
||||
@router.get("/backstageEventDetail/{eventId}")
|
||||
@router.get("/backstageEventDetail/{eventId}", response_model=BaseResponse[BackStageEventDetail])
|
||||
async def get_event_detail(
|
||||
eventId: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
):
|
||||
back = await event.get_event_detail(db=db, eventId=eventId)
|
||||
return back
|
||||
return BaseResponse(code = 200, msg="success", data=back)
|
||||
|
||||
|
||||
|
||||
@ -89,7 +91,7 @@ async def update_event(
|
||||
raise HTTPException(status_code=404, detail="事件不存在")
|
||||
return EventDetail.model_validate(event_obj)
|
||||
|
||||
@router.delete("/events/{event_id}", response_model=EventDetail)
|
||||
@router.delete("/events/{event_id}", response_model=BaseResponse[EventDetail])
|
||||
async def delete_event(
|
||||
event_id: str,
|
||||
db: AsyncSession = Depends(get_db)
|
||||
@ -99,5 +101,5 @@ async def delete_event(
|
||||
"""
|
||||
event_obj = await event.delete_event(db, event_id=event_id)
|
||||
if not event_obj:
|
||||
raise HTTPException(status_code=404, detail="事件不存在")
|
||||
return EventDetail.model_validate(event_obj)
|
||||
return BaseResponse(code=404,msg="事件不存在")
|
||||
return BaseResponse(code=200, msg="success", data=EventDetail.model_validate(event_obj))
|
||||
@ -43,6 +43,7 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
|
||||
*,
|
||||
query: BackStageEventDto
|
||||
) -> List[BackStageEvent]:
|
||||
|
||||
"""后台根据条件获取事件列表"""
|
||||
|
||||
conditions = []
|
||||
@ -71,7 +72,7 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
|
||||
result = await db.execute(stmt)
|
||||
|
||||
result = result.mappings().all()
|
||||
|
||||
|
||||
return [BackStageEvent(**row) for row in result]
|
||||
|
||||
|
||||
|
||||
@ -121,8 +121,8 @@ class BackStageEventDto(BaseModel):
|
||||
eventId: Optional[str] = None
|
||||
number: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
start_time : Optional[str] = None
|
||||
end_time : Optional[str] = None
|
||||
start_time : Optional[datetime] = None
|
||||
end_time : Optional[datetime] = None
|
||||
status: Optional[str] = None
|
||||
skip: int = 0
|
||||
limit: int = 100
|
||||
@ -132,7 +132,7 @@ class BackStageEventDetail(BaseModel):
|
||||
eventId:str = None
|
||||
number: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
createTime: Optional[str] = None
|
||||
createTime: Optional[datetime] = None
|
||||
temperature: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
reason: Optional[str] = None
|
||||
|
||||
51
app/util/httpResponse.py
Normal file
51
app/util/httpResponse.py
Normal file
@ -0,0 +1,51 @@
|
||||
from typing import Generic, TypeVar, Optional, List
|
||||
# from fastapi import FastAPI, HTTPException, status
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic.generics import GenericModel
|
||||
|
||||
# 定义泛型类型
|
||||
T = TypeVar('T')
|
||||
|
||||
class BaseResponse(GenericModel, Generic[T]):
|
||||
code: int = Field(..., description="状态码")
|
||||
msg: str = Field(..., description="描述信息")
|
||||
data: Optional[T] = Field(None, description="响应数据")
|
||||
|
||||
class Config:
|
||||
json_encoders = {
|
||||
# 如果有需要自定义类型编码可以在这里添加
|
||||
}
|
||||
|
||||
def response_format(*, code=200, message="success", data=None):
|
||||
return JSONResponse(
|
||||
status_code=code,
|
||||
content=jsonable_encoder({
|
||||
"code": code,
|
||||
"msg": message,
|
||||
"data": data
|
||||
})
|
||||
)
|
||||
|
||||
# 可以继承BaseResponse类来扩展字段
|
||||
class PaginatedResponse(BaseResponse[List[T]]):
|
||||
total: int
|
||||
page: int
|
||||
page_size: int
|
||||
|
||||
|
||||
# # 使用示例
|
||||
# @router.get("/paginated", response_model=PaginatedResponse[UserSchema])
|
||||
# async def get_paginated_users():
|
||||
# users, total = get_paginated_users()
|
||||
# return PaginatedResponse(
|
||||
# code=200,
|
||||
# msg="success",
|
||||
# data=users,
|
||||
# total=total,
|
||||
# page=1,
|
||||
# page_size=20
|
||||
# )
|
||||
|
||||
|
||||
@ -8,4 +8,4 @@ from app.services.event_sync_service import run_sync, run_sync_event
|
||||
if __name__ == "__main__":
|
||||
print("启动事件同步服务...")
|
||||
# asyncio.run(run_sync())
|
||||
asyncio.run(run_sync_event("248432afe24740b6a6671bbcc8d55f58"))
|
||||
asyncio.run(run_sync_event("07a9da561cd643328d5d43a33cce89bb"))
|
||||
Loading…
Reference in New Issue
Block a user