diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index 622a370..2ec7efc 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -2,12 +2,12 @@ import datetime from fastapi import APIRouter,Depends,HTTPException from dao import * -from stu_jiuye.request import PostRequest,EmpResponse +from stu_jiuye.request import PostRequest, EmpResponse, AddRequest,AddResponse,CompRequest,CompResponse from database import get_db CURD=APIRouter() -@CURD.get('/emp') +@CURD.get('/emp',tags=['查询就业信息']) def get_stuinfo( # stuid:int|None=None, comname:str|None=None @@ -25,7 +25,7 @@ def get_stuinfo( return r raise HTTPException(status_code=404, detail='名单不存在!') -@CURD.post('/emp',response_model=EmpResponse) +@CURD.post('/emp',response_model=EmpResponse,tags=['新增就业信息']) def add_stuinfo( p:PostRequest,db=Depends(get_db) ): @@ -35,7 +35,27 @@ def add_stuinfo( raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') return EmpResponse(totals=1, data=d) -@CURD.put('/emp') +@CURD.post('/emp/company',response_model=CompResponse,tags=['新增公司信息']) +def add_company(c:CompRequest,db=Depends(get_db)): + d = c.model_dump() + r = add_company_dao(o=d, db=db) + if not r: + raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') + return EmpResponse(totals=1, data=d) + + +@CURD.post('/emp/company/address',response_model=AddResponse,tags=['新增公司所在区域']) +def add_address( + add:AddRequest,db=Depends(get_db) + ): + d = add.model_dump() + r = add_employment_dao(o=d, db=db) + if not r: + raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') + return EmpResponse(totals=1, data=d) + + +@CURD.put('/emp',tags=['更改就业信息']) def updata_stuinfo(company:PostRequest ,id:int ,db=Depends(get_db) @@ -46,7 +66,7 @@ def updata_stuinfo(company:PostRequest raise HTTPException(status_code=500, detail='没有更新!') return {'code': 200, 'totals': r, 'detail': '更新成功'} -@CURD.delete('/emp') +@CURD.delete('/emp',tags=['删除就业信息']) def delete_stuinfo(id:int ,db=Depends(get_db)): rows = delete_orders_dao(id, db) diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 8887229..a1b1dc0 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -1,4 +1,4 @@ -from model import Employments,Address +from model import Employments,Address,Company def add_employment_dao(o,db): @@ -16,6 +16,30 @@ def add_employment_dao(o,db): db.commit() return True +def add_company_dao(o,db): + try: + o.pop('id', None) + o1 = Company( **o) + db.add(o1) + except Exception as e: + print(f'添加失败,{e}') + db.rollback() + return False + else: + db.commit() + return True +def add_address_dao(o,db): + try: + o.pop('id', None) + o1 = Address( **o) + db.add(o1) + except Exception as e: + print(f'添加失败,{e}') + db.rollback() + return False + else: + db.commit() + return True def update_orders_dao(id,update_data,db): @@ -37,9 +61,12 @@ def get_orders_dao( # ,page # ,page_size ): - q = db.query(Employments) + q = db.query(Employments)\ + .join(Company,Employments.company_id==Company.id)\ + .join(Address,Company.address_id==Address.id) # if stuid: # q = q.filter( Employments.id == stuid ) + if name: q = q.filter( Employments.stuname == name ) # r = q.offset( (page-1)*page_size ).limit( page_size ).all() @@ -53,6 +80,7 @@ def get_orders_dao( 'stuname':i.stuname, 'stuclass':i.stuclass, "company_name": i.compname, + "company_id": i.company_id, "salary":i.salary, "address_id": i.address_id, "employment_open_date":i.employment_open_date, diff --git a/stu_jiuye/database.py b/stu_jiuye/database.py index 33a1ef6..be5bf58 100644 --- a/stu_jiuye/database.py +++ b/stu_jiuye/database.py @@ -2,7 +2,10 @@ 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) +engine = create_engine(db_url + , pool_size=50 + , echo=True + ) Base = declarative_base() Session = sessionmaker(bind=engine diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 05dca71..7ba811b 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -4,7 +4,6 @@ from database import DATETIME,Base,Column,Integer,String,engine from datetime import datetime - # class Student(Base): # __tablename__ = 'Student' # id = Column(Integer @@ -13,19 +12,15 @@ from datetime import datetime # # 外键 # ,comment='自增主键' # ) -# # stuname = Column(String(50) # ,nullable=False # ) -# # stuid=Column(Integer # ,nullable=False # ) # stuclass=Column(String(50) # ,nullable=False # ) -# -# # created_date = Column(DATETIME # ,default=datetime.now # ) @@ -47,11 +42,12 @@ class Employments(Base): stuclass = Column(String(50)) compname=Column(String(50) - ,nullable=False + ,nullable=False ) - address_id=Column(Integer - ,nullable=False - ) + company_id = Column(Integer + , nullable=False + + ) salary = Column(Integer) @@ -67,15 +63,43 @@ class Employments(Base): , onupdate=datetime.now ) is_deleted = Column(Integer, default=0) + +class Company(Base): + __tablename__ = 'Company' + id = Column(Integer + , ForeignKey('Employments.company_id') + , primary_key=True + + ) + compname = Column(String(50), nullable=False) + address_id = Column(Integer + , nullable=False + ) + created_date = Column(DATETIME + , default=datetime.now + ) + updated_date = Column(DATETIME + , default=datetime.now + , onupdate=datetime.now + ) + is_deleted = Column(Integer, default=0) + class Address(Base): __tablename__ = 'address' id = Column(Integer + , ForeignKey('Company.address_id') , primary_key=True - , autoincrement=True - # , ForeignKey='company.id' - , comment='自增主键' + ) somewhere=Column(String(50) , nullable=False ) + created_date = Column(DATETIME + , default=datetime.now + ) + updated_date = Column(DATETIME + , default=datetime.now + , onupdate=datetime.now + ) + is_deleted = Column(Integer, default=0) diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 9b02955..77f8415 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -14,7 +14,6 @@ class PostRequest(BaseModel): created_date: datetime=Field(default_factory=datetime.now) updated_date: datetime=Field(default_factory=datetime.now) is_deleted: bool = False - class EmpResponse(BaseModel): code: int = 200 detail: str = 'OK' @@ -22,6 +21,28 @@ class EmpResponse(BaseModel): data: str | dict | tuple | list +class CompRequest(BaseModel): + compname:str|None=None + created_date: datetime = Field(default_factory=datetime.now) + updated_date: datetime = Field(default_factory=datetime.now) + is_deleted: bool = False +class CompResponse(BaseModel): + code: int = 200 + detail: str = 'OK' + totals: int = 0 + data: str | dict | tuple | list + +class AddRequest(BaseModel): + somewhere:str|None=None + created_date: datetime = Field(default_factory=datetime.now) + updated_date: datetime = Field(default_factory=datetime.now) + is_deleted: bool = False +class AddResponse(BaseModel): + code: int = 200 + detail: str = 'OK' + totals: int = 0 + data: str | dict | tuple | list + + -