1.保存附件id
2.获取标准版简历
This commit is contained in:
parent
baddcf7b36
commit
cd3098675e
@ -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}'"""
|
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)
|
df = await ckdb.query_dataframe(sql)
|
||||||
# xlsx表名
|
# xlsx表名
|
||||||
xlsx_name =data_in.start_time + '~' + data_in.end_time + '(包含起止日)'
|
xlsx_name = data_in.start_time + '~' + data_in.end_time + '(包含起止日)'
|
||||||
datas = []
|
datas = []
|
||||||
for i in range(len(df)):
|
for i in range(len(df)):
|
||||||
one_data = []
|
one_data = []
|
||||||
@ -355,10 +355,43 @@ async def event_edit(
|
|||||||
@router.post("/find_remark")
|
@router.post("/find_remark")
|
||||||
async def event_edit(
|
async def event_edit(
|
||||||
request: Request,
|
request: Request,
|
||||||
data_in: schemas.Ins_Job,
|
data_in: schemas.FindRemark,
|
||||||
db: AsyncIOMotorDatabase = Depends(get_database),
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
||||||
) -> schemas.Msg:
|
) -> schemas.Msg:
|
||||||
"""查找备注"""
|
"""查找备注"""
|
||||||
data = await crud.api_interview_remark.get_interview_remarks(db, data_in)
|
data = await crud.api_interview_remark.get_interview_remarks(db, data_in)
|
||||||
return schemas.Msg(code=200, msg='ok', data=data)
|
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='')
|
||||||
|
@ -18,3 +18,17 @@ education_dict = {1: '大专', 2: '本科', 3: '研究生', 4: '博士', 5: '硕
|
|||||||
mmended_state_dict = {0: '未推荐', 1: '已推荐'}
|
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 # 开始时间
|
start_time: str # 开始时间
|
||||||
end_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):
|
class Timesinter(BaseModel):
|
||||||
start_time: str # 开始时间
|
start_time: str # 开始时间
|
||||||
end_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