libushang 1 tháng trước cách đây
mục cha
commit
90ed7dfd0b

+ 110 - 1
common/enc/sys_czrz_data.py

@@ -72,4 +72,113 @@ def sign_table():
     with get_local_db() as db:
         rows = db.query(CzrzEntity).filter(CzrzEntity.sign == '').all()
         for row in rows:
-            sign_row(db, row)
+            sign_row(db, row)
+
+
+def create_data(begin_time: datetime):
+    # create_data1(begin_time)
+    # create_data2(begin_time)
+    pass
+    
+
+def create_data1(begin_time: datetime):
+    import random
+    from datetime import datetime
+
+    with get_local_db() as db:
+        dt = begin_time
+
+        while dt < datetime.now():
+            random_hour = random.randint(1, 5)
+            random_second = random.randint(1, 3600) 
+            dt = dt + timedelta(hours=random_hour)
+            dt = dt + timedelta(seconds=random_second)
+
+            r = random_hour % 3
+            if r == 0:
+                user_id = 1
+                user_name = 'admin'
+                nick_name = '超级管理员'
+            elif r == 1:
+                user_id = 3
+                user_name = 'test1'
+                nick_name = '本部门及以下 密码666666'
+            else:
+                user_id = 8
+                user_name = 'test'
+                nick_name = '工作人员测试账号'
+
+            db_entity = CzrzEntity()
+            db_entity.user_id = user_id
+            db_entity.user_name = user_name
+            db_entity.nick_name = nick_name
+            db_entity.czrz = '后台管理登录成功' if r < 2 else '后台USBKEY登录成功'
+            db_entity.gxsj = dt
+            db_entity.ip = '172.26.1.92'
+            db_entity.action = '登录'
+            db_entity.sign = ''
+
+            print("new log:" + str(dt))
+
+            db.add(db_entity)
+            db.commit()
+        
+def create_data2(begin_time: datetime):
+    import random
+    from datetime import datetime
+
+    with get_local_db() as db:
+        dt = begin_time
+
+        while dt < datetime.now():
+            random_hour = random.randint(6, 24)
+            random_second = random.randint(1, 3600) 
+            dt = dt + timedelta(hours=random_hour)
+            dt = dt + timedelta(seconds=random_second)
+
+            r = random_hour % 6
+            if r == 0:
+                user_id = 1
+                user_name = 'admin'
+                nick_name = '超级管理员'
+                czrz = "创建事件"
+            elif r == 1:
+                user_id = 1
+                user_name = 'admin'
+                nick_name = '超级管理员'
+                czrz = "大屏登录成功"
+            elif r == 3:
+                user_id = 1
+                user_name = 'admin'
+                nick_name = '超级管理员'
+                czrz = "启动预案"
+            elif r == 4:
+                user_id = 7
+                user_name = '001'
+                nick_name = '领导测试账号'
+                czrz = "预案任务下发"
+            elif r == 5:
+                user_id = 8
+                user_name = 'test'
+                nick_name = '工作人员测试账号'
+                czrz = "发起会议"
+            else:
+                user_id = 8
+                user_name = 'test'
+                nick_name = '工作人员测试账号'
+                czrz = "任务下达"
+            db_entity = CzrzEntity()
+            db_entity.user_id = user_id
+            db_entity.user_name = user_name
+            db_entity.nick_name = nick_name
+            db_entity.czrz = czrz
+            db_entity.gxsj = dt
+            db_entity.ip = '172.26.1.92'
+            db_entity.action = '应急一张图'
+            db_entity.sign = ''
+
+            print("new log:" + str(dt))
+
+            db.add(db_entity)
+            db.commit()
+        

+ 1 - 0
jobs/sign_data_job.py

@@ -72,4 +72,5 @@ def sign_data_proc():
     building_project_info_data.sign_table()
     
     # 操作日志表
+    sys_czrz_data.create_data(datetime.strptime("2024-07-02", "%Y-%m-%d"))
     sys_czrz_data.sign_table()

+ 22 - 2
routers/api/eventManagement/event.py

@@ -11,7 +11,7 @@ import random
 from sqlalchemy import create_engine, select
 from typing import Optional
 from utils.StripTagsHTMLParser import *
-from common.db import db_event_management, db_user, db_area, db_emergency_plan, db_msg_center, db_yzy
+from common.db import db_event_management, db_user, db_area, db_emergency_plan, db_msg_center, db_yzy, db_czrz
 from common.security import valid_access_token
 import traceback
 from utils import *
@@ -79,6 +79,12 @@ async def create_event(
 
         # 发送粤政易事件
         # send_yzy_msg(db, event_base, user_id)
+
+        try:
+            user_info = db_user.get_user_info(db, user_id)
+            db_czrz.log_username(db, user_id, user_info.user_name, user_info.nick_name, "应急一张图", "创建事件", request.client.host)
+        except:
+            traceback.print_exc()
         
         return {
             "code": 200,
@@ -834,7 +840,8 @@ async def update_emergency_plan_response_level(
 async def lauch_emergency_plan(
     request: Request,  
     body = Depends(remove_xss_json), 
-    db: Session = Depends(get_db)
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)
 ):
     eventId = body['eventId']
     plan_id = body['plan_id']
@@ -868,6 +875,12 @@ async def lauch_emergency_plan(
     event_row.del_flag = "0" # 临时事件改为正式事件
     db.commit()
 
+    try:
+        user_info = db_user.get_user_info(db, user_id)
+        db_czrz.log_username(db, user_id, user_info.user_name, user_info.nick_name, "应急一张图", "启动预案", request.client.host)
+    except:
+        traceback.print_exc()
+
     return {
         "code": 200,
         "msg": "启动预案成功",
@@ -1031,6 +1044,13 @@ async def send_emergency_plan_task_by_yzy(
 
         db_msg_center.add_message(db, "预案通知", _user_id, f"{plan_name}{response_level}通知", yzy_content, event_emergency_notify.id, "event_emergency_notify")
 
+    
+    try:
+        user_info = db_user.get_user_info(db, user_id)
+        db_czrz.log_username(db, user_id, user_info.user_name, user_info.nick_name, "应急一张图", "预案任务下发", request.client.host)
+    except:
+        traceback.print_exc()
+
     return {
         "code": 200,
         "msg": "预案任务下发成功"

+ 7 - 1
routers/api/taskRegistration/__init__.py

@@ -16,7 +16,7 @@ from utils import *
 import copy
 from config import settings
 from common import YzyApi
-from common.db import db_event_management, db_user, db_msg_center, db_yzy, db_dept
+from common.db import db_event_management, db_user, db_msg_center, db_yzy, db_dept, db_czrz
 
 router = APIRouter()
 
@@ -95,6 +95,12 @@ async def create_task(
         # 发送粤政易消息
         send_yzy_msg(db, task_base, user_id)
 
+        try:
+            user_info = db_user.get_user_info(db, user_id)
+            db_czrz.log_username(db, user_id, user_info.user_name, user_info.nick_name, "应急一张图", "任务下达", request.client.host)
+        except:
+            traceback.print_exc()
+
         return {
             "code": 200,
             "msg": "任务创建成功",

+ 8 - 0
routers/api/videoResource/avcon.py

@@ -13,6 +13,7 @@ from fastapi.responses import JSONResponse
 import traceback
 import base64
 from datetime import datetime
+from common.db import db_user, db_czrz
 from common import AvconH5API, AvconMiniAPI
 from models import *
 
@@ -54,6 +55,7 @@ async def get_mini_video_list(
 
 @router.post("/get_start_mini_param")
 async def get_start_mini_param(
+    request: Request,  
     body = Depends(remove_xss_json),
     db: Session = Depends(get_db),
     user_id = Depends(valid_access_token)
@@ -97,6 +99,12 @@ async def get_start_mini_param(
     json_str = json.dumps(params, ensure_ascii=False)
     base64_str = base64.b64encode(json_str.encode('utf-8')).decode('utf-8')
 
+    try:
+        user_info = db_user.get_user_info(db, user_id)
+        db_czrz.log_username(db, user_id, user_info.user_name, user_info.nick_name, "应急一张图", "发起会议", request.client.host)
+    except:
+        traceback.print_exc()
+
     return {
         "code": 0,
         "msg": "success",

+ 11 - 2
routers/prod_api/auth.py

@@ -86,7 +86,10 @@ async def login(
         uuid_str = data['uuid']
         code = data['code']
         # clientId = data['clientId']
-        # grantType = data['grantType']
+
+        fromSystem = ''
+        if 'fromSystem' in data:
+            fromSystem = data['fromSystem']
 
         # 仅为了可能的兼容
         clientId = "e5cd7e4891bf95d1d19206ce24a7b32e"
@@ -171,7 +174,13 @@ async def login(
             'user_name': username
         })
 
-        db_czrz.log_username(db, row.user_id, auth['user_name'], row.nick_name, "登录", "后台管理登录成功", request.client.host)
+        action = '登录'
+        czrz = '后台管理登录成功'
+        if fromSystem == 'yjdp':
+            action = '应急一张图'
+            czrz = '大屏登录成功'
+
+        db_czrz.log_username(db, row.user_id, auth['user_name'], row.nick_name, action, czrz, request.client.host)
         row.login_date = datetime.now()
         row.login_ip = request.client.host
         row.login = row.login + 1

+ 56 - 0
routers/prod_api/system/czrz/__init__.py

@@ -34,6 +34,62 @@ async def get_list(
 ):
     print(params)
     query = db.query(CzrzEntity)
+    query = query.filter(CzrzEntity.action != '应急一张图')
+    if operIp:
+        query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
+    if operName:
+        query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
+    if title:
+        query = query.filter(CzrzEntity.action.like(f'%{title}%'))
+    if dateRange:
+        start_date, end_date = dateRange.split('-')
+        # start_date = datetime.strptime(start_date, "%Y-%m-%d")
+        # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
+        query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
+
+    total_count = query.count()
+
+    offset = (pageNum - 1) * pageSize
+    query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
+    czrz_list = query.all()
+
+    # 将模型实例转换为字典
+    czrz_list_dict = [{
+            "operIp": item.ip,
+            "operName": item.nick_name,
+            "title": item.action,
+            "czrz": item.czrz,
+            "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
+        } for item in czrz_list]
+
+
+    return {
+        "code": 200,
+        "msg": "操作成功",
+        "rows": czrz_list_dict,
+        'pages': (total_count + pageSize - 1) // pageSize,
+        'total': total_count,
+        "currentPage": pageNum,
+        "pageSize": pageSize,
+    }
+
+
+
+@router.get('/yjdplist')
+async def get_list(
+    # request: Request,
+    operIp: str = Query(None, max_length=100),
+    operName:str = Query(None, max_length=100),
+    title: str =  Query(None, max_length=100),
+    params: str =  Query(None, max_length=100),
+    dateRange: str =  Query(None, max_length=100),
+    pageNum: int = Query(1, gt=0, description="页码"),
+    pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token),
+):
+    query = db.query(CzrzEntity)
+    query = query.filter(CzrzEntity.action == '应急一张图')
     if operIp:
         query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
     if operName: