libushang 1 ay önce
ebeveyn
işleme
31f188903b
1 değiştirilmiş dosya ile 58 ekleme ve 11 silme
  1. 58 11
      routers/api/emergencyPlans/contact.py

+ 58 - 11
routers/api/emergencyPlans/contact.py

@@ -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,