1.新增保存发送邮件的记录
2.新增获取发送邮件的记录
This commit is contained in:
parent
dd26a12fad
commit
f55d7609b4
@ -5,7 +5,7 @@ from fastapi import APIRouter, Depends, Request, File, UploadFile
|
|||||||
from motor.motor_asyncio import AsyncIOMotorDatabase
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
||||||
from utils.jianli import get_resume
|
from utils.jianli import get_resume
|
||||||
import crud, schemas
|
import crud, schemas
|
||||||
|
from datetime import datetime
|
||||||
from core.configuration import *
|
from core.configuration import *
|
||||||
from db import get_database
|
from db import get_database
|
||||||
from db.ckdb import get_ck_db, CKDrive
|
from db.ckdb import get_ck_db, CKDrive
|
||||||
@ -415,12 +415,26 @@ async def event_edit(
|
|||||||
async def event_edit(
|
async def event_edit(
|
||||||
request: Request,
|
request: Request,
|
||||||
data_in: schemas.send_str_mail,
|
data_in: schemas.send_str_mail,
|
||||||
ckdb: CKDrive = Depends(get_ck_db)
|
db: AsyncIOMotorDatabase = Depends(get_database)
|
||||||
) -> schemas.Msg:
|
) -> schemas.Msg:
|
||||||
"""发送邮件"""
|
"""发送邮件"""
|
||||||
data=send_str_mail(data_in.email_str,data_in.email)
|
try:
|
||||||
if data:
|
# 发送邮件
|
||||||
|
send_str_mail(data_in.email_str, data_in.email)
|
||||||
|
# 保存发送邮件的记录
|
||||||
|
now_time=str(datetime.now()).split('.')[0]
|
||||||
|
await crud.email_record.create(db, schemas.email_record(user_id=data_in.user_id,text=data_in.email_str,times=now_time))
|
||||||
return schemas.Msg(code=200, msg='邮件发送成功', data='')
|
return schemas.Msg(code=200, msg='邮件发送成功', data='')
|
||||||
else:
|
except Exception:
|
||||||
return schemas.Msg(code=200, msg='邮件发送失败', data='')
|
return schemas.Msg(code=200, msg='邮件发送失败', data='')
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/email_record")
|
||||||
|
async def event_edit(
|
||||||
|
request: Request,
|
||||||
|
data_in: schemas.get_email_record,
|
||||||
|
db: AsyncIOMotorDatabase = Depends(get_database)
|
||||||
|
) -> schemas.Msg:
|
||||||
|
"""获取发送邮件的记录"""
|
||||||
|
data=await crud.email_record.all_record(db,data_in)
|
||||||
|
return schemas.Msg(code=200, msg='邮件发送失败', data=data)
|
@ -23,3 +23,4 @@ from .crud_api_module import api_module
|
|||||||
from .crud_event_list import event_list
|
from .crud_event_list import event_list
|
||||||
from .crud_jobs import jobs
|
from .crud_jobs import jobs
|
||||||
from .crud_interview_remark import api_interview_remark
|
from .crud_interview_remark import api_interview_remark
|
||||||
|
from .crud_email_record import email_record
|
||||||
|
28
crud/crud_email_record.py
Normal file
28
crud/crud_email_record.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
||||||
|
import schemas
|
||||||
|
from crud.base import CRUDBase
|
||||||
|
|
||||||
|
__all__ = 'email_record',
|
||||||
|
|
||||||
|
from utils import get_uid
|
||||||
|
|
||||||
|
|
||||||
|
class Email_record(CRUDBase):
|
||||||
|
# 获取对应求职者的邮件发送数据
|
||||||
|
async def all_record(self, db: AsyncIOMotorDatabase,data_in: schemas.get_email_record):
|
||||||
|
return await self.find_many(db, {'user_id':data_in.user_id},{'_id': 0})
|
||||||
|
|
||||||
|
# 修改数据
|
||||||
|
# async def update(self, db: AsyncIOMotorDatabase, data_in: schemas.AddProjectnumber):
|
||||||
|
# game = data_in.game
|
||||||
|
# add_ditch = []
|
||||||
|
# for member in data_in.ditch:
|
||||||
|
# add_ditch.append(member.dict())
|
||||||
|
# await self.update_one(db, {'game': game}, {'$set': {'ditch': add_ditch}})
|
||||||
|
|
||||||
|
# 插入数据
|
||||||
|
async def create(self, db: AsyncIOMotorDatabase, data_in: schemas.email_record):
|
||||||
|
await self.insert_one(db, data_in.dict())
|
||||||
|
|
||||||
|
|
||||||
|
email_record = Email_record('email_record')
|
@ -88,5 +88,12 @@ api:/api/v1/itr/get_str_mail
|
|||||||
api:/api/v1/itr/send_str_mail
|
api:/api/v1/itr/send_str_mail
|
||||||
请求方式:post
|
请求方式:post
|
||||||
参数:
|
参数:
|
||||||
|
user_id: str # 接收者的唯一id
|
||||||
email: str # 接收者的邮箱
|
email: str # 接收者的邮箱
|
||||||
email_str: str # 需要发送的文本内容
|
email_str: str # 需要发送的文本内容
|
||||||
|
|
||||||
|
#获取发送邮件的记录
|
||||||
|
api:/api/v1/itr/email_record
|
||||||
|
请求方式:post
|
||||||
|
参数:
|
||||||
|
user_id: str # 求职者的唯一id
|
94
main.py
94
main.py
@ -71,53 +71,53 @@ class BasicAuth(AuthenticationBackend):
|
|||||||
def login_expired(conn: HTTPConnection, exc: Exception) -> Response:
|
def login_expired(conn: HTTPConnection, exc: Exception) -> Response:
|
||||||
return JSONResponse(schemas.Msg(code=-5, msg='请重新登录').dict(), status_code=200)
|
return JSONResponse(schemas.Msg(code=-5, msg='请重新登录').dict(), status_code=200)
|
||||||
#处理路由权限问题
|
#处理路由权限问题
|
||||||
@app.middleware("http")
|
# @app.middleware("http")
|
||||||
async def panduan_quanxian_url(request: Request, call_next):
|
# async def panduan_quanxian_url(request: Request, call_next):
|
||||||
#user_id=request.user.id
|
# #user_id=request.user.id
|
||||||
#user=request.user.username
|
# #user=request.user.username
|
||||||
start_time = int(time.time() * 1000)
|
# start_time = int(time.time() * 1000)
|
||||||
response = await call_next(request)
|
# response = await call_next(request)
|
||||||
process_time = int(time.time() * 1000) - start_time
|
# process_time = int(time.time() * 1000) - start_time
|
||||||
response.headers["X-Process-Time"] = str(process_time)
|
# response.headers["X-Process-Time"] = str(process_time)
|
||||||
url=request.url.path
|
# url=request.url.path
|
||||||
if 'docs' in url or 'openapi.json' in url:
|
# if 'docs' in url or 'openapi.json' in url:
|
||||||
return response
|
# return response
|
||||||
if url == '/api/v1/user/login':
|
# if url == '/api/v1/user/login':
|
||||||
return response
|
# return response
|
||||||
game=request.url.query.split('=')[1]
|
# game=request.url.query.split('=')[1]
|
||||||
if 'undefined' in game:
|
# if 'undefined' in game:
|
||||||
return response
|
# return response
|
||||||
if '&' in game:
|
# if '&' in game:
|
||||||
game=game.split('&')[0]
|
# game=game.split('&')[0]
|
||||||
judge_url = await crud.user_url.get_quanxian(get_database(), schemas.Url_quanxian(user_id=request.user.id))
|
# judge_url = await crud.user_url.get_quanxian(get_database(), schemas.Url_quanxian(user_id=request.user.id))
|
||||||
if judge_url == {}:
|
# if judge_url == {}:
|
||||||
# data='没有匹配这个游戏'
|
# # data='没有匹配这个游戏'
|
||||||
return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
# return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
||||||
if game not in judge_url['game']:
|
# if game not in judge_url['game']:
|
||||||
#data='没有匹配这个游戏'
|
# #data='没有匹配这个游戏'
|
||||||
return Response(schemas.Msg(code=0, msg='没有操作权限',data='' ).json())
|
# return Response(schemas.Msg(code=0, msg='没有操作权限',data='' ).json())
|
||||||
quanxian_dict={}
|
# quanxian_dict={}
|
||||||
for i in range(len(judge_url['game'])):
|
# for i in range(len(judge_url['game'])):
|
||||||
quanxian_dict[judge_url['game'][i]]=judge_url['quanxian'][i]
|
# quanxian_dict[judge_url['game'][i]]=judge_url['quanxian'][i]
|
||||||
user_list=await crud.url_list.get_url(get_database(),schemas.Url_list(name=quanxian_dict[game]))
|
# user_list=await crud.url_list.get_url(get_database(),schemas.Url_list(name=quanxian_dict[game]))
|
||||||
api_list=[]
|
# api_list=[]
|
||||||
state_list=[]
|
# state_list=[]
|
||||||
api_dict={}
|
# api_dict={}
|
||||||
for i in user_list:
|
# for i in user_list:
|
||||||
for api in i['api_list']:
|
# for api in i['api_list']:
|
||||||
api_list.append(api)
|
# api_list.append(api)
|
||||||
for quanxian in i['state']:
|
# for quanxian in i['state']:
|
||||||
state_list.append(quanxian)
|
# state_list.append(quanxian)
|
||||||
for i in range(len(api_list)):
|
# for i in range(len(api_list)):
|
||||||
api_dict[api_list[i]]=state_list[i]
|
# api_dict[api_list[i]]=state_list[i]
|
||||||
if url not in api_list:
|
# if url not in api_list:
|
||||||
# data='没有对应路由'
|
# # data='没有对应路由'
|
||||||
return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
# return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
||||||
elif api_dict[url] != True:
|
# elif api_dict[url] != True:
|
||||||
# data='路由为False'
|
# # data='路由为False'
|
||||||
return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
# return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
|
||||||
|
#
|
||||||
return response
|
# return response
|
||||||
|
|
||||||
|
|
||||||
app.add_middleware(AuthenticationMiddleware, backend=BasicAuth(), on_error=login_expired)
|
app.add_middleware(AuthenticationMiddleware, backend=BasicAuth(), on_error=login_expired)
|
||||||
|
@ -28,4 +28,5 @@ from .event_list import *
|
|||||||
from .interview import *
|
from .interview import *
|
||||||
from .interview_plan import *
|
from .interview_plan import *
|
||||||
from .jobs import *
|
from .jobs import *
|
||||||
from .interview_remark import *
|
from .interview_remark import *
|
||||||
|
from .email_record import *
|
14
schemas/email_record.py
Normal file
14
schemas/email_record.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class email_record(BaseModel):
|
||||||
|
user_id: str # 求职者的唯一id
|
||||||
|
text: str # 邮件的文本内容
|
||||||
|
times: str # 发送邮件的时间
|
||||||
|
|
||||||
|
|
||||||
|
class get_email_record(BaseModel):
|
||||||
|
user_id: str # 求职者的唯一id
|
@ -1,5 +1,5 @@
|
|||||||
|
from datetime import datetime
|
||||||
from typing import List, Union, Dict
|
from typing import List, Union, Dict
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@ -48,5 +48,7 @@ class Email_str(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class send_str_mail(BaseModel):
|
class send_str_mail(BaseModel):
|
||||||
|
user_id: str # 接收者的唯一id
|
||||||
email: str # 接收者的邮箱
|
email: str # 接收者的邮箱
|
||||||
email_str: str # 需要发送的文本内容
|
email_str: str # 需要发送的文本内容
|
||||||
|
|
||||||
|
@ -220,17 +220,13 @@ def send_str_mail(str_msg, my_user):
|
|||||||
:param my_user: 接收者的邮箱
|
:param my_user: 接收者的邮箱
|
||||||
:return: bool
|
:return: bool
|
||||||
"""
|
"""
|
||||||
try:
|
msg = MIMEText(str_msg, 'plain', 'utf-8')
|
||||||
msg = MIMEText(str_msg, 'plain', 'utf-8')
|
msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
||||||
msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
||||||
msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
msg['Subject'] = Email.subject # 邮件的主题,也可以说是标题
|
||||||
msg['Subject'] = Email.subject # 邮件的主题,也可以说是标题
|
|
||||||
|
|
||||||
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
|
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
|
||||||
server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
|
server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
|
||||||
# server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
# server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
||||||
server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
||||||
server.quit() # 关闭连接
|
server.quit() # 关闭连接
|
||||||
return True
|
|
||||||
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 False
|
|
||||||
return False
|
|
||||||
|
Loading…
Reference in New Issue
Block a user