|
@@ -14,12 +14,15 @@ from typing import Optional
|
|
|
from utils.StripTagsHTMLParser import *
|
|
|
from common.db import db_event_management, db_user, db_area, db_emergency_plan
|
|
|
from common.security import valid_access_token
|
|
|
+from common.enc import mpfun, emergency_contact_info_data
|
|
|
import traceback
|
|
|
+from common.db import db_czrz
|
|
|
from utils import *
|
|
|
from datetime import datetime, timedelta
|
|
|
import pandas as pd
|
|
|
+from common.auth_user import *
|
|
|
from common.db import db_dept
|
|
|
-from exceptions import AppException
|
|
|
+from exceptions import AppException, HmacException
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
@@ -51,6 +54,10 @@ async def get_emergency_contact_list(
|
|
|
# 执行分页查询
|
|
|
contact_infos = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
|
|
|
+ for info in contact_infos:
|
|
|
+ if emergency_contact_info_data.sign_valid_row(info) == False:
|
|
|
+ raise HmacException(500, "应急预案人员信息表验证异常,已被非法篡改")
|
|
|
+
|
|
|
# 将查询结果转换为列表形式的字典
|
|
|
contact_infos_list = [
|
|
|
{
|
|
@@ -59,7 +66,7 @@ async def get_emergency_contact_list(
|
|
|
"unitName": info.unit_name,
|
|
|
"contactName": info.contact_name,
|
|
|
"position": info.position,
|
|
|
- "phone": info.yue_gov_ease_phone,
|
|
|
+ "phone": mpfun.dec_data(info.yue_gov_ease_phone),
|
|
|
"create_time": info.create_time.strftime('%Y-%m-%d')
|
|
|
}
|
|
|
for info in contact_infos
|
|
@@ -72,6 +79,12 @@ async def get_emergency_contact_list(
|
|
|
"data": contact_infos_list,
|
|
|
"total": total_items
|
|
|
}
|
|
|
+
|
|
|
+ except HmacException as e:
|
|
|
+ return {
|
|
|
+ "code": e.code,
|
|
|
+ "msg": e.msg
|
|
|
+ }
|
|
|
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
@@ -110,7 +123,7 @@ async def get_emergency_contact_id_info(
|
|
|
"unitName": contact.unit_name,
|
|
|
"contactName": contact.contact_name,
|
|
|
"position": contact.position,
|
|
|
- "phone": contact.yue_gov_ease_phone,
|
|
|
+ "phone": mpfun.dec_data(contact.yue_gov_ease_phone),
|
|
|
"create_time": contact.create_time.strftime('%Y-%m-%d')
|
|
|
}
|
|
|
|
|
@@ -126,8 +139,10 @@ async def get_emergency_contact_id_info(
|
|
|
|
|
|
@router.post('/create')
|
|
|
async def create_contact(
|
|
|
+ request: Request,
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
@@ -148,13 +163,18 @@ async def create_contact(
|
|
|
contact_name = contact_name,
|
|
|
position = position,
|
|
|
yue_gov_ease_phone = yue_gov_ease_phone,
|
|
|
- create_by = user_id
|
|
|
+ create_by = user_id,
|
|
|
+ sign = ''
|
|
|
)
|
|
|
|
|
|
# 添加到数据库会话并提交
|
|
|
db.add(new_contact)
|
|
|
db.commit()
|
|
|
|
|
|
+ emergency_contact_info_data.sign_table()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理新建应急预案人员信息成功", request.client.host)
|
|
|
+
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
|
"code": 200,
|
|
@@ -162,13 +182,16 @@ async def create_contact(
|
|
|
"data": None
|
|
|
}
|
|
|
except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
# 处理异常
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
@router.put('/update')
|
|
|
async def update_contact(
|
|
|
+ request: Request,
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
@@ -196,11 +219,14 @@ async def update_contact(
|
|
|
if "position" in body:
|
|
|
contact.position = body['position']
|
|
|
if "phone" in body:
|
|
|
- contact.yue_gov_ease_phone = body['phone']
|
|
|
+ contact.yue_gov_ease_phone = mpfun.enc_data(body['phone'])
|
|
|
|
|
|
- # 更新到数据库会话并提交
|
|
|
+ contact.sign = emergency_contact_info_data.get_sign_hmac(contact)
|
|
|
+ contact.update_time = datetime.now()
|
|
|
db.commit()
|
|
|
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理更新应急预案人员信息【{unit_name}】成功", request.client.host)
|
|
|
+
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
|
"code": 200,
|
|
@@ -208,14 +234,17 @@ async def update_contact(
|
|
|
"data": None
|
|
|
}
|
|
|
except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
# 处理异常
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
@router.delete('/delete')
|
|
|
async def delete_emergency_plans(
|
|
|
- ids: list,
|
|
|
- db: Session = Depends(get_db),
|
|
|
+ request: Request,
|
|
|
+ ids: list,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
@@ -231,9 +260,13 @@ async def delete_emergency_plans(
|
|
|
})
|
|
|
for contact in contacts:
|
|
|
contact.del_flag = '2'
|
|
|
- contact.create_by=user_id
|
|
|
+ contact.create_by = user_id
|
|
|
+ contact.update_time = datetime.now()
|
|
|
+ contact.sign = emergency_contact_info_data.get_sign_hmac(contact)
|
|
|
+
|
|
|
# 更新到数据库会话并提交
|
|
|
db.commit()
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理删除应急预案人员信息成功", request.client.host)
|
|
|
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
@@ -247,9 +280,11 @@ async def delete_emergency_plans(
|
|
|
|
|
|
@router.delete('/delete/{id}')
|
|
|
async def delete_emergency_plans(
|
|
|
+ request: Request,
|
|
|
id: int,
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
@@ -264,9 +299,13 @@ async def delete_emergency_plans(
|
|
|
'errmsg': '联系人不存在'
|
|
|
})
|
|
|
contact.del_flag = '2'
|
|
|
- contact.create_by=user_id
|
|
|
+ contact.create_by = user_id
|
|
|
+ contact.update_time = datetime.now()
|
|
|
+ contact.sign = emergency_contact_info_data.get_sign_hmac(contact)
|
|
|
+
|
|
|
# 更新到数据库会话并提交
|
|
|
db.commit()
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理删除应急预案人员信息成功", request.client.host)
|
|
|
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
@@ -280,8 +319,10 @@ async def delete_emergency_plans(
|
|
|
|
|
|
@router.post('/createImport')
|
|
|
async def create_contact(
|
|
|
+ request: Request,
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
@@ -374,7 +415,8 @@ async def create_contact(
|
|
|
contact_name = contact['联系人'],
|
|
|
position = contact['职务'],
|
|
|
yue_gov_ease_phone = contact['粤政易手机号码'],
|
|
|
- create_by = user_id
|
|
|
+ create_by = user_id,
|
|
|
+ sign = ''
|
|
|
)
|
|
|
|
|
|
# 添加到数据库会话
|
|
@@ -382,6 +424,11 @@ async def create_contact(
|
|
|
# 提交
|
|
|
db.commit()
|
|
|
|
|
|
+ emergency_contact_info_data.sign_table()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理导入应急预案人员信息成功", request.client.host)
|
|
|
+
|
|
|
+
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
|
"code": 200,
|