diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..06d7405 Binary files /dev/null and b/__init__.py differ diff --git a/database.py b/database.py new file mode 100644 index 0000000..98f4b1b --- /dev/null +++ b/database.py @@ -0,0 +1,21 @@ +from sqlalchemy import * +from sqlalchemy.orm import declarative_base, sessionmaker + +db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai111?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() + diff --git a/main.py b/main.py new file mode 100644 index 0000000..08bb6cd --- /dev/null +++ b/main.py @@ -0,0 +1,14 @@ +from fastapi import FastAPI +from day22.api.order_api import OrderAPI + +from day22.database import engine, Base +from day22.model import order_model +Base.metadata.create_all(engine) + +app = FastAPI(title='订单系统') + +app.include_router(OrderAPI) + +if __name__ == '__main__': + import uvicorn + uvicorn.run(app, host='127.0.0.1', port=8000) \ No newline at end of file diff --git a/order_api.py b/order_api.py new file mode 100644 index 0000000..cb422da --- /dev/null +++ b/order_api.py @@ -0,0 +1,36 @@ +from fastapi import APIRouter,Depends,HTTPException +from day22.model.order_model import Order +from day22.schema.order_schema import Request,OrderResponse +from day22.database import get_db +from day22.dao.order_dao import * + +OrderAPI = APIRouter(prefix="/orders", tags=["订单管理"]) + +@OrderAPI.post("/orders",summary='添加订单接口') +def create_order(order: Request,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) + +# ③ 编写put接口对订单进行更新操作 +@OrderAPI.put("/orders/{id}",summary='更新订单接口') +def update_order(id: int, order: Request,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': '更新成功'} + +# ④ 编写get接口对订单进行查询操作 +@OrderAPI.get("/orders/{id}",summary='查询订单接口') +def get_order(id: int,db=Depends(get_db)): + req = get_order_dao(id = id, db=db) + return req + +# ⑤ 编写delete接口对订单进行删除操作 +@OrderAPI.delete("/orders/{id}",summary='删除订单接口') +def delete_order(order_id: int, db=Depends(get_db)): + r = delete_order_dao(id, db=db) + return {'code': 200, 'totals': r, 'detail': '删除成功'} \ No newline at end of file diff --git a/order_dao.py b/order_dao.py new file mode 100644 index 0000000..cc9b8ea --- /dev/null +++ b/order_dao.py @@ -0,0 +1,46 @@ +from day22.model.order_model import Order + + +def add_student_dao(o,db): + try: + o1 = Order( **o) + db.add(o1) + except: + db.rollback() + return False + else: + db.commit() + return True + + +def update_orders_dao(id,update_data,db): + try: + rows = db.query( Order ).filter( Order.id == id ).update( update_data ) + except: + db.rollback() + return False + else: + db.commit() + return rows + + +def get_order_dao(id,db): + try: + req = db.query(Order).filter(Order.id == id).all() + except: + db.rollback() + return False + else: + db.commit() + return [{"order_id":i.id,'order_title':i.title,"user_id":i.userid,"create_date":i.create_date,"update_date":i.update_date} for i in req] + + +def delete_order_dao(id,db): + try: + rows = db.query(Order).filter(Order.id == id).delete() + except: + db.rollback() + return False + else: + db.commit() + return rows \ No newline at end of file