|
@@ -11,6 +11,9 @@ 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.db import db_czrz
|
|
|
+from common.auth_user import *
|
|
|
import traceback
|
|
|
|
|
|
router = APIRouter()
|
|
@@ -39,15 +42,23 @@ async def usercreate01(
|
|
|
|
|
|
@router.post('')
|
|
|
async def usercreate(
|
|
|
- db: Session = Depends(get_db),
|
|
|
- user_id: int = Depends(valid_access_token),
|
|
|
- body = Depends(remove_xss_json)
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token),
|
|
|
+ body = Depends(remove_xss_json)
|
|
|
):
|
|
|
try:
|
|
|
+ user_info = user_id_get_user_info(db, user_id)
|
|
|
+ create_dept = user_info.dept_id
|
|
|
+
|
|
|
if 'deptId' in body:
|
|
|
deptId = body['deptId']
|
|
|
+ dept_info = dept_id_get_dept_info(db, deptId)
|
|
|
+ deptName = dept_info.dept_name if dept_info is not None else None
|
|
|
else:
|
|
|
deptId = None
|
|
|
+ deptName = None
|
|
|
if 'phonenumber' in body:
|
|
|
phonenumber = body['phonenumber']
|
|
|
else:
|
|
@@ -60,37 +71,52 @@ async def usercreate(
|
|
|
sex = body['sex']
|
|
|
else:
|
|
|
sex = None
|
|
|
+ if 'yzyAccount' in body:
|
|
|
+ yzyAccount = body['yzyAccount']
|
|
|
+ else:
|
|
|
+ yzyAccount = None
|
|
|
|
|
|
userName = body['userName']
|
|
|
- user = user_name_get_user_info(db,userName)
|
|
|
- if user:
|
|
|
- return JSONResponse(status_code=404, content={"code": 404, "msg": "用户名称已存在"})
|
|
|
+ user_info = user_name_get_user_info(db, userName)
|
|
|
+ if user_info:
|
|
|
+ return {"code": 500, "msg": "用户名称已存在"}
|
|
|
+
|
|
|
pattern = r'^[a-zA-Z0-9_]+$'
|
|
|
if re.match(pattern, userName) == False:
|
|
|
- return JSONResponse(status_code=404, content={"code": 404, "msg": "用户名称又字母大小写、阿拉伯数字和下划线组成"})
|
|
|
+ return {"code": 404, "msg": "用户名称又字母大小写、阿拉伯数字和下划线组成"}
|
|
|
|
|
|
nickName = body['nickName']
|
|
|
roleIds = body['roleIds']
|
|
|
postIds = body['postIds']
|
|
|
remark = body['remark']
|
|
|
status = body['status']
|
|
|
- password = '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne'
|
|
|
+ password = body['password']
|
|
|
|
|
|
new_user = SysUser(
|
|
|
user_name = userName,
|
|
|
nick_name=nickName,
|
|
|
dept_id=deptId,
|
|
|
+ dept_name=deptName,
|
|
|
phonenumber=phonenumber,
|
|
|
email=email,
|
|
|
sex=sex,
|
|
|
remark=remark,
|
|
|
status=status,
|
|
|
- password=password
|
|
|
+ password=password,
|
|
|
+ yzy_account=yzyAccount,
|
|
|
+ create_dept=create_dept,
|
|
|
+ create_by=user_id,
|
|
|
+ update_time=datetime.now,
|
|
|
+ update_id=user_id,
|
|
|
+ login=0,
|
|
|
+ login_date=datetime.now(),
|
|
|
+ sign = ''
|
|
|
)
|
|
|
db.add(new_user)
|
|
|
db.commit()
|
|
|
db.refresh(new_user)
|
|
|
-
|
|
|
+ sys_user_data.sign_row(db, new_user)
|
|
|
+
|
|
|
# 创建新的用户角色关联
|
|
|
new_roles = [SysUserRole(user_id=new_user.user_id, role_id=role_id) for role_id in roleIds]
|
|
|
db.add_all(new_roles)
|
|
@@ -100,6 +126,9 @@ async def usercreate(
|
|
|
db.add_all(new_posts)
|
|
|
|
|
|
db.commit()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理创建用户【{nickName}】成功", request.client.host)
|
|
|
+
|
|
|
return {"code": 200, "msg": "创建成功", "data": None}
|
|
|
|
|
|
|
|
@@ -109,9 +138,11 @@ async def usercreate(
|
|
|
|
|
|
@router.put('')
|
|
|
async def userupdate(
|
|
|
- db: Session = Depends(get_db),
|
|
|
- user_id: int = Depends(valid_access_token),
|
|
|
- body = Depends(remove_xss_json)
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token),
|
|
|
+ body = Depends(remove_xss_json)
|
|
|
):
|
|
|
try:
|
|
|
user_id_1 = body['userId']
|
|
@@ -124,34 +155,49 @@ async def userupdate(
|
|
|
roleIds = body['roleIds']
|
|
|
postIds = body['postIds']
|
|
|
remark = body['remark']
|
|
|
+ yzyAccount = body['yzyAccount']
|
|
|
+ status = body['status']
|
|
|
|
|
|
- user.nick_name=nickName
|
|
|
- user.dept_id=deptId
|
|
|
- user.phonenumber=phonenumber
|
|
|
- user.email=email
|
|
|
- user.sex=sex
|
|
|
- user.remark=remark
|
|
|
- # 解析角色ID列表
|
|
|
- # role_ids_list = [int(id) for id in roleIds.split(',')]
|
|
|
+ dept_info = dept_id_get_dept_info(db, deptId)
|
|
|
+ deptName = dept_info.dept_name
|
|
|
+
|
|
|
+ # 还原界面不用改的加密字段
|
|
|
+ user.user_name = mpfun.dec_data(user.user_name)
|
|
|
+ user.password = mpfun.dec_data(user.password)
|
|
|
+
|
|
|
+ user.nick_name = nickName
|
|
|
+ user.dept_id = deptId
|
|
|
+ user.dept_name = deptName
|
|
|
+ user.phonenumber = phonenumber
|
|
|
+ user.email = email
|
|
|
+ user.sex = sex
|
|
|
+ user.remark = remark
|
|
|
+ user.yzy_account = yzyAccount
|
|
|
+ user.status = status
|
|
|
+ user.sign = ''
|
|
|
+ db.commit()
|
|
|
+ db.refresh(user)
|
|
|
+ sys_user_data.sign_row(db, user)
|
|
|
|
|
|
- # 清除当前用户的所有角色关联
|
|
|
+ # 解析角色ID列表
|
|
|
+ # 1.清除当前用户的所有角色关联
|
|
|
db.query(SysUserRole).filter(SysUserRole.user_id == user_id_1).delete()
|
|
|
|
|
|
- # 创建新的用户角色关联
|
|
|
+ # 2.创建新的用户角色关联
|
|
|
new_roles = [SysUserRole(user_id=user_id_1, role_id=role_id) for role_id in roleIds]
|
|
|
db.add_all(new_roles)
|
|
|
|
|
|
- # 解析角色ID列表
|
|
|
- # post_ids_list = [int(id) for id in postIds.split(',')]
|
|
|
-
|
|
|
- # 清除当前用户的所有角色关联
|
|
|
+ # 解析岗位ID列表
|
|
|
+ # 1.清除当前用户的所有岗位关联
|
|
|
db.query(SysUserPost).filter(SysUserPost.user_id == user_id_1).delete()
|
|
|
|
|
|
- # 创建新的用户角色关联
|
|
|
+ # 2.创建新的用户角色关联
|
|
|
new_posts = [SysUserPost(user_id=user_id_1, post_id=post_id) for post_id in postIds]
|
|
|
db.add_all(new_posts)
|
|
|
|
|
|
db.commit()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理更新用户【{nickName}】成功", request.client.host)
|
|
|
return {"code": 200, "msg": "更新成功", "data": None}
|
|
|
|
|
|
|
|
@@ -161,20 +207,26 @@ async def userupdate(
|
|
|
|
|
|
@router.put('/resetPwd')
|
|
|
async def userupdate(
|
|
|
- db: Session = Depends(get_db),
|
|
|
- user_id: int = Depends(valid_access_token),
|
|
|
- body = Depends(remove_xss_json)
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token),
|
|
|
+ body = Depends(remove_xss_json)
|
|
|
):
|
|
|
try:
|
|
|
user_id_1 = body['userId']
|
|
|
user = user_id_get_user_info(db,user_id_1)
|
|
|
password = body['password']
|
|
|
|
|
|
- user.password=password
|
|
|
- user.update_by=user_id
|
|
|
+ user.password = mpfun.enc_data(password)
|
|
|
+ user.sign = sys_user_data.get_sign_hmac(user)
|
|
|
+ user.update_by = user_id
|
|
|
+ user.update_time = datetime.now()
|
|
|
|
|
|
db.commit()
|
|
|
- return {"code": 200, "msg": "更新成功", "data": None}
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理重置用户密码【{user.nick_ame}】成功", request.client.host)
|
|
|
+ return {"code": 200, "msg": "重置用户密码成功", "data": None}
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
@@ -184,6 +236,8 @@ async def userupdate(
|
|
|
|
|
|
@router.post("/export")
|
|
|
async def export_to_excel(
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
db: Session = Depends(get_db),
|
|
|
user_id: str = Depends(valid_access_token)
|
|
|
):
|
|
@@ -225,13 +279,11 @@ async def export_to_excel(
|
|
|
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
|
}
|
|
|
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理导出用户数据成功", request.client.host)
|
|
|
+
|
|
|
# 返回文件流
|
|
|
return StreamingResponse(output, headers=headers)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
@router.get('/getInfo')
|
|
|
async def getInfo(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
|
|
|
try:
|
|
@@ -283,11 +335,11 @@ async def getInfo(request: Request,db: Session = Depends(get_db), user_id: int =
|
|
|
"userId": info.user_id,
|
|
|
"tenantId": info.tenant_id,
|
|
|
"deptId": info.dept_id,
|
|
|
- "userName": info.user_name,
|
|
|
+ "userName": mpfun.dec_data(info.user_name),
|
|
|
"nickName": info.nick_name,
|
|
|
"userType": info.user_type,
|
|
|
- "email": info.email,
|
|
|
- "phonenumber": info.phonenumber,
|
|
|
+ "email": mpfun.dec_data(info.email),
|
|
|
+ "phonenumber": mpfun.dec_data(info.phonenumber),
|
|
|
"sex": info.sex,
|
|
|
"avatar": info.avatar,
|
|
|
"status": info.status,
|
|
@@ -404,132 +456,6 @@ async def deptTree(request: Request,label: str = Query(None, description='部门
|
|
|
"data": result
|
|
|
}
|
|
|
|
|
|
-"""
|
|
|
-本接口已废弃
|
|
|
-"""
|
|
|
-@router.get('/avcon/deptUserTree_____________')
|
|
|
-async def deptTree(request: Request,label: str = Query(None, description='部门名称'),db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
|
|
|
- def build_dept_tree(depts, parent_dept):
|
|
|
- dept_tree = []
|
|
|
- for dept_info in depts:
|
|
|
- dept = {
|
|
|
- "id": dept_info.dept_id,
|
|
|
- "label": dept_info.dept_name,
|
|
|
- # "parentId": dept_info.parent_id,
|
|
|
- # "weight": dept_info.order_num
|
|
|
- }
|
|
|
- # print(dept_info.dept_id)
|
|
|
- children = parent_id_get_dept_info(db, dept_info.dept_id)
|
|
|
- if len(children) > 0:
|
|
|
- children_depts = build_dept_tree(children, dept)
|
|
|
- dept["children"] = children_depts
|
|
|
- userlist=dept_id_get_user_info(db,dept_info.dept_id)
|
|
|
- if userlist:
|
|
|
- for user_info in userlist:
|
|
|
- dept["children"].append({"id":user_info.user_id,"label":user_info.nick_name,"isUser":True,"isLeaf":True})
|
|
|
- else:
|
|
|
- dept['isLeaf']=True
|
|
|
- userlist = dept_id_get_user_info(db, dept_info.dept_id)
|
|
|
- if userlist:
|
|
|
- for user_info in userlist:
|
|
|
- dept["children"].append({"id": user_info.user_id, "label": user_info.nick_name,"isUser":True, "isLeaf": True})
|
|
|
- dept_tree.append(dept)
|
|
|
- return dept_tree
|
|
|
-
|
|
|
- # result = []
|
|
|
- if label:
|
|
|
- query = db.query(SysDept)
|
|
|
- query = query.filter(SysDept.del_flag != '2')
|
|
|
- query = query.filter(SysDept.dept_name.like(f'%{label}%'))
|
|
|
- # for dept_info in :
|
|
|
- result=build_dept_tree(query.all(), None)
|
|
|
- else:
|
|
|
- result=build_dept_tree(parent_id_get_dept_info(db, 0),None)
|
|
|
- return {
|
|
|
- "code": 200,
|
|
|
- "msg": "操作成功",
|
|
|
- "data": result
|
|
|
- }
|
|
|
-
|
|
|
-"""
|
|
|
-本接口已废弃
|
|
|
-"""
|
|
|
-@router.get('/avcon/list/dept_____________/{dept_id}')
|
|
|
-async def get_dept_user_list(
|
|
|
- # request: Request,
|
|
|
- dept_id: str,
|
|
|
- name: str = Query(None, description='昵称'),
|
|
|
- db: Session = Depends(get_db),
|
|
|
- body = Depends(remove_xss_json),
|
|
|
- user_id = Depends(valid_access_token)
|
|
|
-):
|
|
|
- def get_avcon_type_text(type: str) -> str:
|
|
|
- if type == '001':
|
|
|
- return '指挥视频终端'
|
|
|
- elif type == '060':
|
|
|
- return '营区监控'
|
|
|
- elif type == '085':
|
|
|
- return '监控网关服务器'
|
|
|
- elif type == '100':
|
|
|
- return 'H.323终端'
|
|
|
-
|
|
|
- return "未知终端"
|
|
|
- """
|
|
|
- query = db.query(SysUser)
|
|
|
- query = query.filter(SysUser.del_flag != '2')
|
|
|
-
|
|
|
- def get_dept_chli(dept_list: list, parent_id: int):
|
|
|
-
|
|
|
- depts = parent_id_get_dept_info(db, parent_id)
|
|
|
- if depts:
|
|
|
- for dept in depts:
|
|
|
- dept_list.append(dept.dept_id)
|
|
|
- get_dept_chli(dept_list, dept.dept_id)
|
|
|
- return dept_list
|
|
|
-
|
|
|
- if dept_id:
|
|
|
- query = query.filter(SysUser.dept_id.in_(get_dept_chli([], dept_id)))
|
|
|
-
|
|
|
- if name:
|
|
|
- query = query.filter(SysUser.nick_name.like(f'%{name}%'))
|
|
|
-
|
|
|
- user_list = query.all()
|
|
|
- user_list_dict = []
|
|
|
- # 将模型实例转换为字典
|
|
|
- for user in user_list:
|
|
|
- dept = dept_id_get_ancestors_names(db,dept_id_get_dept_info(db,user.dept_id))
|
|
|
- roleIds = user_id_get_user_roleIds(db, user_id)
|
|
|
- user_roles = role_id_list_get_user_role(db,roleIds)
|
|
|
- dev_id = user_id_get_avcon_dev_id(db, user.user_id)
|
|
|
- user_list_dict.append({
|
|
|
- "id": user.user_id,
|
|
|
- "dept": dept,
|
|
|
- "name": user.nick_name,
|
|
|
- "mobile": dev_id,
|
|
|
- "duty": '/'.join([i["roleName"] for i in user_roles])
|
|
|
- } )
|
|
|
- """
|
|
|
- user_list_dict = []
|
|
|
- query = db.query(AvconDevice).filter(AvconDevice.group_id == dept_id)
|
|
|
- query = query.filter(AvconDevice.dev_type == '001')
|
|
|
- # query = query.filter(AvconDevice.status == 1) # 上线状态
|
|
|
- query = query.order_by(AvconDevice.group_id.asc(), AvconDevice.dev_id.asc())
|
|
|
- rows = query.all()
|
|
|
- for row in rows:
|
|
|
- user_list_dict.append({
|
|
|
- "id": row.dev_id,
|
|
|
- "dept": get_avcon_type_text(row.dev_type),
|
|
|
- "name": row.dev_name,
|
|
|
- "mobile": row.dev_id
|
|
|
- })
|
|
|
-
|
|
|
- return {
|
|
|
- "code": 200,
|
|
|
- "data": user_list_dict,
|
|
|
-
|
|
|
- "msg": "操作成功"
|
|
|
- }
|
|
|
-
|
|
|
# def get_query_params(params: dict):
|
|
|
# return params
|
|
|
# def get_time_params(params: dict = Depends(get_query_params)):
|
|
@@ -545,9 +471,6 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
userName: str = Query(None, description='用户名'),
|
|
|
status: int = Query(None, description='用户状态'),
|
|
|
phonenumber : str = Query(None, description='手机号'),
|
|
|
- # params:dict = Query(None, description='创建日期'),
|
|
|
- # beginTime: str = Depends(get_time_params),
|
|
|
- # endTime: str = Depends(get_time_params),
|
|
|
page: int = Query(1, gt=0, description='页码'),
|
|
|
pageSize: int = Query(10, gt=0, description='每页条目数量'),
|
|
|
db: Session = Depends(get_db),
|
|
@@ -557,20 +480,12 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
query = db.query(SysUser)
|
|
|
query = query.filter(SysUser.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 userName:
|
|
|
- query =query.filter(SysUser.user_name.like(f'%{userName}%'))
|
|
|
+ query =query.filter(SysUser.user_name == mpfun.enc_data(userName))
|
|
|
if status:
|
|
|
- query =query.filter(SysUser.status==status)
|
|
|
+ query =query.filter(SysUser.status == status)
|
|
|
if phonenumber:
|
|
|
- query =query.filter(SysUser.phonenumber.like(f'%{phonenumber}%'))
|
|
|
+ query =query.filter(SysUser.phonenumber == mpfun.enc_data(phonenumber))
|
|
|
|
|
|
def get_dept_chli(dept_list : list,parent_id : int):
|
|
|
|
|
@@ -588,7 +503,6 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
total_items = query.count()
|
|
|
|
|
|
# 排序
|
|
|
-
|
|
|
query = query.order_by(SysUser.create_time.desc())
|
|
|
# 执行分页查询
|
|
|
users = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
@@ -596,18 +510,18 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
# 将查询结果转换为列表形式的字典
|
|
|
user_list = []
|
|
|
for user in users:
|
|
|
- roleIds = user_id_get_user_roleIds(db, user.user_id)
|
|
|
- user_roles = role_id_list_get_user_role(db,roleIds)
|
|
|
+ # roleIds = user_id_get_user_roleIds(db, user.user_id)
|
|
|
+ # user_roles = role_id_list_get_user_role(db,roleIds)
|
|
|
|
|
|
user_info = {
|
|
|
"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,
|
|
@@ -616,10 +530,10 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
"remark": user.remark,
|
|
|
"createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
"deptName": user.dept_name,
|
|
|
- "roles": user_roles,
|
|
|
- "roleIds": None,
|
|
|
- "postIds": None,
|
|
|
- "roleId": None
|
|
|
+ # "roles": user_roles,
|
|
|
+ # "roleIds": None,
|
|
|
+ # "postIds": None,
|
|
|
+ # "roleId": None
|
|
|
}
|
|
|
user_list.append(user_info)
|
|
|
|
|
@@ -657,27 +571,27 @@ async def get_dept_user_list(
|
|
|
user_list = query.all()
|
|
|
# 将模型实例转换为字典
|
|
|
user_list_dict = [{
|
|
|
- "userId": user.user_id,
|
|
|
- "tenantId": user.tenant_id,
|
|
|
- "deptId": user.dept_id,
|
|
|
- "userName": user.user_name,
|
|
|
- "nickName": user.nick_name,
|
|
|
- "userType": user.user_type,
|
|
|
- "email": user.email,
|
|
|
- "phonenumber": 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,
|
|
|
- "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
- "deptName": user.dept_name,
|
|
|
- "roles": None,
|
|
|
- "roleIds": None,
|
|
|
- "postIds": None,
|
|
|
- "roleId": None
|
|
|
- } for user in user_list]
|
|
|
+ "userId": user.user_id,
|
|
|
+ "tenantId": user.tenant_id,
|
|
|
+ "deptId": user.dept_id,
|
|
|
+ "userName": mpfun.dec_data(user.user_name),
|
|
|
+ "nickName": user.nick_name,
|
|
|
+ "userType": user.user_type,
|
|
|
+ "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,
|
|
|
+ "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
+ "deptName": user.dept_name,
|
|
|
+ "roles": None,
|
|
|
+ "roleIds": None,
|
|
|
+ "postIds": None,
|
|
|
+ "roleId": None
|
|
|
+ } for user in user_list]
|
|
|
|
|
|
|
|
|
return {
|
|
@@ -690,46 +604,60 @@ async def get_dept_user_list(
|
|
|
|
|
|
@router.put('/changeStatus')
|
|
|
async def change_user_status(
|
|
|
- db: Session = Depends(get_db),
|
|
|
- body=Depends(remove_xss_json),
|
|
|
- user_id=Depends(valid_access_token)
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body=Depends(remove_xss_json),
|
|
|
+ user_id=Depends(valid_access_token)
|
|
|
):
|
|
|
try:
|
|
|
userId = body['userId']
|
|
|
status = body['status']
|
|
|
+
|
|
|
query = db.query(SysUser)
|
|
|
query = query.filter(SysUser.del_flag != '2')
|
|
|
query = query.filter(SysUser.user_id == userId)
|
|
|
|
|
|
user = query.first()
|
|
|
- user.status= status
|
|
|
- user.update_by=user_id
|
|
|
+ user.status = status
|
|
|
+ user.sign = sys_user_data.get_sign_hmac(user)
|
|
|
+ user.update_by = user_id
|
|
|
+ user.update_time = datetime.now()
|
|
|
db.commit()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理变更用户状态成功", request.client.host)
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "操作成功"
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
- db.rollback()
|
|
|
traceback.print_exc()
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
|
@router.delete('/{user_id1}')
|
|
|
-async def delete_dept(
|
|
|
- user_id1:int,
|
|
|
+async def delete_user(
|
|
|
+ user_id1: str,
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
user_id = Depends(valid_access_token)
|
|
|
):
|
|
|
+ userIdList=user_id1.split(',')
|
|
|
+ for user_id1 in userIdList:
|
|
|
+ user = user_id_get_user_info(db,user_id1)
|
|
|
+ # 将模型实例转换为字典
|
|
|
+ print(user)
|
|
|
+
|
|
|
+ user.del_flag = '2'
|
|
|
+ user.sign = sys_user_data.get_sign_hmac(user)
|
|
|
+ user.update_by = user_id
|
|
|
+ user.update_time = datetime.now()
|
|
|
+ db.commit()
|
|
|
|
|
|
- user = user_id_get_user_info(db,user_id1)
|
|
|
- # 将模型实例转换为字典
|
|
|
- print(user)
|
|
|
- user.del_flag = '2'
|
|
|
- user.update_by = user_id
|
|
|
- db.commit()
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理删除用户{user.nick_name}记录成功", request.client.host)
|
|
|
|
|
|
return {
|
|
|
"code": 200,
|
|
@@ -785,11 +713,15 @@ async def get_user_video_points(
|
|
|
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
|
|
|
@router.put('/authRole')
|
|
|
-async def authRoleUpdate( userId: int = Query(None ,description='用户id'),
|
|
|
- roleIds: str = Query(None ,description='权限id'),
|
|
|
- db: Session = Depends(get_db),
|
|
|
- user_id: int = Depends(valid_access_token)):
|
|
|
+async def authRoleUpdate(
|
|
|
+ request: Request,
|
|
|
+ userId: int = Query(None ,description='用户id'),
|
|
|
+ roleIds: str = Query(None ,description='权限id'),
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token)):
|
|
|
try:
|
|
|
+ user = user_id_get_user_info(db, userId)
|
|
|
|
|
|
# 解析角色ID列表
|
|
|
role_ids_list = [int(id) for id in roleIds.split(',')]
|
|
@@ -801,6 +733,9 @@ async def authRoleUpdate( userId: int = Query(None ,description='用户id'),
|
|
|
new_roles = [SysUserRole(user_id=userId, role_id=role_id) for role_id in role_ids_list]
|
|
|
db.add_all(new_roles)
|
|
|
db.commit()
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理分配用户{user.nick_name}角色成功", request.client.host)
|
|
|
+
|
|
|
return {"code": 200, "msg": "更新成功", "data": None}
|
|
|
|
|
|
|
|
@@ -819,62 +754,65 @@ async def userlist( #user_id_1: int = Query(None ,description='用户id'),
|
|
|
roleIds = user_id_get_user_roleIds(db, user_id)
|
|
|
user_roles = role_id_list_get_user_role(db,roleIds)
|
|
|
dept = dept_id_get_dept_info(db,user.dept_id)
|
|
|
- user_list = {
|
|
|
- "admin":1 in roleIds,
|
|
|
- "avatar": user.avatar,
|
|
|
- "createBy":user_id_get_user_info(db,user.create_by).user_name,
|
|
|
- "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
- "delFlag":user.del_flag,
|
|
|
- "dept":{
|
|
|
- "createBy": user_id_get_user_info(db,dept.create_by).user_name if dept.create_by else None,
|
|
|
- "createTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else None,
|
|
|
- "updateBy": user_id_get_user_info(db,dept.update_by).user_name if dept.update_by else None,
|
|
|
- "updateTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else None,
|
|
|
- "remark": '',#dept.remark,
|
|
|
- "deptId": dept.dept_id,
|
|
|
- "parentId": dept.parent_id,
|
|
|
- "ancestors": dept.ancestors,
|
|
|
- "deptName": dept.dept_name,
|
|
|
- "orderNum": dept.order_num,
|
|
|
- "leader": dept.leader_name,
|
|
|
- "phone": dept.phone,
|
|
|
- "email": dept.email,
|
|
|
- "status": dept.status,
|
|
|
- "delFlag": dept.del_flag,
|
|
|
- "parentName": dept.parent_name,
|
|
|
- "children": []
|
|
|
- },
|
|
|
- "deptId": user.dept_id,
|
|
|
- "email": user.email,
|
|
|
- "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
|
|
|
- "loginIp": user.login_ip,
|
|
|
- "nickName": user.nick_name,
|
|
|
- "password":"",
|
|
|
- "phonenumber": user.phonenumber,
|
|
|
- "postIds": None,
|
|
|
- "remark": user.remark,
|
|
|
- "roleId": None,
|
|
|
- "roleIds": roleIds,
|
|
|
- "roles": user_roles,
|
|
|
- "sex": user.sex,
|
|
|
- "status": user.status,
|
|
|
- "updateBy":user.update_by,
|
|
|
- "updateTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else None,
|
|
|
- "userId": user.user_id,
|
|
|
- "userName": user.user_name,
|
|
|
- "tenantId": user.tenant_id,
|
|
|
- "userType": user.user_type,
|
|
|
- "deptName": dept.dept_name,
|
|
|
- }
|
|
|
+ user_info = {
|
|
|
+ "admin":1 in roleIds,
|
|
|
+ "avatar": user.avatar,
|
|
|
+ "createBy":mpfun.dec_data(user_id_get_user_info(db,user.create_by).user_name),
|
|
|
+ "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
+ "delFlag":user.del_flag,
|
|
|
+ "dept":{
|
|
|
+ "createBy": user_id_get_user_info(db,dept.create_by).user_name if dept.create_by else None,
|
|
|
+ "createTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else None,
|
|
|
+ "updateBy": user_id_get_user_info(db,dept.update_by).user_name if dept.update_by else None,
|
|
|
+ "updateTime": dept.create_time.strftime('%Y-%m-%d %H:%M:%S') if dept.create_time else None,
|
|
|
+ "remark": '',#dept.remark,
|
|
|
+ "deptId": dept.dept_id,
|
|
|
+ "parentId": dept.parent_id,
|
|
|
+ "ancestors": dept.ancestors,
|
|
|
+ "deptName": dept.dept_name,
|
|
|
+ "orderNum": dept.order_num,
|
|
|
+ "leader": dept.leader_name,
|
|
|
+ "phone": dept.phone,
|
|
|
+ "email": dept.email,
|
|
|
+ "status": dept.status,
|
|
|
+ "delFlag": dept.del_flag,
|
|
|
+ "parentName": dept.parent_name,
|
|
|
+ "children": []
|
|
|
+ },
|
|
|
+ "deptId": user.dept_id,
|
|
|
+ "email": mpfun.dec_data(user.email),
|
|
|
+ "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
|
|
|
+ "loginIp": user.login_ip,
|
|
|
+ "nickName": user.nick_name,
|
|
|
+ "password":"",
|
|
|
+ "phonenumber": mpfun.dec_data(user.phonenumber),
|
|
|
+ "postIds": None,
|
|
|
+ "remark": user.remark,
|
|
|
+ "roleId": None,
|
|
|
+ "roleIds": roleIds,
|
|
|
+ "roles": user_roles,
|
|
|
+ "sex": user.sex,
|
|
|
+ "status": user.status,
|
|
|
+ "updateBy":user.update_by,
|
|
|
+ "updateTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else None,
|
|
|
+ "userId": user.user_id,
|
|
|
+ "userName": mpfun.dec_data(user.user_name),
|
|
|
+ "tenantId": user.tenant_id,
|
|
|
+ "userType": user.user_type,
|
|
|
+ "deptName": dept.dept_name,
|
|
|
|
|
|
- roles = get_role(db,roleIds)
|
|
|
+ "postGroup":"工作人员",
|
|
|
+ "roleGroup":'/'.join([i["roleName"] for i in user_roles])
|
|
|
+ }
|
|
|
+
|
|
|
+ # roles = get_role(db,roleIds)
|
|
|
|
|
|
|
|
|
# 返回结果
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "成功用户列表",
|
|
|
- "data": user_list,
|
|
|
+ "data": user_info,
|
|
|
# {
|
|
|
# "user":user_list,
|
|
|
# "roleIds":roleIds,
|
|
@@ -882,55 +820,85 @@ async def userlist( #user_id_1: int = Query(None ,description='用户id'),
|
|
|
# "postIds":[],
|
|
|
# "posts":[]
|
|
|
# }
|
|
|
- "postGroup":"工作人员",
|
|
|
- "roleGroup":'/'.join([i["roleName"] for i in user_roles])
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
+
|
|
|
+@router.post('/profile/avatar')
|
|
|
+async def updateAvatar(
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token)):
|
|
|
+
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理更新用户头像成功", request.client.host)
|
|
|
+
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "更新头像成功"
|
|
|
+ }
|
|
|
+
|
|
|
@router.put('/profile')
|
|
|
-async def userlist( #user_id_1: int = Query(None ,description='用户id'),
|
|
|
- db: Session = Depends(get_db),
|
|
|
- body = Depends(remove_xss_json),
|
|
|
- user_id: int = Depends(valid_access_token)):
|
|
|
+async def userlist(
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id: int = Depends(valid_access_token)):
|
|
|
try:
|
|
|
|
|
|
user = user_id_get_user_info(db,user_id)
|
|
|
if "email" in body:
|
|
|
- user.email=body['email']
|
|
|
- user.update_by=user_id
|
|
|
+ user.email = mpfun.enc_data(body['email'])
|
|
|
if "nickName" in body:
|
|
|
user.nick_name = body['nickName']
|
|
|
- user.update_by=user_id
|
|
|
if "phonenumber" in body:
|
|
|
- user.phonenumber = body['phonenumber']
|
|
|
- user.update_by=user_id
|
|
|
+ user.phonenumber = mpfun.enc_data(body['phonenumber'])
|
|
|
if "sex" in body:
|
|
|
- user.nick_name = body['sex']
|
|
|
- user.update_by=user_id
|
|
|
+ user.sex = body['sex']
|
|
|
+
|
|
|
+ user.sign = sys_user_data.get_sign_hmac(user)
|
|
|
+ user.update_by = user_id
|
|
|
+ user.update_time = datetime.now()
|
|
|
db.commit()
|
|
|
+
|
|
|
+ print('auth_user', auth_user)
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理更新用户【{user.nick_name}】个人信息成功", request.client.host)
|
|
|
+
|
|
|
return {"code":200,"msg":"成功","data":None}
|
|
|
+
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
+
|
|
|
@router.put('/profile/updatePwd')
|
|
|
-async def userlist( #user_id_1: int = Query(None ,description='用户id'),
|
|
|
- db: Session = Depends(get_db),
|
|
|
- body = Depends(remove_xss_json),
|
|
|
- user_id: int = Depends(valid_access_token)):
|
|
|
+async def userlist(
|
|
|
+ request: Request,
|
|
|
+ auth_user: AuthUser = Depends(find_auth_user),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id: int = Depends(valid_access_token)):
|
|
|
try:
|
|
|
|
|
|
user = user_id_get_user_info(db,user_id)
|
|
|
- if user.password!=body['oldPassword']:
|
|
|
- return JSONResponse(status_code=404,content={"code":404,"msg":"密码错误"})
|
|
|
+ if user.password != mpfun.enc_data(body['oldPassword']):
|
|
|
+ return {"code": 500, "msg":"旧密码错误"}
|
|
|
+
|
|
|
if "newPassword" in body:
|
|
|
- user.nick_name = body['newPassword']
|
|
|
- user.update_by=user_id
|
|
|
+ user.password = mpfun.enc_data(body['newPassword'])
|
|
|
+ user.sign = sys_user_data.get_sign_hmac(user)
|
|
|
+ user.update_by = user_id
|
|
|
+ user.update_time = datetime.now()
|
|
|
+ db.commit()
|
|
|
|
|
|
- db.commit()
|
|
|
- return {"code":200,"msg":"成功","data":None}
|
|
|
+ db_czrz.log(db, auth_user, "系统管理", f"后台管理更新用户【{user.nick_name}】个人中心密码成功", request.client.host)
|
|
|
+
|
|
|
+ return {"code":200,"msg":"修改密码成功","data":None}
|
|
|
+
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
@@ -953,11 +921,11 @@ async def userlist( user_id_1: int = Query(None ,description='用户id'),
|
|
|
"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,
|
|
@@ -966,14 +934,12 @@ async def userlist( user_id_1: int = Query(None ,description='用户id'),
|
|
|
"remark": user.remark,
|
|
|
"createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
"deptName": user.dept_name,
|
|
|
- "roles": user_roles,
|
|
|
- "roleIds": roleIds,
|
|
|
- "postIds": None,
|
|
|
- "roleId": None
|
|
|
+ "yzyAccount": mpfun.dec_data(user.yzy_account),
|
|
|
}
|
|
|
|
|
|
roles = get_role(db,roleIds)
|
|
|
-
|
|
|
+ postIds = user_id_get_user_postIds(db, user_id_1)
|
|
|
+ posts = dept_id_get_dept_post(db, user.dept_id)
|
|
|
|
|
|
# 返回结果
|
|
|
return {
|
|
@@ -981,10 +947,14 @@ async def userlist( user_id_1: int = Query(None ,description='用户id'),
|
|
|
"msg": "成功用户列表",
|
|
|
"data": {
|
|
|
"user":user_list,
|
|
|
+ # 用户当前的所属角色ID列表
|
|
|
"roleIds":roleIds,
|
|
|
+ # 用户当前所属部门岗位ID列表
|
|
|
+ "postIds": postIds,
|
|
|
+ # 可供选择的角色列表
|
|
|
"roles":roles,
|
|
|
- "postIds":[],
|
|
|
- "posts":[]
|
|
|
+ # 可供选择的部门岗位列表
|
|
|
+ "posts": posts
|
|
|
}
|
|
|
}
|
|
|
|