From 4a0931e5f0bc6a880d22c713956e69e109c1f448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Thu, 21 Jul 2022 14:56:01 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=A1=AE=E8=AE=A4=E8=BF=9B=E5=85=A5=E9=9D=A2?= =?UTF-8?q?=E8=AF=95=E9=98=B6=E6=AE=B5=202.=E6=9B=B4=E6=94=B9=E7=AE=80?= =?UTF-8?q?=E5=8E=86=E9=98=B6=E6=AE=B5=203.=E5=AD=98=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=B0mongodb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 49 +++++++++++++++++++++++++++++++ crud/__init__.py | 1 + crud/crud_interview_record.py | 39 ++++++++++++++++++++++++ liwei_接口文档.md | 22 +++++++++++++- schemas/__init__.py | 1 + schemas/interview_plan.py | 14 ++++++++- schemas/interview_record.py | 15 ++++++++++ 7 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 crud/crud_interview_record.py create mode 100644 schemas/interview_record.py diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index 6b5650a..c9ce392 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -626,3 +626,52 @@ async def edit( """编辑看板名""" await crud.dashboard.update_one(db, {'_id': data_in.dashboard_id}, {'$set': {'name': data_in.new_name}}) return schemas.Msg(code=0, msg='ok', data='ok') + + +@router.post("/notarize") +async def event_edit( + request: Request, + data_in: schemas.Notarize, + ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database) +) -> schemas.Msg: + """简历确认进入面试阶段""" + sql = f""" + ALTER table HR.resumes update interview_state = 2,hr_name = '{data_in.hr_name}',hr_id = '{data_in.hr_id}',interview_name = '{data_in.interview_name}',interview_id = '{data_in.interview_id}' WHERE uid = '{data_in.uid}' + """ + await ckdb.execute(sql) + find_sql = f""" + select uid,name,interview_name,hr_name,star_time,interview_sign,job_id,job_names from HR.resumes where uid = '{data_in.uid}' + """ + df = await ckdb.query_dataframe(find_sql) + # 存份面试数据到mongodb + await crud.interview_record.insert_record(db, schemas.interview_record(uid=df['uid'][0], # 唯一id + name=df['name'][0], # 求职者姓名 + interview_name=df['interview_name'][0], + # 面试官姓名 + hr_name=df['hr_name'][0], # hr姓名 + star_time=df['star_time'][0], # 开始面试时间 + interview_sign=0, # 签到状态 + job_id=df['job_id'][0], # 我们自己招聘的职位id + job_names=df['job_names'][0] # 我们自己招聘的职位名 + )) + return schemas.Msg(code=200, msg='ok', data='') + + +@router.post("/alter") +async def edit( + data_in: schemas.Stage, + ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database) +): + """更改简历阶段""" + if data_in.stage == 1: # 初筛 + sql = f""" + ALTER table HR.resumes update interview_stage = 1,job_id = '{data_in.data['job_id']}',job_names = '{data_in.data['job_names']}' WHERE uid = '{data_in.uid}' + """ + else: + sql = f""" + ALTER table HR.resumes update interview_stage = {data_in.stage} WHERE uid = '{data_in.uid}' + """ + await ckdb.execute(sql) + return schemas.Msg(code=0, msg='ok', data='ok') diff --git a/crud/__init__.py b/crud/__init__.py index 932f20a..7eb64f8 100644 --- a/crud/__init__.py +++ b/crud/__init__.py @@ -26,3 +26,4 @@ from .crud_interview_remark import api_interview_remark from .crud_interview_modes import api_interview_modes from .crud_email_record import email_record from .crud_operate_log import operate_log +from .crud_interview_record import interview_record diff --git a/crud/crud_interview_record.py b/crud/crud_interview_record.py new file mode 100644 index 0000000..9ebf29e --- /dev/null +++ b/crud/crud_interview_record.py @@ -0,0 +1,39 @@ +from motor.motor_asyncio import AsyncIOMotorDatabase +import schemas +from crud.base import CRUDBase + +__all__ = 'interview_record', + + +class CRUDJobs(CRUDBase): + # 获取所有面试数据 + async def all_field(self, db: AsyncIOMotorDatabase): + return await self.find_many(db, {}, {'_id': 0}) + + # 获取所有对应条件面试数据 + # async def all_fields(self, db: AsyncIOMotorDatabase, data_in: schemas.Jobs): + # if data_in == None: + # return await self.find_many(db, {}, {'_id': 0}) + # else: + # where = {} + # data_dict = data_in.dict() + # for k, v in data_dict.items(): + # if v != None: + # where[k] = v + # return await self.find_many(db, where, {'_id': 0}) + + # async def update_job(self, db: AsyncIOMotorDatabase, data_in: schemas.Jobs): + # update = {} + # data_dict = data_in.dict() + # for k, v in data_dict.items(): + # if v != None and k != 'job_id': + # update[k] = v + # await self.update_one(db, {'job_id': data_in.job_id}, {'$set': update}) + + # 插入一条新的面试数据数据 + async def insert_record(self, db: AsyncIOMotorDatabase, data_in: schemas.interview_record): + + await self.insert_one(db, data_in.dict()) + + +interview_record = CRUDJobs('interview_record') diff --git a/liwei_接口文档.md b/liwei_接口文档.md index 678378f..acbe165 100644 --- a/liwei_接口文档.md +++ b/liwei_接口文档.md @@ -184,4 +184,24 @@ api:/api/v1/itr/edit 请求方式:post 参数: dashboard_id: str - new_name: str \ No newline at end of file + new_name: str + +#简历确认进入面试阶段 +api:/api/v1/itr/notarize +请求方式:post +参数: + uid: str # 面试者简历在CK中的唯一标识 + hr_name: str + hr_id: str + interview_name: str + interview_id: str + +#编辑看板名 +api:/api/v1/itr/alter +请求方式:post +参数: + stage: int # 面试阶段 + uid: str # 面试者简历在CK中的唯一标识 + data: Dict # 更新的数据 + + diff --git a/schemas/__init__.py b/schemas/__init__.py index 3218cfb..c25d890 100644 --- a/schemas/__init__.py +++ b/schemas/__init__.py @@ -32,3 +32,4 @@ from .interview_remark import * from .email_record import * from .operate_log import * from .interview_modes import * +from .interview_record import * diff --git a/schemas/interview_plan.py b/schemas/interview_plan.py index f3f9647..7be34c5 100644 --- a/schemas/interview_plan.py +++ b/schemas/interview_plan.py @@ -35,7 +35,7 @@ class get_uid(BaseModel): class Entry(BaseModel): uid: str # 面试者简历在CK中的唯一标识 interview_stage: int # 修改入职状态 - job_id:str #招聘职位的id + job_id: str # 招聘职位的id class Email_str(BaseModel): @@ -59,3 +59,15 @@ class user_id(BaseModel): name: str # 求职者姓名 +class Stage(BaseModel): + stage: int # 面试阶段 + uid: str # 面试者简历在CK中的唯一标识 + data: Dict # 更新的数据 + + +class Notarize(BaseModel): + uid: str # 面试者简历在CK中的唯一标识 + hr_name: str + hr_id: str + interview_name: str + interview_id: str diff --git a/schemas/interview_record.py b/schemas/interview_record.py new file mode 100644 index 0000000..32534b9 --- /dev/null +++ b/schemas/interview_record.py @@ -0,0 +1,15 @@ +from datetime import datetime +from typing import List, Union, Dict +from pydantic import BaseModel +from typing import Optional + + +class interview_record(BaseModel): + uid: str # 简历的唯一id + name: str # 求职者名字 + interview_name: str # 面试官名字 + hr_name: str # 人事名字 + star_time: str # 面试开始时间 + interview_sign: int # 是否签到 + job_id: str # 我们自己招聘的职位id + job_names: str # 我们自己招聘的职位名