修改成了飞书文档上的代码

This commit is contained in:
2026-09-19 15:04:27 +08:00
commit af17532f4a
3 changed files with 140 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
from fastapi import APIRouter,Depends,HTTPException
from day23sk.schema.order_request import OrderRequest,OrderResponse
from day23sk.database import get_db
from day23sk.model.order_model import Order
from day23sk.dao.order_dao import add_student_dao,update_orders_dao,delete_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表里
'''
+50
View File
@@ -0,0 +1,50 @@
from day23sk.model.order_model import Order,User
def add_student_dao(o,db):
try:
r = db.query(User).filter(User.id == o['userid']).all()
if r:
o1 = Order( **o) # 将字典解析成键值对关键字参数输入 title = xxx, userid = XXX
db.add(o1)
else:
raise ValueError
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_orders_dao(id,order_title,db,page,page_size):
q = db.query(Order)
if id:
q = q.filter( Order.id == id )
if order_title:
q = q.filter( Order.title == order_title )
r = q.offset( (page-1)*page_size ).limit( page_size ).all()
if r:
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 r]
def delete_orders_dao(id,db):
try: # 删除有返回值,删除的行数
rows = db.query(Order).filter(Order.id == id).delete()
except:
db.rollback()
rows = 0
else:
db.commit()
finally:
return rows
+43
View File
@@ -0,0 +1,43 @@
from day23sk.database import DATETIME,Base,Column,Integer,String
from datetime import datetime
class Order(Base): # python里的表名字
__tablename__ = 'order_info_detail' # 实际数据库的表名字
id = Column( Integer # 声明字段的数据类型
, primary_key=True # 声明是主键
, autoincrement=True # 声明是自增主键
, comment='订单编号,自增主键' # 注释
)
title = Column( String(50) # 对应数据库的varchar类型
,nullable=False # 不允许为null
)
userid = Column( Integer
# ,ForeignKey('user_info_detail.id')
,nullable=False ) # 外键约束
create_date = Column(DATETIME
, default=datetime.now # 默认值是当前时间
)
update_date = Column(DATETIME
, default=datetime.now # 首次创建的时间跟更新时间一致
, onupdate=datetime.now
)
class User(Base): # python里的表名字
__tablename__ = 'user_info_detail' # 实际数据库的表名字
id = Column( Integer # 声明字段的数据类型
, primary_key=True # 声明是主键
, autoincrement=True # 声明是自增主键
, comment='用户编号,自增主键' # 注释
)
usernmae = Column( String(50) # 对应数据库的varchar类型
,nullable=False # 不允许为null
,comment='用户名'
)
create_date = Column(DATETIME
, default=datetime.now # 默认值是当前时间
)
update_date = Column(DATETIME
, default=datetime.now # 首次创建的时间跟更新时间一致
, onupdate=datetime.now
)