1.保存附件id
2.获取标准版简历
This commit is contained in:
parent
baddcf7b36
commit
cd3098675e
@ -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='')
|
||||
|
@ -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: '其他'}
|
||||
|
@ -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
|
||||
|
@ -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
120
utils/casbin/dingding.py
Normal 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
|
Loading…
Reference in New Issue
Block a user