1.保存附件id

2.获取标准版简历
This commit is contained in:
李伟 2022-07-15 14:37:06 +08:00
parent baddcf7b36
commit cd3098675e
5 changed files with 193 additions and 4 deletions

View File

@ -12,7 +12,7 @@ from fastapi import APIRouter, Depends, Request, File, UploadFile
from motor.motor_asyncio import AsyncIOMotorDatabase
from pandas import DataFrame
from starlette.responses import StreamingResponse
from utils.jianli import get_resume
from utils.jianli import get_resume
import crud, schemas
from common import *
@ -320,7 +320,7 @@ async def download_inter(
interview_sign FROM HR.resumes WHERE toDate(star_time) >= '{data_in.start_time}' and toDate(star_time) <= '{data_in.end_time}'"""
df = await ckdb.query_dataframe(sql)
# xlsx表名
xlsx_name =data_in.start_time + '~' + data_in.end_time + '(包含起止日)'
xlsx_name = data_in.start_time + '~' + data_in.end_time + '(包含起止日)'
datas = []
for i in range(len(df)):
one_data = []
@ -355,10 +355,43 @@ async def event_edit(
@router.post("/find_remark")
async def event_edit(
request: Request,
data_in: schemas.Ins_Job,
data_in: schemas.FindRemark,
db: AsyncIOMotorDatabase = Depends(get_database),
) -> schemas.Msg:
"""查找备注"""
data = await crud.api_interview_remark.get_interview_remarks(db, data_in)
return schemas.Msg(code=200, msg='ok', data=data)
@router.post("/find_criterion")
async def event_edit(
request: Request,
data_in: schemas.get_uid,
ckdb: CKDrive = Depends(get_ck_db)
) -> schemas.Msg:
"""获取标准版简历"""
sql = f"""
select name,phone,job_name,work_exp,owner_name,education,work_undergo,school,specialty,
graduate_time,mail,account,id_card,gender,nation,age,at_school,specialty_do,hope_money,resume_affix_id,
review,work_list,project_undergo,upgrade,come_time,now_money,work_in_time from HR.resumes WHERE uid = '{data_in.uid}'
"""
df = await ckdb.query_dataframe(sql)
data = {}
column = df.columns
for i in column:
data[i] = df[i][0]
return schemas.Msg(code=200, msg='ok', data=data)
@router.post("/resume_affix")
async def event_edit(
request: Request,
data_in: schemas.Post_uid,
ckdb: CKDrive = Depends(get_ck_db)
) -> schemas.Msg:
"""保存附件id"""
sql = f"""
ALTER table HR.resumes update resume_affix_id = {data_in.resume_affix_id} WHERE uid = '{data_in.uid}'
"""
await ckdb.execute(sql)
return schemas.Msg(code=200, msg='ok', data='')

View File

@ -17,4 +17,18 @@ education_dict = {1: '大专', 2: '本科', 3: '研究生', 4: '博士', 5: '硕
# 推荐状态
mmended_state_dict = {0: '未推荐', 1: '已推荐'}
# 当前面试状态
interview_state_dict = {1: '待安排', 2: '面试中', 3: '已结束'}
interview_state_dict = {1: '待安排', 2: '面试中', 3: '已结束'}
# 候选人状态
men_state_dict = {1: '未反馈', 2: '已接受', 3: '已拒绝', 4: '未到场'}
# 面试官状态
teacher_state_dict = {1: '未反馈', 2: '已反馈'}
# 面试官反馈
teacher_back_dict = {1: '满意', 2: '非常满意', 3: '不满意', 4: '非常不满意'}
# offer状态
offer_state_dict = {1: '未创建', 2: '未发送', 3: '待接受', 4: '已接受', 5: '已拒绝'}
# offer审批状态
offer_exam_state_dict = {1: '未发起', 2: '审批中', 3: '已通过', 4: '已驳回', 5: '已撤回'}
# 通知状态
notice_state_dict = {0: '未通知', 1: '已通知'}
# 淘汰原因
pass_why_dict = {1: '招聘需求变更', 2: '福利待遇不匹配', 3: '与公司文化不符', 4: '淘汰', 5: '胜任力不足', 6: '没有回应', 7: '其他'}

View File

@ -51,3 +51,16 @@ api:/api/v1/itr/download_interview
参数:
start_time: str # 开始时间
end_time: str # 结束时间
#获取标准版简历
api:/api/v1/itr/find_criterion
请求方式post
参数:
uid: str # 面试者简历在CK中的唯一标识
#保存附件id
api:/api/v1/itr/resume_affix
请求方式post
参数:
uid: str # 面试者简历在CK中的唯一标识
resume_affix_id: List[str] # 附件id

View File

@ -21,3 +21,12 @@ class Interview(BaseModel):
class Timesinter(BaseModel):
start_time: str # 开始时间
end_time: str # 结束时间
class Post_uid(BaseModel):
uid: str # 面试者简历在CK中的唯一标识
resume_affix_id: List[str] # 附件id
class get_uid(BaseModel):
uid: str # 面试者简历在CK中的唯一标识

120
utils/casbin/dingding.py Normal file
View File

@ -0,0 +1,120 @@
import json
import requests
from db.redisdb import get_redis_pool
redisdb=get_redis_pool()
def get_token():
"""
获取钉钉token
:return:
"""
corpid = 'dingd10b2fc689700431'
corpsecret = 'eL2gsI4Hgqx__FC8T5Bjmue_zQoyG5sm-SJqEDdS4NmKPTzFLQ2G93CX24VP2_n3'
url = f"https://oapi.dingtalk.com/gettoken"
# 请求头
headers = {'Content-type': 'text/html;charset=utf-8', 'Access-Control-Allow-Origin': '*'}
# query查询参数
query = {
'corpid': corpid,
'corpsecret': corpsecret
}
r = requests.get(url=url, params=query, headers=headers)
date = r.json()
tokens = date['access_token']
# print(tokens)
return tokens
def get_uid(dept_id):
"""
获取钉钉部门的成员名和uid
:return:
"""
url = "https://oapi.dingtalk.com/topapi/user/listsimple"
query = {
'access_token': get_redistoken()
}
data = {
'dept_id': dept_id,
'cursor': 0,
'size': 100
}
r = requests.post(url=url, params=query, data=data)
datas = r.json()
return datas['result']['list']
def get_zi():
"""
获取钉钉的所有部门列表
:return:
"""
url = "https://oapi.dingtalk.com/department/list"
query = {
'access_token': get_redistoken()
}
r = requests.get(url=url, params=query)
datas = r.json()
return datas['department']
def send_date(name, job, times, hr, interview_name, userid_list):
"""
发送消息至钉钉
:param name: 面试者姓名
:param job: 面试岗位
:param times: 面试时间
:param hr: hr名字
:param interview_name: 面试官
:param userid_list: 要发送的人的uid列表
:return:
"""
userid_list = ','.join(userid_list)
url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"
query = {
'access_token': get_redistoken()
}
data = {
'agent_id': 792756727,
"to_all_user": "false",
'userid_list': userid_list,
"msg": {
"msgtype": "text",
"text": {
"content": f"【面试通知】\n面试者:{name}\n面试岗位:{job}\n面试时间:{times}\nHR{hr}\n面试官:{interview_name}"
}
}
}
json_data = json.dumps(data)
# 发送消息到钉钉
requests.post(url=url, params=query, data=json_data)
def get_redistoken():
"""
获取redis中存的token如没有重新获取再存数据库中再获取
:return: str
"""
redistoken = redisdb.get('token')
if redistoken == None:
# token = '16524325693811559'
token = get_token()
redisdb.set(name='token', value=token, ex=3600) # 1小时 3600
redistoken = redisdb.get('token')
return redistoken.decode()
def qujian_time(start_time, end_time):
"""
把两个时间变成区间
:param start_time: '2022-07-01 10:00:00'
:param end_time: '2022-07-01 10:30:00'
:return: '2022-07-01 10:00:00~10:30:00'
"""
timess = str(end_time).split(' ')[-1]
return str(start_time) + '~' + timess