libushang 1 月之前
父節點
當前提交
f347fdbc5a

+ 10 - 1
common/enc/sys_czrz_data.py

@@ -5,6 +5,7 @@ from . import mpfun
 from models import *
 from utils import *
 from sqlalchemy.orm import Session
+from database import get_local_db
 
 # 操作日志表
 
@@ -63,4 +64,12 @@ def get_sign_str(row: CzrzEntity) -> str:
 # 生成HAMC签名值
 def get_sign_hmac(row: CzrzEntity) -> str:
     sign_data = get_sign_str(row)
-    return mpfun.sign_data(sign_data) 
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_tp_czrztp_czrz table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(CzrzEntity).filter(CzrzEntity.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 87 - 0
common/enc/sys_dept_data.py

@@ -0,0 +1,87 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 系统部门表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysDept) -> None:
+    if row.sign != '':
+        return
+    
+    dept_id = str(row.dept_id) # 部门id
+    parent_id = str(row.parent_id) # 父部门id
+    parent_name = mpfun.base64_data(row.parent_name) # 父部门名称
+    ancestors = mpfun.base64_data(row.ancestors) # 祖级列表
+    dept_name = mpfun.base64_data(row.dept_name) # 部门名称
+    dept_category = mpfun.base64_data(row.dept_category) # 部门类别编码
+    order_num = str(row.order_num) # 显示顺序
+    leader_name = mpfun.base64_data(row.leader_name) # 负责人姓名
+    leader = str(row.leader) # 负责人
+    phone = mpfun.enc_data(row.phone) # 联系电话
+    email = mpfun.enc_data(row.email) # 邮箱
+    status = str(row.status) # 部门状态
+    del_flag = row.del_flag # 是否已删除
+
+    sign_data = ",".join([dept_id, parent_id, parent_name, ancestors, dept_name, dept_category, order_num, leader_name, leader, phone, email, status, del_flag])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_user sign_data:', sign_data)
+    # print('sign_tbl_user sign_hmac:', sign_hmac)
+
+    row.phone = phone
+    row.email = email
+    row.sign = sign_hmac
+    
+    db.commit()
+
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysDept) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_user sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysDept) -> str:
+    dept_id = str(row.dept_id) # 部门id
+    parent_id = str(row.parent_id) # 父部门id
+    parent_name = mpfun.base64_data(row.parent_name) # 父部门名称
+    ancestors = mpfun.base64_data(row.ancestors) # 祖级列表
+    dept_name = mpfun.base64_data(row.dept_name) # 部门名称
+    dept_category = mpfun.base64_data(row.dept_category) # 部门类别编码
+    order_num = str(row.order_num) # 显示顺序
+    leader_name = mpfun.base64_data(row.leader_name) # 负责人姓名
+    leader = str(row.leader) # 负责人
+    phone = mpfun.enc_data(row.phone) # 联系电话
+    email = mpfun.enc_data(row.email) # 邮箱
+    status = str(row.status) # 部门状态
+    del_flag = row.del_flag # 是否已删除
+
+    # 关键字段合并字符串
+    sign_data = ",".join([dept_id, parent_id, parent_name, ancestors, dept_name, dept_category, order_num, leader_name, leader, phone, email, status, del_flag])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysDept) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_dept table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysDept).filter(SysDept.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 72 - 0
common/enc/sys_post_data.py

@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from utils import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 岗位表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysPost) -> None:
+    if row.sign != '':
+        return
+    
+    post_id = str(row.post_id) # 岗位ID
+    dept_id = str(row.dept_id) # 部门ID
+    post_code = row.post_code # 岗位代码
+    post_name = mpfun.base64_data(row.post_name) # 岗位名称
+    post_sort = str(row.post_sort) # 排序
+    status = str(row.status) # 状态
+
+    sign_data = ",".join([post_id, dept_id, post_code, post_name, post_sort, status])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_post sign_data:', sign_data)
+    # print('sign_tbl_post sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+    
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysPost) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_post sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysPost) -> str:
+    post_id = str(row.post_id) # 岗位ID
+    dept_id = str(row.dept_id) # 部门ID
+    post_code = row.post_code # 岗位代码
+    post_name = mpfun.base64_data(row.post_name) # 岗位名称
+    post_sort = str(row.post_sort) # 排序
+    status = str(row.status) # 状态
+
+    # 关键字段合并字符串
+    sign_data = ",".join([post_id, dept_id, post_code, post_name, post_sort, status])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysPost) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data)
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_post table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysPost).filter(SysPost.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 78 - 0
common/enc/sys_role_data.py

@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from utils import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 角色表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysRole) -> None:
+    if row.sign != '':
+        return
+    
+    role_id = str(row.role_id) # 角色ID
+    role_name = mpfun.base64_data(row.role_name) # 角色名称
+    role_key = row.role_key # 角色代码
+    role_sort = str(row.role_sort) # 排序
+    data_scope = row.data_scope # 数据范围
+    menu_check_strictly = str(row.menu_check_strictly) # 菜单树选择项是否关联显示
+    dept_check_strictly = str(row.dept_check_strictly) # 部门树选择项是否关联显示
+    status = str(row.status) # 状态
+    del_flag = row.del_flag # 删除标志
+
+    sign_data = ",".join([role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_post sign_data:', sign_data)
+    # print('sign_tbl_post sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+    
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysRole) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_post sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysRole) -> str:
+    role_id = str(row.role_id) # 角色ID
+    role_name = mpfun.base64_data(row.role_name) # 角色名称
+    role_key = row.role_key # 角色代码
+    role_sort = str(row.role_sort) # 排序
+    data_scope = row.data_scope # 数据范围
+    menu_check_strictly = str(row.menu_check_strictly) # 菜单树选择项是否关联显示
+    dept_check_strictly = str(row.dept_check_strictly) # 部门树选择项是否关联显示
+    status = str(row.status) # 状态
+    del_flag = row.del_flag # 删除标志
+
+    # 关键字段合并字符串
+    sign_data = ",".join([role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysRole) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data)
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_role table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysRole).filter(SysRole.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 63 - 0
common/enc/sys_role_dept_data.py

@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 系统角色部门表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysRoleDept) -> None:
+    if row.sign != '':
+        return
+    
+    dept_id = str(row.dept_id) # 部门ID
+    role_id = str(row.role_id) # 角色ID
+
+    sign_data = ",".join([dept_id, role_id])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_user sign_data:', sign_data)
+    # print('sign_tbl_user sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysRoleDept) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_user sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysRoleDept) -> str:
+    dept_id = str(row.dept_id) # 部门ID
+    role_id = str(row.role_id) # 角色ID
+
+    # 关键字段合并字符串
+    sign_data = ",".join([dept_id, role_id])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysRoleDept) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_role_dept table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysRoleDept).filter(SysRoleDept.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 63 - 0
common/enc/sys_role_menu_data.py

@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 系统角色菜单表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysRoleMenu) -> None:
+    if row.sign != '':
+        return
+    
+    menu_id = str(row.menu_id) # 部门ID
+    role_id = str(row.role_id) # 角色ID
+
+    sign_data = ",".join([menu_id, role_id])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_user sign_data:', sign_data)
+    # print('sign_tbl_user sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysRoleMenu) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_user sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysRoleMenu) -> str:
+    menu_id = str(row.menu_id) # 部门ID
+    role_id = str(row.role_id) # 角色ID
+
+    # 关键字段合并字符串
+    sign_data = ",".join([menu_id, role_id])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysRoleMenu) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_role_menu table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysRoleMenu).filter(SysRoleMenu.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 10 - 1
common/enc/sys_user_data.py

@@ -4,6 +4,7 @@
 from . import mpfun
 from models import *
 from sqlalchemy.orm import Session
+from database import get_local_db
 
 # 系统用户表
 
@@ -74,4 +75,12 @@ def get_sign_str(row: SysUser) -> str:
 # 生成HAMC签名值
 def get_sign_hmac(row: SysUser) -> str:
     sign_data = get_sign_str(row)
-    return mpfun.sign_data(sign_data) 
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_user table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysUser).filter(SysUser.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 63 - 0
common/enc/sys_user_post_data.py

@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 系统用户角色表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysUserPost) -> None:
+    if row.sign != '':
+        return
+    
+    user_id = str(row.user_id) # 用户ID
+    post_id = str(row.post_id) # 岗位ID
+
+    sign_data = ",".join([user_id, post_id])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_user sign_data:', sign_data)
+    # print('sign_tbl_user sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysUserPost) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_user sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysUserPost) -> str:
+    user_id = str(row.user_id) # 用户ID
+    post_id = str(row.post_id) # 岗位ID
+
+    # 关键字段合并字符串
+    sign_data = ",".join([user_id, post_id])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysUserPost) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_user_post table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysUserPost).filter(SysUserPost.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 63 - 0
common/enc/sys_user_role_data.py

@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from . import mpfun
+from models import *
+from sqlalchemy.orm import Session
+from database import get_local_db
+
+# 系统用户角色表
+
+# 加密和HMAC签名
+def sign_row(db: Session, row: SysUserRole) -> None:
+    if row.sign != '':
+        return
+    
+    user_id = str(row.user_id) # 用户ID
+    role_id = str(row.role_id) # 角色ID
+
+    sign_data = ",".join([user_id, role_id])
+    sign_hmac = mpfun.sign_data(sign_data)
+    # print('sign_tbl_user sign_data:', sign_data)
+    # print('sign_tbl_user sign_hmac:', sign_hmac)
+
+    row.sign = sign_hmac
+    
+    db.commit()
+
+# 比较字段合并字符串是否和MAC值匹配上,调用密码服务器[验证HMAC]接口
+def sign_valid_row(row: SysUserRole) -> bool:
+    if row.sign == '':
+        return True
+
+    # 关键字段合并字符串
+    sign_data = get_sign_str(row)
+    # print('sys_user sign_data:', sign_data)
+    
+    # 原HMACSM3数值
+    sign_hmac = row.sign
+    # print('sign_hmac:', sign_hmac)
+
+    return mpfun.hmac_verify(sign_data, sign_hmac)
+
+# 生成待签名的字符串
+def get_sign_str(row: SysUserRole) -> str:
+    user_id = str(row.user_id) # 用户ID
+    role_id = str(row.role_id) # 角色ID
+
+    # 关键字段合并字符串
+    sign_data = ",".join([user_id, role_id])
+    return sign_data
+
+# 生成HAMC签名值
+def get_sign_hmac(row: SysUserRole) -> str:
+    sign_data = get_sign_str(row)
+    return mpfun.sign_data(sign_data) 
+
+# 对所有数据进行签名
+def sign_table():
+    print('sign_sys_user_role table =====>>>')
+    with get_local_db() as db:
+        rows = db.query(SysUserRole).filter(SysUserRole.sign == '').all()
+        for row in rows:
+            sign_row(db, row)

+ 16 - 19
jobs/sign_data_job.py

@@ -12,7 +12,9 @@ from extensions import logger
 import traceback
 import base64
 from datetime import datetime
-from common.enc import sys_user_data
+from common.enc import sys_user_data, sys_post_data, sys_role_data, sys_dept_data
+from common.enc import sys_user_role_data, sys_user_post_data, sys_role_dept_data, sys_role_menu_data
+from common.enc import sys_czrz_data
 from utils.redis_util import *
 
 # 对数据进行加密处理
@@ -22,23 +24,18 @@ def sign_data_proc():
         logger.info(datetime.now())
 
         # 系统用户表
-        sign_tbl_user()
-        # sign_tbl_role()
-        # sign_tbl_menu()
-        # sign_tbl_role_menu()
-        # sign_tbl_user_role()
+        sys_user_data.sign_table()
+        sys_dept_data.sign_table()
 
-        with get_share_db() as db:
-            logger.info('sharedb ok!!!!!!!!!1')
+        sys_post_data.sign_table()
+        sys_role_data.sign_table()
+        
+        # # 关联表
+        sys_user_role_data.sign_table()
+        sys_user_post_data.sign_table()
+        sys_role_dept_data.sign_table()
+        # sys_role_menu_data.sign_table()
+        
+        sys_czrz_data.sign_table()
 
-            c1 = db.query(ChemicalCompany).count()
-            print('c1: ', c1)
-
-        redis_unlock(lock_key)
-
-def sign_tbl_user():
-    print('sign_tbl_user =====>>>')
-    with get_local_db() as db:
-        rows = db.query(SysUser).filter(SysUser.sign == '').all()
-        for row in rows:
-            sys_user_data.sign_row(db, row)
+        redis_unlock(lock_key)

+ 35 - 30
main.py

@@ -17,6 +17,7 @@ from jobs import register_jobs
 from apscheduler.schedulers.asyncio import AsyncIOScheduler
 from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
 from common.websocketManager import manager
+from utils.redis_util import *
 
 app = FastAPI(docs_url=None, redoc_url=None)
 # app.include_router(home.router)
@@ -44,36 +45,40 @@ async def favicon():
 
 @app.on_event('startup')
 def app_startup():
-    logger.info('---------------------------------------')
-    logger.info('--------------'+ settings.ENVIRONMENT +'---------------')
-    logger.info('---------------------------------------')
-    logger.info("server started.")
-
-    try:
-        from common.enc import mpfun
-        print(mpfun.enc_data('test2'))
-    except Exception as e:
-        print(str(e))
-
-    sys = platform.system()
-    if sys == "Windows":
-        from warnings import filterwarnings
-        from pytz_deprecation_shim import PytzUsageWarning
-        filterwarnings('ignore', category=PytzUsageWarning)
-
-    executors = {
-        'default': ThreadPoolExecutor(20),
-        'processpool': ProcessPoolExecutor(5)
-    }
-
-    job_defaults = {
-        'coalesce': True,
-        'max_instance': 1
-    }
-    
-    scheduler = AsyncIOScheduler(timezone='Asia/Shanghai', executors=executors, job_defaults=job_defaults)
-    register_jobs(scheduler)
-    scheduler.start()
+    lock_key = "MM-ZHCS-YJ-API-app_startup"
+    if redis_lock(lock_key):
+        logger.info('---------------------------------------')
+        logger.info('--------------'+ settings.ENVIRONMENT +'---------------')
+        logger.info('---------------------------------------')
+        logger.info("server started.")
+
+        try:
+            from common.enc import mpfun
+            print(mpfun.enc_data('test2'))
+        except Exception as e:
+            print(str(e))
+
+        sys = platform.system()
+        if sys == "Windows":
+            from warnings import filterwarnings
+            from pytz_deprecation_shim import PytzUsageWarning
+            filterwarnings('ignore', category=PytzUsageWarning)
+
+        executors = {
+            'default': ThreadPoolExecutor(20),
+            'processpool': ProcessPoolExecutor(5)
+        }
+
+        job_defaults = {
+            'coalesce': True,
+            'max_instance': 1
+        }
+        
+        scheduler = AsyncIOScheduler(timezone='Asia/Shanghai', executors=executors, job_defaults=job_defaults)
+        register_jobs(scheduler)
+        scheduler.start()
+
+        redis_unlock(lock_key)
 
 # @app.exception_handler(RequestValidationError)
 # async def validation_exception_handler(request, exc):

+ 17 - 15
models/ry_sys_base.py

@@ -103,12 +103,12 @@ class SysDept(Base):
     parent_name = Column(String(30), default='', comment='父部门名称')
     ancestors = Column(String(500), default='', comment='祖级列表')
     dept_name = Column(String(30), default='', comment='部门名称')
-    dept_category = Column(String(100), default=None, comment='部门类别编码')
+    dept_category = Column(String(100), default='', comment='部门类别编码')
     order_num = Column(Integer, default=0, comment='显示顺序')
     leader = Column(BigInteger, default=None, comment='负责人')
-    leader_name = Column(String(30), default=None, comment='负责人姓名')
-    phone = Column(String(11), default=None, comment='联系电话')
-    email = Column(String(50), default=None, comment='邮箱')
+    leader_name = Column(String(30), default='', comment='负责人姓名')
+    phone = Column(String(100), default='', comment='联系电话')
+    email = Column(String(100), default='', comment='邮箱')
     status = Column(String(1), default='0', comment='部门状态(0正常 1停用)')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
     create_dept = Column(BigInteger, default=None, comment='创建部门')
@@ -116,6 +116,7 @@ class SysDept(Base):
     create_time = Column(DateTime, default=datetime.now, comment='创建时间')
     update_by = Column(BigInteger, default=None, comment='更新者')
     update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
 
     class Config:
         orm_mode = True
@@ -151,7 +152,7 @@ class SysUser(Base):
     update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
     remark = Column(String(500), default=None, comment='备注')
     yzy_account = Column(String(50), default=None, comment='粤政易账号')
-    sign = Column(String, server_default='', default='', comment='HMAC值')
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
 
     class Config:
         orm_mode = True
@@ -176,7 +177,7 @@ class SysPost(Base):
     update_by = Column(BigInteger, default=None, comment='更新者')
     update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
     remark = Column(String(500), default=None, comment='备注')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -192,8 +193,8 @@ class SysRole(Base):
     role_key = Column(String(100), nullable=False, comment='角色权限字符串')
     role_sort = Column(Integer, nullable=False, comment='显示顺序')
     data_scope = Column(String(1), default='1', comment='数据范围')
-    menu_check_strictly = Column(Boolean, default=True, comment='菜单树选择项是否关联显示')
-    dept_check_strictly = Column(Boolean, default=True, comment='部门树选择项是否关联显示')
+    menu_check_strictly = Column(Integer, default=1, comment='菜单树选择项是否关联显示')
+    dept_check_strictly = Column(Integer, default=1, comment='部门树选择项是否关联显示')
     status = Column(String(1), nullable=False, comment='角色状态(0正常 1停用)')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
     create_dept = Column(BigInteger, default=None, comment='创建部门')
@@ -202,7 +203,7 @@ class SysRole(Base):
     update_by = Column(BigInteger, default=None, comment='更新者')
     update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
     remark = Column(String(500), default=None, comment='备注')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -231,7 +232,7 @@ class SysMenu(Base):
     update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
     remark = Column(String(500), default='', comment='备注')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -241,9 +242,10 @@ class SysUserRole(Base):
     __table_args__ = (PrimaryKeyConstraint('role_id', 'user_id'),)
     user_id = Column(BigInteger,  nullable=True, comment='用户ID')
     role_id = Column(BigInteger, nullable=True, comment='角色ID')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
+
 '''用户和视频关联表'''
 class SysUserVideo(Base):
     __tablename__ = 'sys_user_video'
@@ -260,7 +262,7 @@ class SysRoleMenu(Base):
     __table_args__ = (PrimaryKeyConstraint('role_id', 'menu_id'),)
     role_id = Column(BigInteger, nullable=False, comment='角色ID')
     menu_id = Column(BigInteger, nullable=False, comment='菜单ID')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -270,7 +272,7 @@ class SysRoleDept(Base):
     __table_args__ = (PrimaryKeyConstraint('role_id', 'dept_id'),)
     role_id = Column(BigInteger,  nullable=False, comment='角色ID')
     dept_id = Column(BigInteger,  nullable=False, comment='部门ID')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -280,7 +282,7 @@ class SysUserPost(Base):
     __table_args__ = (PrimaryKeyConstraint('user_id', 'post_id'),)
     user_id = Column(BigInteger,  nullable=False, comment='用户ID')
     post_id = Column(BigInteger,  nullable=False, comment='岗位ID')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 
@@ -312,7 +314,7 @@ class SysMenuLayer(Base):
     remark = Column(String(500), default='', comment='备注')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
     layer_template = Column(String(100), default='', comment='图层模板')
-
+    sign = Column(String, server_default='', default='', comment='HMACSM3数值')
     class Config:
         orm_mode = True
 

+ 3 - 3
routers/prod_api/auth.py

@@ -213,14 +213,14 @@ async def login(
 @router.post('/logout')
 async def logout(
     request: Request, 
-    db: Session = Depends(get_db),
-    user: AuthUser = Depends(find_auth_user)
+    user: AuthUser = Depends(get_auth_user),
+    db: Session = Depends(get_db)
 ):
     logger.info("logout ok")
     request.session.clear()
 
     try:
-        db_czrz.log(db, user, "退出", "后台管理退出成功", request.client.host)
+        # db_czrz.log(db, user, "退出", "后台管理退出成功", request.client.host)
 
         if user.is_yzy_user == 1:
             logout_url = settings.TYRZ_LOGOUT.format(settings.TYRZ_CLIENT_ID) + quote(settings.HOME_URL+"/yjzp/")

+ 55 - 20
routers/prod_api/system/dept/__init__.py

@@ -12,7 +12,9 @@ from utils import *
 from utils.ry_system_util import *
 import json
 from sqlalchemy.sql import func
+from common.enc import mpfun, sys_dept_data
 from common.auth_user import *
+from common.db import db_czrz
 import traceback
 
 router = APIRouter()
@@ -58,13 +60,13 @@ async def get_list(
             "ancestors": dept.ancestors,
             "deptCategory": dept.dept_category,
             "leader": dept.leader,
-            "email": dept.email,
+            "email": mpfun.dec_data(dept.email),
             "leaderName": dept.leader_name,
             "orderNum": dept.order_num,
             "parentId": dept.parent_id,
             "parentName": dept.parent_name,
             "status": dept.status,
-            "phone": dept.phone,
+            "phone": mpfun.dec_data(dept.phone),
             "createTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else '',
         } for dept in dept_list]
 
@@ -97,13 +99,13 @@ async def get_list(
         "ancestors": dept.ancestors,
         "deptCategory": dept.dept_category,
         "leader": dept.leader,
-        "email": dept.email,
+        "email": mpfun.dec_data(dept.email),
         "leaderName": dept.leader_name,
         "orderNum": dept.order_num,
         "parentId": dept.parent_id,
         "parentName": dept.parent_name,
         "status": dept.status,
-        "phone": dept.phone,
+        "phone": mpfun.dec_data(dept.phone),
         "createTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else '',
     } for dept in dept_list]
 
@@ -129,17 +131,16 @@ async def get_dept_info(
             "ancestors": dept.ancestors,
             "deptCategory": dept.dept_category,
             "leader": dept.leader,
-            "email": dept.email,
+            "email": mpfun.dec_data(dept.email),
             "leaderName": dept.leader_name,
             "orderNum": dept.order_num,
             "parentId": dept.parent_id,
             "parentName": dept.parent_name,
             "status": dept.status,
-            "phone": dept.phone,
+            "phone": mpfun.dec_data(dept.phone),
             "createTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else '',
         }
 
-
     return {
         "code": 200,
         "data": dept_dict,
@@ -148,7 +149,9 @@ async def get_dept_info(
 
 @router.delete('/{dept_id}')
 async def delete_dept(
-    dept_id:int,
+    request: Request, 
+    dept_id: int,
+    auth_user: AuthUser = Depends(find_auth_user),
     db: Session = Depends(get_db),
     body = Depends(remove_xss_json),
     user_id = Depends(valid_access_token)
@@ -156,9 +159,24 @@ async def delete_dept(
 
     dept = dept_id_get_dept_info(db,dept_id)
     # 将模型实例转换为字典
-    dept.del_flag = '2'
-    dept.update_by = user_id
-    db.commit()
+    if dept is not None:
+
+        user_list = dept_id_get_user_info(db, dept.dept_id)
+        user_count = len(user_list)
+        if user_count > 0:
+            return {
+                "code": 500,
+                "data": None,
+                "msg": f"该部门还有{user_count}个用户,不能删除"
+            }
+
+        dept.del_flag = '2'
+        dept.update_by = user_id
+        dept.update_time = datetime.now()
+        dept.sign = sys_dept_data.get_sign_hmac(dept)
+        db.commit()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管理删除部门(单位)【{dept.dept_name}】成功", request.client.host)
 
     return {
         "code": 200,
@@ -168,8 +186,10 @@ async def delete_dept(
 
 @router.post('')
 async def create_dept(
+    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:
@@ -214,11 +234,17 @@ async def create_dept(
             status = status,
             leader = leader,
             create_by = user_id,
-            create_dept = user.dept_id
-        )
+            create_dept = user.dept_id,
+            update_by = user_id,
+            sign = ''        )
 
         db.add(new_dept)
         db.commit()
+
+        sys_dept_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管理新建部门(单位)【{deptName}】成功", request.client.host)
+
         return {
             "code": 200,
             "data": None,
@@ -233,8 +259,10 @@ async def create_dept(
 
 @router.put('')
 async def dept_info_update(
+    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)
 ):
 
@@ -248,7 +276,7 @@ async def dept_info_update(
         dept = dept_id_get_dept_info(db,deptId)
         if not dept:
             detail = "部门不存在"
-            raise HTTPException(status_code=404, detail="菜单不存在")
+            raise HTTPException(status_code=404, detail="部门不存在")
 
         dept.deptName = body['deptName']
         dept.orderNum = body['orderNum']
@@ -263,14 +291,21 @@ async def dept_info_update(
             dept.phone = body['phone']
         if 'leader' in body:
             dept.leader = body['leader']
-        if 'leaderName' in body:
-            dept.leader_name = body['leaderName']
-        if 'parentName' in body:
-            dept.parent_name = body['parentName']
-
+            leader_user_info = user_id_get_user_info(db, dept.leader)
+            dept.leader_name = leader_user_info.nick_name
+        
+        dept_parent = dept_id_get_dept_info(db, dept.parentId)
+        dept.parent_name = dept_parent.dept_name,
+        dept.ancestors = dept_parent.ancestors+','+str(dept.parentId),
         dept.update_by = user_id
-
+        dept.update_time = datetime.now()
+        dept.sign = ''
         db.commit()
+
+        sys_dept_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管理更新部门(单位)【{body['deptName']}】成功", request.client.host)
+
         return {
             "code": 200,
             "msg": "部门更新成功"

+ 2 - 0
routers/prod_api/system/menu/__init__.py

@@ -519,6 +519,7 @@ class SysMuneCreateForm(BaseModel):
 
 @router.post('/create')
 async def create(
+    request: Request,
     form_data: SysMuneCreateForm,
     db: Session = Depends(get_db),
     body = Depends(remove_xss_json),
@@ -636,6 +637,7 @@ async def update(
 
 @router.delete('/{menu_id}')
 async def delete(
+    request: Request,
     menu_id: int,
     db: Session = Depends(get_db),
     body = Depends(remove_xss_json),

+ 11 - 3
routers/prod_api/system/post/__init__.py

@@ -9,7 +9,9 @@ from models import *
 from utils import *
 from utils.ry_system_util import *
 from common.security import valid_access_token
-from common.db import db_user
+from common.enc import mpfun, sys_post_data, sys_user_post_data
+from common.auth_user import *
+from common.db import db_czrz
 import traceback
 
 router = APIRouter()
@@ -38,12 +40,15 @@ async def postcreate(
             status=status,
             remark=remark,
             create_by=user_id,
-            create_dept=0
+            create_dept=0,
+            sign=''
         )
         db.add(new_post)
         db.commit()
         db.refresh(new_post)
 
+        sys_post_data.sign_table()
+
         db.commit()
         return {"code": 200, "msg": "创建成功", "data": None}
 
@@ -162,8 +167,11 @@ async def postupdate(
         post.post_sort = body['postSort']
         post.status = body['status']
         post.remark = body['remark']
-
+        post.sign = ''
         db.commit()
+
+        sys_post_data.sign_table()
+
         return {"code": 200, "msg": "更新成功", "data": None}
 
     except Exception as e:

+ 93 - 53
routers/prod_api/system/role/__init__.py

@@ -11,15 +11,19 @@ from utils import *
 from utils.ry_system_util import *
 from common.security import valid_access_token
 import traceback
+from common.enc import mpfun, sys_user_role_data, sys_role_data, sys_role_dept_data, sys_role_menu_data
+from common.auth_user import *
+from common.db import db_czrz
 
 router = APIRouter()
 
-
 @router.post('')
 async def rolecreate(
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
         menuCheckStrictly = body['menuCheckStrictly']
@@ -51,9 +55,12 @@ async def rolecreate(
         # 创建新的用户角色关联
         new_role_menus = [SysRoleMenu(role_id=new_role.role_id, menu_id=menu_id) for menu_id in menuIds]
         db.add_all(new_role_menus)
+        db.commit()
 
+        sys_role_menu_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管新建用户角色【{body['roleName']}】成功", request.client.host)
 
-        db.commit()
         return {"code": 200, "msg": "创建成功", "data": None}
 
 
@@ -63,9 +70,11 @@ async def rolecreate(
 
 @router.put('')
 async def roleupdate(
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
         roleId = body['roleId']
@@ -100,9 +109,12 @@ async def roleupdate(
         # 创建新的用户角色关联
         new_role_menus = [SysRoleMenu(role_id=roleId, menu_id=menu_id) for menu_id in menuIds]
         db.add_all(new_role_menus)
+        db.commit()
 
+        sys_role_menu_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管修改用户角色【{body['roleName']}】成功", request.client.host)
 
-        db.commit()
         return {"code": 200, "msg": "更新成功", "data": None}
 
 
@@ -111,10 +123,12 @@ async def roleupdate(
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
 
 @router.put('/dataScope')
-async def roleupdate(
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+async def dataScope(
+    request: Request,
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
         roleId = body['roleId']
@@ -141,9 +155,13 @@ async def roleupdate(
         # 创建新的用户角色关联
         new_role_depts = [SysRoleDept(role_id=roleId, dept_id=dept_id) for dept_id in deptIds]
         db.add_all(new_role_depts)
+        db.commit()
 
+        sys_role_menu_data.sign_table()
+        sys_role_dept_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管修改用户角色数据范围【{role.role_name}】成功", request.client.host)
 
-        db.commit()
         return {"code": 200, "msg": "更新成功", "data": None}
 
 
@@ -154,9 +172,11 @@ async def roleupdate(
 
 @router.put('/changeStatus')
 async def roleupdate(
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
         roleId = body['roleId']
@@ -172,8 +192,13 @@ async def roleupdate(
         })
 
         role.status = body['status']
-
+        role.sigin = ''
         db.commit()
+
+        sys_role_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管修改用户角色状态【{body['role_name']}】成功", request.client.host)
+
         return {"code": 200, "msg": "更新成功", "data": None}
 
 
@@ -220,7 +245,6 @@ async def userlist(
                     user_id: int = Depends(valid_access_token)):
     try:
         query = db.query(SysUserRole)
-        # query = query.filter(SysUserRole.del_flag != '2')
         query = query.filter(SysUserRole.role_id == roleId)
         resutl = query.all()
         users =  [i.user_id for i in resutl]
@@ -255,17 +279,17 @@ async def userlist(
                 "userId": user.user_id,
                 "tenantId": user.tenant_id,
                 "deptId": user.dept_id,
-                "userName": user.user_name,
+                "userName": mpfun.dec_data(user.user_name),
                 "nickName": user.nick_name,
                 "userType": user.user_type,
-                "email": user.email,
-                "phonenumber": user.phonenumber,
+                "email": mpfun.dec_data(user.email),
+                "phonenumber": mpfun.dec_data(user.phonenumber),
                 "sex": user.sex,
                 "avatar": user.avatar,
                 "status": user.status,
                 "loginIp": user.login_ip,
                 "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
-                "remark": user.remark,
+                "remark": user.remark if user.remark else '',
                 "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
                 "deptName": user.dept_name,
                 "roles": user_roles,
@@ -311,9 +335,9 @@ async def userlist(
         query = query.filter(not_(SysUser.user_id.in_(users)))
 
         if userName is not None:
-            query = query.filter(SysUser.user_name.like(f'%{userName}%'))
+            query = query.filter(SysUser.user_name == mpfun.enc_data(userName))
         if phonenumber is not None:
-            query = query.filter(SysUser.phonenumber.like(f'%{phonenumber}%'))
+            query = query.filter(SysUser.phonenumber == mpfun.enc_data(phonenumber))
         #
         # print(query)
         # 计算总条目数
@@ -335,17 +359,17 @@ async def userlist(
                 "userId": user.user_id,
                 "tenantId": user.tenant_id,
                 "deptId": user.dept_id,
-                "userName": user.user_name,
+                "userName": mpfun.dec_data(user.user_name),
                 "nickName": user.nick_name,
                 "userType": user.user_type,
-                "email": user.email,
-                "phonenumber": user.phonenumber,
+                "email": mpfun.dec_data(user.email),
+                "phonenumber": mpfun.dec_data(user.phonenumber),
                 "sex": user.sex,
                 "avatar": user.avatar,
                 "status": user.status,
                 "loginIp": user.login_ip,
                 "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
-                "remark": user.remark,
+                "remark": user.remark if user.remark else '',
                 "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
                 "deptName": user.dept_name,
                 "roles": user_roles,
@@ -372,11 +396,13 @@ async def userlist(
 
 @router.put('/authUser/selectAll')
 async def cancel_user_role(
-                    roleId: str = Query(None),
-                    userIds:str=Query(None),
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    roleId: str = Query(None),
+    userIds:str=Query(None),
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
 
@@ -384,8 +410,12 @@ async def cancel_user_role(
 
         new_roles = [SysUserRole(user_id=user_id, role_id=roleId) for user_id in userIdList]
         db.add_all(new_roles)
-
         db.commit()
+
+        sys_user_role_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管用户角色添加用户成功", request.client.host)
+
         return {
             "code": 200,
             "msg": "成功",
@@ -397,9 +427,11 @@ async def cancel_user_role(
 
 @router.put('/authUser/cancel')
 async def cancel_user_role(
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
         roleId=body['roleId']
@@ -409,10 +441,17 @@ async def cancel_user_role(
         query = query.filter(SysUserRole.user_id==userId)
         query.delete()
         db.commit()
+        sys_user_role_data.sign_table()
+        
+        user_info = user_id_get_user_info(db, user_id)
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管用户角色删除用户【{user_info.nick_name}】成功", request.client.host)
+
         return {
             "code": 200,
             "msg": "成功",
-            "data": None}
+            "data": None
+        }
 
     except Exception as e:
         traceback.print_exc()
@@ -420,11 +459,13 @@ async def cancel_user_role(
 
 @router.put('/authUser/cancelAll')
 async def cancel_user_role(
-                    roleId: str = Query(None),
-                    userIds:str=Query(None),
-                    db: Session = Depends(get_db),
-                    user_id: int = Depends(valid_access_token),
-                    body = Depends(remove_xss_json)
+    request: Request,
+    roleId: str = Query(None),
+    userIds: str=Query(None),
+    db: Session = Depends(get_db),
+    user_id: int = Depends(valid_access_token),
+    auth_user: AuthUser = Depends(find_auth_user),
+    body = Depends(remove_xss_json)
 ):
     try:
 
@@ -434,10 +475,16 @@ async def cancel_user_role(
         query = query.filter(SysUserRole.user_id.in_(userIdList))
         query.delete()
         db.commit()
+
+        sys_user_role_data.sign_table()
+
+        db_czrz.log(db, auth_user, "系统管理", f"后台管用户角色删除用户成功", request.client.host)
+
         return {
             "code": 200,
             "msg": "成功",
-            "data": None}
+            "data": None
+        }
 
     except Exception as e:
         traceback.print_exc()
@@ -458,15 +505,8 @@ async def rolelist( roleName: int = Query(None ,description='角色名称'),
         # 构建查询
         query = db.query(SysRole)
         query = query.filter(SysRole.del_flag != '2')
-        # 应用查询条件
 
-        # if beginTime:
-        #     query = query.filter(SysUser.create_time >= beginTime)
-        # if endTime:
-        #     query = query.filter(SysUser.create_time <= endTime)
-        # if params:
-        #     query = query.filter(SysUser.create_time >= params.get("beginTime"))
-        #     query = query.filter(SysUser.create_time <= params.get("endTime"))
+        # 应用查询条件
         if roleName:
             query =query.filter(SysRole.role_name.like(f'%{roleName}%'))
         if status:

+ 13 - 4
routers/prod_api/system/user/__init__.py

@@ -11,7 +11,7 @@ from models import *
 from utils import *
 from utils.ry_system_util import *
 from common.security import valid_access_token
-from common.enc import mpfun, sys_user_data
+from common.enc import mpfun, sys_user_data, sys_user_role_data, sys_user_post_data
 from common.db import db_czrz
 from common.auth_user import *
 import traceback
@@ -106,8 +106,8 @@ async def usercreate(
             yzy_account=yzyAccount,
             create_dept=create_dept,
             create_by=user_id,
-            update_time=datetime.now,
-            update_id=user_id,
+            update_time=datetime.now(),
+            update_by=user_id,
             login=0,
             login_date=datetime.now(),
             sign = ''
@@ -125,6 +125,9 @@ async def usercreate(
         new_posts = [SysUserPost(user_id=new_user.user_id, post_id=post_id) for post_id in postIds]
         db.add_all(new_posts)
 
+        sys_user_role_data.sign_table()
+        sys_user_post_data.sign_table()
+
         db.commit()
 
         db_czrz.log(db, auth_user, "系统管理", f"后台管理创建用户【{nickName}】成功", request.client.host)
@@ -177,6 +180,7 @@ async def userupdate(
         user.sign = ''
         db.commit()
         db.refresh(user)
+
         sys_user_data.sign_row(db, user)
 
         # 解析角色ID列表
@@ -195,6 +199,9 @@ async def userupdate(
         new_posts = [SysUserPost(user_id=user_id_1, post_id=post_id) for post_id in postIds]
         db.add_all(new_posts)
 
+        sys_user_role_data.sign_table()
+        sys_user_post_data.sign_table()
+
         db.commit()
 
         db_czrz.log(db, auth_user, "系统管理", f"后台管理更新用户【{nickName}】成功", request.client.host)
@@ -225,7 +232,7 @@ async def userupdate(
 
         db.commit()
 
-        db_czrz.log(db, auth_user, "系统管理", f"后台管理重置用户密码【{user.nick_ame}】成功", request.client.host)
+        db_czrz.log(db, auth_user, "系统管理", f"后台管理重置用户密码【{user.nick_name}】成功", request.client.host)
         return {"code": 200, "msg": "重置用户密码成功", "data": None}
 
 
@@ -734,6 +741,8 @@ async def authRoleUpdate(
         db.add_all(new_roles)
         db.commit()
 
+        sys_user_role_data.sign_table()
+
         db_czrz.log(db, auth_user, "系统管理", f"后台管理分配用户{user.nick_name}角色成功", request.client.host)
 
         return {"code": 200, "msg": "更新成功", "data": None}

+ 3 - 0
utils/redis_util.py

@@ -3,6 +3,7 @@
 from redis import StrictRedis
 from config import settings
 import json
+import time
 
 def get_redis():
     redis = StrictRedis(host=settings.REDIS_DB_URL['host'], port=settings.REDIS_DB_URL['port'], db=settings.REDIS_DB_URL['db'], password=settings.REDIS_DB_URL['password'])
@@ -29,6 +30,8 @@ def redis_lock(name: str, secs: int = 60):
     ret = redis.setnx(name, "1")
     if ret:
         redis.expire(name, secs)
+    
+    time.sleep(1)
     return ret
 
 def redis_unlock(name: str):

+ 2 - 2
utils/ry_system_util.py

@@ -23,7 +23,7 @@ def dept_id_get_user_info(db,dept_id):
     # 用户id获取用户信息
     query = db.query(SysUser)
     query = query.filter(SysUser.del_flag != '2')
-    query = query.filter(SysUser.user_id == dept_id)
+    query = query.filter(SysUser.dept_id == dept_id)
     return query.all()
 def user_id_get_user_info(db,user_id):
     # 用户id获取用户信息
@@ -87,7 +87,7 @@ def role_list_to_dict(roles,role_id_list):
             "menuCheckStrictly": role.menu_check_strictly,
             "deptCheckStrictly": role.dept_check_strictly,
             "status": role.status,
-            "remark": role.remark,
+            "remark": role.remark if role.remark else '',
             "createTime": role.create_time.strftime('%Y-%m-%d %H:%M:%S') if role.create_time else '',
             "flag": role.role_id in role_id_list,
             "superAdmin": False