fix: 重置返回值格式
This commit is contained in:
parent
78ff7c60d4
commit
6742916119
|
|
@ -5,12 +5,11 @@ import aioredis
|
||||||
from fastapi import APIRouter, Depends, Query
|
from fastapi import APIRouter, Depends, Query
|
||||||
from fastapi.security import OAuth2PasswordBearer
|
from fastapi.security import OAuth2PasswordBearer
|
||||||
from fastapi_plugins import depends_redis
|
from fastapi_plugins import depends_redis
|
||||||
from fastapi_sqlalchemy import db
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from pydantic_sqlalchemy import sqlalchemy_to_pydantic
|
|
||||||
|
|
||||||
from src.biz.test import get_user_by_id
|
from biz.example import get_user_by_id
|
||||||
from src.models.devices_place import DevicesPlace
|
from dtos import response
|
||||||
|
from dtos.example import UserListPagesResult, UserListResult
|
||||||
|
|
||||||
router = APIRouter(prefix="/test")
|
router = APIRouter(prefix="/test")
|
||||||
|
|
||||||
|
|
@ -51,20 +50,20 @@ async def get_user():
|
||||||
async def read_users_me(current_user: User = Depends(get_current_user)):
|
async def read_users_me(current_user: User = Depends(get_current_user)):
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
@router.get('/users', response_model=UserListResult)
|
||||||
|
def get_user_list():
|
||||||
|
data = [{"id": 12, "user_name": "lala"}]
|
||||||
|
res = response(data=data, message="Ok!")
|
||||||
|
return res
|
||||||
|
|
||||||
# 数据库查询
|
|
||||||
@router.get("/query")
|
@router.get('/user_list_pages', response_model=UserListPagesResult)
|
||||||
def query(mid: Optional[str] = Query(None, description='mid'),
|
async def get_user_list_pages(page: int = Query(..., description="当前页码"),
|
||||||
region_id: int = Query(..., description="区域Id"),
|
limit: int = 20):
|
||||||
limit: int = 20,
|
items = [{"id": 12, "user_name": "lala"}]
|
||||||
page_count: int = 1):
|
data = {"totalRecords": limit, "totalPages": 0, "currentPage": page, "items": items}
|
||||||
if mid is None:
|
res = response(data=data, message="Ok!")
|
||||||
records = db.session.query(DevicesPlace).filter(DevicesPlace.region_id == region_id)\
|
return res
|
||||||
.order_by(DevicesPlace.id).limit(limit).offset(limit*(page_count-1)).all()
|
|
||||||
else:
|
|
||||||
records = db.session.query(DevicesPlace).filter(DevicesPlace.mid == mid)\
|
|
||||||
.filter(DevicesPlace.region_id == region_id).order_by(DevicesPlace.id).limit(limit).offset(limit*(page_count-1)).all()
|
|
||||||
return records
|
|
||||||
|
|
||||||
|
|
||||||
# Redis 缓存查询
|
# Redis 缓存查询
|
||||||
|
|
|
||||||
|
|
@ -3,24 +3,38 @@ from typing import Any, List, Union
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
def response(status=200, message="", data=None, err_code=0, err_detail="", target_url=""):
|
||||||
|
result = {
|
||||||
|
"result": data,
|
||||||
|
"code": status,
|
||||||
|
"error": {
|
||||||
|
"code": status if not err_code and status != 200 else err_code,
|
||||||
|
"message": message,
|
||||||
|
"details": err_detail if err_detail else message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class ErrorModel(BaseModel):
|
class ErrorModel(BaseModel):
|
||||||
code: int = 200
|
code: int = 200
|
||||||
message: str = ""
|
message: str = ""
|
||||||
details: str = ""
|
details: str = ""
|
||||||
|
|
||||||
|
|
||||||
class PageItemModel(BaseModel):
|
class PageItemModel(BaseModel):
|
||||||
totalRecords: int = 0
|
totalRecords: int = 0
|
||||||
totalPages: int = 0
|
totalPages: int = 0
|
||||||
currentPage: int = 0
|
currentPage: int = 0
|
||||||
items: List[Any] = []
|
items: List[BaseModel] = []
|
||||||
|
|
||||||
class BaseResponse(BaseModel):
|
class BaseResponse(BaseModel):
|
||||||
result: Union[dict, list, Any] = None
|
result: Union[dict, list, Any] = None
|
||||||
code: int = 200
|
code: int = 200
|
||||||
error: ErrorModel = ErrorModel()
|
error: ErrorModel
|
||||||
|
|
||||||
class ListResponse(BaseResponse):
|
class ListResponse(BaseResponse):
|
||||||
result: PageItemModel = PageItemModel()
|
result: PageItemModel
|
||||||
|
|
||||||
class SuccessResponse(BaseResponse):
|
class SuccessResponse(BaseResponse):
|
||||||
result: dict = dict(success=True)
|
result: dict = dict(success=True)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
|
from src.dtos import BaseModel, BaseResponse, ListResponse, PageItemModel
|
||||||
|
|
||||||
|
|
||||||
|
class UserDto(BaseModel):
|
||||||
|
id: int = Field(None, alias='id', description='id')
|
||||||
|
userName: str = Field(None, description='用户名')
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
|
||||||
|
|
||||||
|
class UserListPagesItem(PageItemModel):
|
||||||
|
items: List[UserDto]
|
||||||
|
|
||||||
|
|
||||||
|
class UserListPagesResult(ListResponse):
|
||||||
|
result: UserListPagesItem
|
||||||
|
|
||||||
|
|
||||||
|
class UserListResult(BaseResponse):
|
||||||
|
result: List[UserDto]
|
||||||
Loading…
Reference in New Issue