From bd8d5d3953bdddb527b5470d654823d0b850903c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Sat, 8 Oct 2022 17:50:51 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8F=90=E4=BA=A4=E7=9A=84=E5=85=B3=E4=BA=8E?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E7=9A=84=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 86 ++++++++++++++++++++----------- crud/__init__.py | 1 + crud/crud_feedback.py | 29 +++++++++++ schemas/__init__.py | 1 + schemas/feedback.py | 9 ++++ schemas/interview_plan.py | 7 +-- 6 files changed, 97 insertions(+), 36 deletions(-) create mode 100644 crud/crud_feedback.py create mode 100644 schemas/feedback.py diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index 9696c19..f42c69a 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -2118,7 +2118,9 @@ async def add_interviewee( # 同步发送邮件通知被安排了面试 find_sql = f"""select job_names,name from HR.resumes where uid = '{data_in.uid}' limit 1""" df = await ckdb.query_dataframe(find_sql) - send = f"""【面试通知】\n面试岗位:{df['job_names'][0]}\n面试时间:{data_in.star_time}\n面试者:{df['name'][0]}\nHR:{hr_name}\n面试官:{interview_name}""" + interview_names=','.join(name_list) + hr_names=','.join(hr_list) + send = f"""【面试通知】\n面试岗位:{df['job_names'][0]}\n面试时间:{data_in.star_time}\n面试者:{df['name'][0]}\nHR:{hr_names}\n面试官:{interview_names}""" hr_user = data_in.hr_user hr_user.extend(data_in.user_id) send_dates(send, hr_user) @@ -2144,6 +2146,19 @@ async def add_interviewee( 'back_status': 0, # 反馈状态 'type': 'interview' # 记录的类型 }) + # 创建空白的面试反馈到mdb数据库 + survey={} + for us in [name,hr]: + for i in us: + survey[i['user_id']]={ + "name": i['nickname'], + "voice": 0, + "thought": 0, + "diathesis": 0, + "evaluate": "", + "teacher_back": 0, + 'type':False} + await crud.feedback.ins_feedback(db,schemas.Feedback(uid=data_in.uid,survey=survey)) return schemas.Msg(code=200, msg='ok', data='') @@ -2297,23 +2312,7 @@ async def interview_find( return schemas.Msg(code=200, msg='ok', data=res_data) -@router.post("/interview_teacher") -async def interview_teacher( - request: Request, - data_in: schemas.interview_teacher, - db: AsyncIOMotorDatabase = Depends(get_database), - ckdb: CKDrive = Depends(get_ck_db), - current_user: schemas.UserDB = Depends(deps.get_current_user) -) -> schemas.Msg: - """ 面试反馈 """ - date = json.dumps(data_in.date) - sql = f""" - ALTER TABLE HR.resumes update teacher_state = 2,teacher_back={data_in.teacher_back},teacher_txt='{date}' - WHERE uid = '{data_in.uid}' - """ - await ckdb.execute(sql) - await crud.interview_record.update_back_status(db, data_in.uid, data_in.teacher_back) - return schemas.Msg(code=200, msg='ok', data='') + @router.post("/interview") @@ -2429,22 +2428,50 @@ async def interviews( return schemas.Msg(code=200, msg='ok', data=datas) +@router.post("/interview_teacher") +async def interview_teacher( + request: Request, + data_in: schemas.Feedback, + db: AsyncIOMotorDatabase = Depends(get_database), + ckdb: CKDrive = Depends(get_ck_db), + current_user: schemas.UserDB = Depends(deps.get_current_user) +) -> schemas.Msg: + """ 新增面试反馈 """ + await crud.feedback.ins_feedback(db, data_in) + + # sql = f"""ALTER TABLE HR.resumes update teacher_state = 2 WHERE uid = '{data_in.uid}'""" + # await ckdb.execute(sql) + # await crud.interview_record.update_back_status(db, data_in.uid, data_in.teacher_back) + return schemas.Msg(code=200, msg='ok', data='') + @router.post("/up_teacher") async def interview_teacher( request: Request, - data_in: schemas.interview_teacher, + data_in: schemas.Feedback, ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 修改面试反馈 """ - date = json.dumps(data_in.date) - sql = f""" - ALTER TABLE HR.resumes update teacher_back={data_in.teacher_back},teacher_txt='{date}' - WHERE uid = '{data_in.uid}' - """ - print(sql) - await ckdb.execute(sql) + data = await crud.feedback.one_feedback(db, {'uid': data_in.uid}) + for k,v in data['survey'].items(): + if k == list(data_in.survey.keys())[0]: + data['survey'][k]=data_in.survey[k] + data['survey'][k]['type']=True + + await crud.feedback.up_feedback(db, schemas.Feedback(uid=data_in.uid,survey=data['survey'])) + a=1 + # user_list=list(data_in.survey.keys()) + # sql = f"""select hr_id,interview_id from HR.resumes WHERE uid = '{data_in.uid}' limit 1""" + # res=await ckdb.query_dataframe(sql) + # res_list=res.values.tolist() + # # 判断是否所有人都反馈完成,全部反馈完整则修改反馈状态 + # d = [False for c in res_list if c not in user_list] + # if not d: + # up_sql = f"""ALTER TABLE HR.resumes update teacher_state = 2 WHERE uid = '{data_in.uid}'""" + # await ckdb.execute(up_sql) + return schemas.Msg(code=200, msg='ok', data='') @@ -2453,13 +2480,11 @@ async def interview_teacher( request: Request, data_in: schemas.get_teacher, ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 获取面试反馈 """ - sql = f"""select uid,teacher_back,teacher_txt,teacher_state,star_time,end_time,interview_stage from HR.resumes WHERE uid = '{data_in.uid}' limit 1""" - print(sql) - res = await ckdb.execute(sql) - data = chkData(res) + data=await crud.feedback.one_feedback(db,{'uid':data_in.uid}) return schemas.Msg(code=200, msg='ok', data=data) @@ -2478,3 +2503,4 @@ async def hint( res.append(i) data = sorted(res, key=operator.itemgetter('times')) return schemas.Msg(code=200, msg='ok', data=data) + diff --git a/crud/__init__.py b/crud/__init__.py index cd445a5..7a56336 100644 --- a/crud/__init__.py +++ b/crud/__init__.py @@ -33,3 +33,4 @@ from .crud_owner_info import owner_info from .crud_count_in_worker import count_in_worker from .crud_basic_data import basic_data from .crud_section import section +from .crud_feedback import feedback \ No newline at end of file diff --git a/crud/crud_feedback.py b/crud/crud_feedback.py new file mode 100644 index 0000000..5517001 --- /dev/null +++ b/crud/crud_feedback.py @@ -0,0 +1,29 @@ +from motor.motor_asyncio import AsyncIOMotorDatabase +import schemas +from crud.base import CRUDBase + +__all__ = 'feedback', + +from utils import get_uid + + +class CRUDfeedback(CRUDBase): + # 获取所有数据 + async def all_xiangmu(self, db: AsyncIOMotorDatabase): + return await self.find_many(db, {}) + + # 获取对应条件的数据 + async def one_feedback(self, db: AsyncIOMotorDatabase,where): + return await self.find_one(db, where,{'_id':0}) + + # 修改数据 + async def up_feedback(self, db: AsyncIOMotorDatabase, data_in: schemas.Feedback): + + await self.update_one(db, {'uid': data_in.uid}, {'$set': {'survey': data_in.survey}}) + + # 插入数据 + async def ins_feedback(self, db: AsyncIOMotorDatabase, data_in: schemas.Feedback): + await self.insert_one(db,data_in.dict()) + + +feedback = CRUDfeedback('feedback') diff --git a/schemas/__init__.py b/schemas/__init__.py index 2ea487e..1a00b61 100644 --- a/schemas/__init__.py +++ b/schemas/__init__.py @@ -39,3 +39,4 @@ from .owner_info import * from .count_in_worker import * from .basic_data import * from .section import * +from .feedback import * diff --git a/schemas/feedback.py b/schemas/feedback.py new file mode 100644 index 0000000..49ba4db --- /dev/null +++ b/schemas/feedback.py @@ -0,0 +1,9 @@ +from pydantic import BaseModel +from typing import List + + +class Feedback(BaseModel): + survey: dict # 存储的面试反馈 + uid: str # 求职者唯一id + # survey数据 + # {'voice':1,'thought':1,'diathesis':1,'evaluate':'评价','teacher_back':1} diff --git a/schemas/interview_plan.py b/schemas/interview_plan.py index 3518606..7a07641 100644 --- a/schemas/interview_plan.py +++ b/schemas/interview_plan.py @@ -168,12 +168,7 @@ class nterview(BaseModel): # interview_round: int # 面试轮次 -class interview_teacher(BaseModel): - date: dict # 存储的面试反馈 - teacher_back: int # 面试反馈选择 - uid: str # 求职者唯一id - # date数据 - # {'voice':1,'thought':1,'diathesis':1,'evaluate':'评价'} + class interviews(BaseModel):