diff --git a/pyproject.toml b/pyproject.toml index 0d5aebe..760670a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,7 @@ readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi[standard]>=0.141.1", + "like>=1.7.1", "pip>=26.2.1", "pymysql>=1.2.3", "sqlalchemy>=2.0.54", diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index c15176d..78c9f48 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -9,15 +9,15 @@ CURD=APIRouter() @CURD.get('/emp',tags=['查询就业信息']) def get_stuinfo( - # stuid:int|None=None, - comname:str|None=None + stuname:str| None = None + ,compname:str|None=None ,min_salary:int=0 ,max_salary:int|None=None ,db=Depends(get_db) ): - r=get_orders_dao( - # stuid, - comname, + r=get_emp_dao( + stuname, + compname, db, min_salary, max_salary) @@ -41,7 +41,7 @@ def add_company(c:CompRequest,db=Depends(get_db)): r = add_company_dao(o=d, db=db) if not r: raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') - return EmpResponse(totals=1, data=d) + return CompResponse(totals=1, data=d) @CURD.post('/emp/company/address',response_model=AddResponse,tags=['新增公司所在区域']) @@ -52,7 +52,7 @@ def add_address( r = add_address_dao(o=d, db=db) if not r: raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') - return EmpResponse(totals=1, data=d) + return AddResponse(totals=1, data=d) @CURD.put('/emp',tags=['更改就业信息']) diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 2be42c0..79b42dd 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -1,3 +1,5 @@ +import like + from model import Employments,Address,Company @@ -45,7 +47,8 @@ def add_address_dao(o,db): def update_orders_dao(id,update_data,db): try: # 数据更新是有返回值的,返回的是影响的行数 rows = db.query( Employments ).filter( Employments.id == id ).update( update_data ) - except: + except Exception as e: + print(f'更新失败,{e}') db.rollback() return False else: @@ -54,21 +57,25 @@ def update_orders_dao(id,update_data,db): def get_emp_dao( # stuid, - name + stuname + ,compname ,db , min_salary: int = 0 , max_salary: int | None = None # ,page # ,page_size ): - q = db.query(Employments)\ + q = db.query(Employments,Company.compname,Address.somewhere)\ .join(Company,Employments.company_id==Company.id)\ - .join(Address,Company.address_id==Address.id) + .join(Address,Company.address_id==Address.id)\ + .filter(Employments.is_deleted == 0) # if stuid: # q = q.filter( Employments.id == stuid ) - if name: - q = q.filter( Employments.stuname == name ) + if stuname: + q = q.filter( Employments.stuname == stuname ) + if compname: + q=q.filter(Company.compname.like(f'%{compname}%')) # r = q.offset( (page-1)*page_size ).limit( page_size ).all() if min_salary is not None: q = q.filter(Employments.salary >= min_salary) @@ -79,15 +86,16 @@ def get_emp_dao( return [ {"id": i.id, 'stuname':i.stuname, 'stuclass':i.stuclass, - "company_name": i.compname, - "company_id": i.company_id, + "company_name": compname, + "address":somewhere, + # "company_id": i.company_id, "salary":i.salary, - "address_id": i.address_id, + # "address_id": i.address_id, "employment_open_date":i.employment_open_date, "offer_date":i.offer_date, "created_date": i.created_date, "updated_date": i.updated_date, - "is_deleted":i.is_deleted } for i in r ] + "is_deleted":i.is_deleted } for i,compname,somewhere in r ] def delete_orders_dao(id,db): diff --git a/stu_jiuye/database.py b/stu_jiuye/database.py index be5bf58..230d3a7 100644 --- a/stu_jiuye/database.py +++ b/stu_jiuye/database.py @@ -1,7 +1,7 @@ from sqlalchemy import * from sqlalchemy.orm import declarative_base,sessionmaker -db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4" +db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824_001?charset=utf8mb4" engine = create_engine(db_url , pool_size=50 , echo=True diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 8f0bdad..466273e 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -41,18 +41,18 @@ class Employments(Base): stuname = Column(String(50)) stuclass = Column(String(50)) - compname=Column(String(50) - ,nullable=False - ) + # compname=Column(String(50) + # ,nullable=False + # ) company_id = Column(Integer , ForeignKey('Company.id') , nullable=False ) - address_id = Column(Integer - , ForeignKey('Address.id') - , nullable=False - ) + # address_id = Column(Integer + # , ForeignKey('Address.id') + # , nullable=False + # ) salary = Column(Integer) employment_open_date = Column(DATETIME) @@ -71,9 +71,8 @@ class Employments(Base): class Company(Base): __tablename__ = 'Company' id = Column(Integer - , primary_key=True - + ,autoincrement=True ) compname = Column(String(50), nullable=False) address_id = Column(Integer @@ -92,9 +91,8 @@ class Company(Base): class Address(Base): __tablename__ = 'Address' id = Column(Integer - , primary_key=True - + ,autoincrement=True ) somewhere=Column(String(50) , nullable=False diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 2d3fe6d..d67f9e6 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -4,11 +4,11 @@ from pydantic import BaseModel, Field class PostRequest(BaseModel): - compname: str|None=None + # compname: str|None=None stuname: str|None=None stuclass: str|None=None company_id:int|None=None - address_id: int|None=None + # address_id: int|None=None salary: int|None=None employment_open_date:date|None=None offer_date:date|None=None diff --git a/uv.lock b/uv.lock index 48d6f35..9fc0636 100644 --- a/uv.lock +++ b/uv.lock @@ -396,6 +396,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] +[[package]] +name = "like" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/d1/5284ae5ae97876808622090d858098e11787469c601b679274e17bcb7b34/like-1.7.1.zip", hash = "sha256:2614e24923fb934955b6abeeda6d13db567d7901da44bc01480e14838618ded2", size = 925, upload-time = "2016-12-19T04:01:13.729Z" } + [[package]] name = "markdown-it-py" version = "4.2.0" @@ -842,6 +848,7 @@ version = "0.1.0" source = { virtual = "." } dependencies = [ { name = "fastapi", extra = ["standard"] }, + { name = "like" }, { name = "pip" }, { name = "pymysql" }, { name = "sqlalchemy" }, @@ -851,6 +858,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "fastapi", extras = ["standard"], specifier = ">=0.141.1" }, + { name = "like", specifier = ">=1.7.1" }, { name = "pip", specifier = ">=26.2.1" }, { name = "pymysql", specifier = ">=1.2.3" }, { name = "sqlalchemy", specifier = ">=2.0.54" },