From 60999c332bfb3003cfa4c6c5cbc638f16af1adf3 Mon Sep 17 00:00:00 2001 From: wolin_yangxuejiang Date: Sat, 19 Sep 2026 14:42:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8C/=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | Bin 0 -> 1024 bytes database.py | 18 ++++++++++++++++++ main.py | 11 +++++++++++ midlleware.py | 19 +++++++++++++++++++ order_api.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 __init__.py create mode 100644 database.py create mode 100644 main.py create mode 100644 midlleware.py create mode 100644 order_api.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..06d7405020018ddf3cacee90fd4af10487da3d20 GIT binary patch literal 1024 ScmZQz7zLvtFd70QH3R?z00031 literal 0 HcmV?d00001 diff --git a/database.py b/database.py new file mode 100644 index 0000000..30351a5 --- /dev/null +++ b/database.py @@ -0,0 +1,18 @@ +from sqlalchemy import * +from sqlalchemy.orm import declarative_base,sessionmaker + +db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4" +engine = create_engine(db_url) + +Base = declarative_base() +Session = sessionmaker(bind=engine + ,autoflush=False + ,autocommit = False + ) + +def get_db(): + db = Session() + try: + yield db + finally: + db.close() \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..d65dfe2 --- /dev/null +++ b/main.py @@ -0,0 +1,11 @@ +from fastapi import FastAPI +from day22.api.order_api import order_api + +app = FastAPI() + +app.include_router(order_api,tags=['订单接口'],prefix='/orders') + + +if __name__ == '__main__': + import uvicorn + uvicorn.run("main:app",host='0.0.0.0',port=12345) diff --git a/midlleware.py b/midlleware.py new file mode 100644 index 0000000..59abaef --- /dev/null +++ b/midlleware.py @@ -0,0 +1,19 @@ +from fastapi import Response,Request +from time import time + +async def fun_ip(r,n): + print('获取客户端的来访ip:',r.client.host) + if r.client.host not in ['192.168.5.18','192.168.5.6']: + respons = await n(r) + return respons + return Response(status_code=403,content='Not have Permission!') + +async def fun_time(r:Request,n): + start_time = time() # 记录开始的时间 + respons = await n(r) # 接口执行 + end_time = time() # 记录结束的时间 + sss = end_time - start_time + print( f'接口响应耗时:{sss}s' ) + respons.headers["Time"] = str(sss) # 添加到响应头里,必须是字符串 + return respons + diff --git a/order_api.py b/order_api.py new file mode 100644 index 0000000..f2ac2dd --- /dev/null +++ b/order_api.py @@ -0,0 +1,44 @@ +from fastapi import APIRouter,Depends,HTTPException +from day22.schema.order_request import OrderRequest,OrderResponse +from day22.database import get_db +from day22.model.order_model import Order +from day22.dao.order_dao import delete_orders_dao,add_student_dao,update_orders_dao,get_orders_dao + +order_api = APIRouter() + + +@order_api.post('',response_model=OrderResponse) +def add_orders(order:OrderRequest,db=Depends(get_db)): + d = order.model_dump() + r = add_student_dao( o=d,db=db ) + if not r: + raise HTTPException(status_code=500,detail='服务器繁忙或用户不存在!') + return OrderResponse(totals=1,data=d) + +@order_api.put('/{id}') +def get_orders(order:OrderRequest,id:int,db=Depends(get_db)): + d = order.model_dump(exclude_unset=True) + r = update_orders_dao( id=id,update_data=d,db=db ) + if not r: + raise HTTPException(status_code=500, detail='没有更新!') + return {'code':200,'totals':r,'detail':'更新成功'} + +@order_api.get('') +def get_orders(id:int|None = None ,order_title:str|None = None,db=Depends(get_db),page:int=1,page_size:int=10): + r = get_orders_dao(id,order_title,db,page,page_size ) + if r: + return r + raise HTTPException(status_code=404,detail='订单不存在!') + +@order_api.delete('/{id}') +def get_orders(id:int,db=Depends(get_db)): + rows = delete_orders_dao(id,db) + if not rows: + raise HTTPException(status_code=500,detail='没有删除!') + return {'code':200,'totals':rows,'detail':'删除成功'} + +# 要求: +''' +①把剩下的delete、get查询接口完成dao层的分层 +②新增一个user_info的表,有外键联系,oder订单表外键依赖user_info,改造一下订单post的接口,新增订单前,判断下用户的id是否存在user_info表里 +'''