From dd26a12fad17adc52c5e3202722e149492eb7540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Mon, 18 Jul 2022 15:12:06 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=8E=B7=E5=8F=96=E8=A6=81=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=9A=84=E9=82=AE=E4=BB=B6=E6=96=87=E6=9C=AC=E5=86=85=E5=AE=B9?= =?UTF-8?q?=202.=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 46 +++++++++++++++++++++++++++++-- core/config.py | 5 +++- liwei_接口文档.md | 26 +++++++++++++++++ schemas/interview_plan.py | 20 ++++++++++++++ utils/func.py | 29 +++++++++++++++++++ 5 files changed, 123 insertions(+), 3 deletions(-) diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index c6022cf..c08c32d 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -10,9 +10,8 @@ from core.configuration import * from db import get_database from db.ckdb import get_ck_db, CKDrive - from models.interview_zsgc import InterviewDo -from utils import get_time, qujian_time, Download_xlsx +from utils import get_time, qujian_time, Download_xlsx, send_str_mail router = APIRouter() @@ -382,3 +381,46 @@ async def event_edit( """ await ckdb.execute(sql) return schemas.Msg(code=200, msg='ok', data='') + + +@router.post("/updata_entry") +async def event_edit( + request: Request, + data_in: schemas.Entry, + ckdb: CKDrive = Depends(get_ck_db) +) -> schemas.Msg: + """修改入职状态""" + sql = f""" + ALTER table HR.resumes update interview_stage = {data_in.interview_stage} WHERE uid = '{data_in.uid}' + """ + await ckdb.execute(sql) + return schemas.Msg(code=200, msg='ok', data='') + + +@router.post("/get_str_mail") +async def event_edit( + request: Request, + data_in: schemas.Email_str, + ckdb: CKDrive = Depends(get_ck_db) +) -> schemas.Msg: + """获取邮件文本""" + data = f""" + {data_in.name},您好\n\n感谢关注乐谷在线科技有限公司!很高兴的通知您通过了我们的面试,真诚的邀请您加入我们的团队\n职位:{data_in.job}\n入职时间:{data_in.times} + \n薪酬:{data_in.money}\n联系人:{data_in.hr_name}\n联系电话:{data_in.phone}\n联系邮箱:{data_in.email}\n\n如有问题请用以上联系方式及时与我们沟通,谢谢!\n(系统邮件,请勿回复) + """ + return schemas.Msg(code=200, msg='ok', data=data) + + +@router.post("/send_str_mail") +async def event_edit( + request: Request, + data_in: schemas.send_str_mail, + ckdb: CKDrive = Depends(get_ck_db) +) -> schemas.Msg: + """发送邮件""" + data=send_str_mail(data_in.email_str,data_in.email) + if data: + return schemas.Msg(code=200, msg='邮件发送成功', data='') + else: + return schemas.Msg(code=200, msg='邮件发送失败', data='') + diff --git a/core/config.py b/core/config.py index da47d8d..4d4b989 100644 --- a/core/config.py +++ b/core/config.py @@ -389,7 +389,10 @@ class Settings(BaseSettings): class Config: case_sensitive = True - +class Email(Settings): + my_sender = '250213850@qq.com' # 发件人邮箱账号 + my_pass = 'whrsugtgkstibjdj' # 发件人邮箱密码 + subject = '入职通知' # 邮件的主题,也可以说是标题 # class Debug(Settings): # MDB_HOST: str = '10.0.0.9' diff --git a/liwei_接口文档.md b/liwei_接口文档.md index 57871b0..df71f60 100644 --- a/liwei_接口文档.md +++ b/liwei_接口文档.md @@ -64,3 +64,29 @@ api:/api/v1/itr/resume_affix 参数: uid: str # 面试者简历在CK中的唯一标识 resume_affix_id: List[str] # 附件id + +#修改入职状态 +api:/api/v1/itr/updata_entry +请求方式:post +参数: + uid: str # 面试者简历在CK中的唯一标识 + interview_stage: int # 修改入职状态 6代表放弃入职,7代表已入职 + +#获取要发送的邮件文本 +api:/api/v1/itr/get_str_mail +请求方式:post +参数: + name: str # 求职者名字 + job: str # 应聘的职位 + times: str # 入职时间 + money: str # 薪资 + hr_name: str # hr联系人 + phone: str # hr联系电话 + email: str # hr邮箱 + +#发送邮件 +api:/api/v1/itr/send_str_mail +请求方式:post +参数: + email: str # 接收者的邮箱 + email_str: str # 需要发送的文本内容 \ No newline at end of file diff --git a/schemas/interview_plan.py b/schemas/interview_plan.py index 1db63fc..1925ef1 100644 --- a/schemas/interview_plan.py +++ b/schemas/interview_plan.py @@ -30,3 +30,23 @@ class Post_uid(BaseModel): class get_uid(BaseModel): uid: str # 面试者简历在CK中的唯一标识 + + +class Entry(BaseModel): + uid: str # 面试者简历在CK中的唯一标识 + interview_stage: int # 修改入职状态 + + +class Email_str(BaseModel): + name: str # 求职者名字 + job: str # 应聘的职位 + times: str # 入职时间 + money: str # 薪资 + hr_name: str # hr联系人 + phone: str # hr联系电话 + email: str # hr邮箱 + + +class send_str_mail(BaseModel): + email: str # 接收者的邮箱 + email_str: str # 需要发送的文本内容 diff --git a/utils/func.py b/utils/func.py index cdbe259..a4250e7 100644 --- a/utils/func.py +++ b/utils/func.py @@ -2,6 +2,11 @@ import random import time import datetime import pandas as pd +import smtplib +from email.mime.text import MIMEText +from email.utils import formataddr + +from core.config import Email def get_uid(): @@ -205,3 +210,27 @@ def qujian_time(start_time, end_time): """ timess = str(end_time).split(' ')[-1] return str(start_time) + '~' + timess + + +# 发送的文本邮件 +def send_str_mail(str_msg, my_user): + """ + 发送的文本邮件 + :param str_msg: 发送的邮件内容 + :param my_user: 接收者的邮箱 + :return: bool + """ + try: + msg = MIMEText(str_msg, 'plain', 'utf-8') + msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 + msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 + msg['Subject'] = Email.subject # 邮件的主题,也可以说是标题 + + server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25 + server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 + # server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 + server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 + server.quit() # 关闭连接 + return True + except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 False + return False