Merge remote-tracking branch 'origin/main'

This commit is contained in:
P3ngSaM 2023-07-03 17:08:29 +08:00
commit 28684615de
5 changed files with 52 additions and 51 deletions

View File

@ -35,7 +35,7 @@ def daily_delete(db: Session, item_id):
def daily_query(db: Session, params: DailyQuery, token_data: TokenData) -> [int]:
print(params)
department = token_data.department
auth = token_data.auth_data
auth = token_data.auth_data or ''
params_dict = params.dict()
query = db.query(Daily)
db_model = Daily
@ -44,43 +44,38 @@ def daily_query(db: Session, params: DailyQuery, token_data: TokenData) -> [int]
# 有日报管理权限的可以查看所有 10
# 所有部门动态查看 2
# 动态权限设为了董监高的话,只有自己和董监高可以看
if '10' not in auth_list and '2' not in auth_list and params.type == DailyTypeEnum.部门子公司日报:
if '10' not in auth_list and '2' not in auth_list:
has_auth = [int(item) for item in auth_list if item in ['17', '18']]
departments = [int(item) for item in department.split(",")]
# 筛选能有权限看的日报
query = query.filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == '',
Daily.fill_user == token_data.email
))
if params.type == DailyTypeEnum.部门子公司日报:
业务部门 = []
# 如果是只能看自己日报的,在业务部门内只能看自己日报
if '20' in auth_list:
for dp in db.query(Department).filter(Department.id.in_(departments)):
if dp.type.value == '业务部门':
业务部门.append(dp.id)
业务部门 = []
# 如果是只能看自己日报的,在业务部门内只能看自己日报
if '20' in auth_list:
for dp in db.query(Department).filter(Department.id.in_(departments)):
if dp.type.value == '业务部门':
业务部门.append(dp.id)
# query = query.filter(or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
# Daily.required_auth._in['', None]))
# 能看到自己部门所有动态
# query = query.filter(or_(
# Daily.department.in_(departments),
# and_(Daily.department.not_in(departments),
# # 日报没有权限或者这个人拥有日报查阅所需的权限
# or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
# not Daily.required_auth)
# )))
query_department = [d for d in departments if d not in 业务部门]
if query_department:
query = query.filter(or_(Daily.department.in_(query_department),
Daily.fill_user == token_data.email)).filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == ''
)
)
else:
query = query.filter(Daily.fill_user == token_data.email)
# 能看到自己动态 ,但看不到同部门的保密日报
query_department = [d for d in departments if d not in 业务部门]
if query_department:
query = query.filter(or_(Daily.department.in_(query_department),
)).filter(
or_(*[func.find_in_set(str(item), Daily.required_auth) for item in has_auth],
Daily.required_auth == None, Daily.required_auth == '',
Daily.fill_user == token_data.email
)
)
else:
query = query.filter(Daily.fill_user == token_data.email)
# 能看到自己动态 ,但看不到同部门的保密日报
for key, value in params_dict.items():
if value in ['', None]:
print(key, 'xxxxxxxxxxxx')
continue
if key == 'department' and type(value) == list:
query = query.filter(Daily.department.in_(value))

View File

@ -34,15 +34,15 @@ comment_notice_send = """您于【{daily_time}】发布在【{daily_type}】的
发布正文
{daily_content} """
daily_fill_send = """您好
请于今日下班前登录微信小程序FECR业务助手填报当日您的工作内容
daily_fill_send = """您好:
请于今日下班前登录微信小程序FECR业务助手填报您的工作内容
具体填报步骤
1. 使用手机号或公司邮箱登录FECR业务助手
2. 选择填报-部门日报进行填报
2. 在填报页面中选择您的报送类型进入相关填报页面进行操作
若在使用过程中出现问题请联系小程序管理员王思川wangsichuan@fecr.com.cn帮助您处理
祝你工作顺利"""
若在使用过程中出现问题请联系陈肖珏chenxiaojue@fecr.com.cn帮助您处理
"""
daily_pdf_upload_notice = """您好
今日的运行日报已上传请于微信小程序FECR业务助手->运行日报查看
@ -97,6 +97,7 @@ class DailyNotice:
def send_email(self, title, email, content):
try:
print('邮件', email)
return self.email_send_func(title, email, content)
except Exception as e:
print('邮件发送错误', e)
@ -137,14 +138,16 @@ class DailyNotice:
sended = False
while True:
time.sleep(60)
if is_workday() and datetime.now().hour == 15 and datetime.now().minute < 5 and not sended:
time.sleep(15)
now = datetime.now()
if is_workday() and now.hour == 15 and (35<= now.minute < 35 + 3) and not sended:
sended = True
try:
user_list = get_user_not_fill_daily()
args_list = [['日报填报提醒', user.email, daily_fill_send] for user in user_list]
# self.email_send_thread(args_list)
send_email('日报填报提醒', "fecribd@fecr.com.cn", daily_fill_send)
# args_list = [['日报填报提醒', user.email, daily_fill_send] for user in user_list if user.name in ['王思川','伍春全','李凯','彭森','徐聿成','陈世杰']]
self.email_send_thread(args_list)
# send_email('日报填报提醒', "fecribd@fecr.com.cn", daily_fill_send)
except Exception as e:
print(e, 'start_timer_to_notice_daily_fill错误')
@ -154,6 +157,7 @@ class DailyNotice:
def email_send_thread(self, args_list, sem=5):
with ThreadPoolExecutor(max_workers=sem) as executor:
for args in args_list:
time.sleep(1)
executor.submit(self.send_email, *args)
def init(self):

View File

@ -55,6 +55,7 @@ def file_upload(name: str = Header(None), file: UploadFile = File(...),
mime_type=mime_type,
user_id=token_data.email, common_type=common_type,
file_url=file_url))
print(user_file.to_dict(),'文件上传成功')
return user_file.to_dict()

View File

@ -6,17 +6,17 @@ from typing import Literal, List, Any, Optional
Base = declarative_base()
# user = "root"
# password = "123456"
# host = "127.0.0.1"
# db = 'daily'
user = "root"
password = "123456"
host = "127.0.0.1"
db = 'daily'
# db = 'daily_test'
host = "139.9.249.34"
post = "3306"
user = "fecr"
password = "fecr1988.wcq"
db = "daily_test"
# host = "139.9.249.34"
# post = "3306"
# user = "fecr"
# password = "fecr1988.wcq"
# db = "daily_test"
def get_engine():
engine = create_engine(

View File

@ -8,10 +8,11 @@ from Config.log import uvicorn_log_config
from Mods.Notice.Utils import daily_notice
from Router import DailyRouter, UserRouter, AuthRouter, FileRouter
from Utils.MiddlewareUtils import exception_handler, validation_exception_handler
from Utils.PrintUtils import hook_print
from Utils.SqlAlchemyUtils import init_database, get_db_i
from fastapi.staticfiles import StaticFiles
from Mods import Router as ModsRouter
hook_print()
init_database()
app = FastAPI(
title="日报小程序",