ruo_python_django/admin-api/web/system/views.py
2025-07-25 10:03:06 +08:00

777 lines
27 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
from functools import wraps
from addict import Dict
from django.db.models import Q
from django.http.response import JsonResponse
from django_redis import get_redis_connection
from rest_framework.request import Request
from rest_framework.views import APIView
from config import config
from utils.myDataUtils import TreeBuilder
from utils.myEncrypt import HashCipher
from utils.myEnum import SystemDelEnum, SystemStatusEnum, SystemUserTypeEnum
from utils.myResFormat import ResultJson, ResultCode
from utils.mySnowflake import Sf
from web.models import SystemDept, SystemUser, SystemRole, SystemUserRole, SystemMenu, SystemRoleMenu
from web.paginator import StandardResultsSetPagination
from web.serializer import SystemDeptSerializer, SystemUserSerializer, SystemRoleSerializer, SystemMenuSerializer
RedisClient = get_redis_connection()
# 检验权限字符串的装饰器
def permAuth(perKey):
def decorator(function):
@wraps(function)
def decorated_function(self, *args, **kwargs):
# 获取token中的用户权限
user_info = {}
for item in args:
if isinstance(item, Request):
user_info = item.headers.user_info
user_permissions = user_info.get("permissions", [])
# 判断是否有权限
if "*:*:*" in user_permissions or perKey in user_permissions:
response = function(self, *args, **kwargs)
return response
else:
return JsonResponse(ResultJson(ret=ResultCode.PRE_AUTH_ERROR).result)
return decorated_function
return decorator
def response2json(response) -> dict:
return json.loads(response.content.decode())
class DeptListView(APIView):
"""【系统部门】列表接口"""
@permAuth("system:dept:list")
def get(self, request, *args, **kwargs):
deptName: str = request.GET.get('deptName')
status: str = request.GET.get('status')
q = Q()
q.connector = 'AND'
if deptName:
q.children.append(('deptName', deptName))
if status:
q.children.append(('status', status))
q.children.append(('delFlag', SystemDelEnum.p0.value))
dept = SystemDept.objects.filter(q)
deptData = SystemDeptSerializer(instance=dept, many=True).data
return JsonResponse(ResultJson(ResultCode.SUCCESS, data=deptData).result)
class DeptCreateView(APIView):
"""【系统部门】新增部门"""
@permAuth("system:dept:add")
def post(self, request, *args, **kwargs):
data: dict = request.data
parentId = request.data.get('parentId')
dept_obj = SystemDept.objects.filter(deptId=parentId)
if not dept_obj:
raise Exception("未找到系统部门父级id")
dept_obj = dept_obj.first()
data["ancestors"] = dept_obj.ancestors + "," + dept_obj.deptId
data["deptId"] = Sf.generate()
# 判断同一父级部门下不重名
deptNameExist = SystemDept.objects.filter(deptName=data.get("deptName"), parentId=data.get("parentId"))
if deptNameExist:
return JsonResponse(ResultJson(ret=ResultCode.DEPT_ERROR).result)
SystemDept.objects.create(**data)
return JsonResponse(ResultJson(ResultCode.SUCCESS, data=data).result)
@permAuth("system:dept:edit")
def put(self, request, *args, **kwargs):
data: dict = request.data
deptId = data.get('deptId')
deptData = SystemDept.objects.get(deptId=deptId)
# 判断原始目录的父级id是否变化
if deptData.parentId == data.get('parentId'):
SystemDept.objects.filter(deptId=deptId).update(**data)
else:
# 处理本条数据的上级关联关系
parentId = data.get('parentId')
parentData = SystemDept.objects.get(deptId=parentId)
repAncestors = parentData.ancestors + "," + parentId
data['ancestors'] = repAncestors
SystemDept.objects.filter(deptId=deptId).update(**data)
# 处理下级关联的路径问题
oldAncestors = deptData.ancestors + "," + deptData.deptId
SystemDeptDataList = SystemDept.objects.filter(ancestors__contains=oldAncestors, delFlag=SystemDelEnum.p0.value)
for item in SystemDeptDataList:
new_ancestors = item.ancestors
new_ancestors = str(new_ancestors).replace(oldAncestors, repAncestors + "," + deptData.deptId)
item.ancestors = new_ancestors
item.save()
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class DeptDetailView(APIView):
"""【系统部门】新增部门"""
@permAuth("system:dept:query")
def get(self, request, deptId, *args, **kwargs):
"""【系统部门】部门详情"""
data = SystemDept.objects.get(deptId=deptId, delFlag=SystemDelEnum.p0.value)
ser = SystemDeptSerializer(instance=data)
return JsonResponse(ResultJson(ResultCode.SUCCESS, data=ser.data).result)
@permAuth("system:dept:remove")
def delete(self, request, deptId, *args, **kwargs):
# 更新部门状态
SystemDept.objects.filter(deptId=deptId).update(delFlag=SystemDelEnum.p1.value)
# 更新人员绑定部门
SystemUser.objects.filter(deptId=deptId).update(deptId="")
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class DeptExcludeView(APIView):
"""【系统部门】排除查询"""
@permAuth("system:dept:query")
def get(self, request, deptId, *args, **kwargs):
# 查询部门id不是指定id或者ancestors不包含该id,且状态未删除的数据
userData = SystemDept.objects.filter(delFlag=SystemDelEnum.p0.value, status=SystemStatusEnum.p0.value).exclude(deptId=deptId,
ancestors__contains=deptId)
ser = SystemDeptSerializer(instance=userData, many=True)
return JsonResponse(ResultJson(ResultCode.SUCCESS, data=ser.data).result)
class RoleListView(APIView):
"""【系统角色】列表接口"""
def get(self, request, *args, **kwargs):
roleName: str = request.GET.get('roleName')
roleKey: str = request.GET.get('roleKey')
status: str = request.GET.get('status')
q = Q()
q.connector = 'AND'
if roleName:
q.children.append(('roleName', roleName))
if roleKey:
q.children.append(('roleKey', roleKey))
if status:
q.children.append(('status', status))
q.children.append(('roleAdmin', False))
q.children.append(('delFlag', SystemDelEnum.p0.value))
roleData = SystemRole.objects.filter(q).order_by('roleSort')
paginator = StandardResultsSetPagination()
role_list = paginator.paginate_queryset_count(roleData, self.request, view=self, serializer=SystemRoleSerializer)
return JsonResponse(ResultJson(ResultCode.SUCCESS, data=role_list).result)
class RoleCreateView(APIView):
"""【系统角色】新增接口"""
def post(self, request, *args, **kwargs):
data: dict = request.data
roleKey = data.get("roleKey")
roleName = data.get("roleName")
menuIds = data.pop("menuIds", [])
roleId = Sf.generate()
data["roleId"] = roleId
roleData = SystemRole.objects.filter(Q(roleKey=roleKey, delFlag=SystemDelEnum.p0.value) | Q(roleName=roleName, delFlag=SystemDelEnum.p0.value))
if roleData:
return JsonResponse(ResultJson(ret=ResultCode.ROLE_ERROR).result)
# 删除原始的关系
SystemRoleMenu.objects.filter(roleId=roleId).delete()
for menuId in menuIds:
SystemRoleMenu.objects.create(menuId=menuId, roleId=roleId)
# 创建角色数据
SystemRole.objects.create(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
def put(self, request, *args, **kwargs):
data: dict = request.data
roleId = data.get("roleId")
menuIds = data.pop("menuIds", [])
roleAdmin = data.pop("roleAdmin", False)
# 删除原始的关系
SystemRoleMenu.objects.filter(roleId=roleId).delete()
for menuId in menuIds:
SystemRoleMenu.objects.create(menuId=menuId, roleId=roleId)
# 更新角色数据
SystemRole.objects.filter(roleId=roleId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class RoleStatusView(APIView):
"""【系统角色】修改状态"""
def put(self, request):
data: dict = request.data
roleId = data.get("roleId")
SystemRole.objects.filter(roleId=roleId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class RoleDetailView(APIView):
@permAuth("system:role:query")
def get(self, request, roleId: str):
"""【系统角色】获取角色信息"""
roleData = SystemRole.objects.get(roleId=roleId)
roleData = SystemRoleSerializer(instance=roleData).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=roleData).result)
@permAuth("system:role:remove")
def delete(self, request, roleId: str):
"""【系统角色】获取删除角色信息"""
roleIds = roleId.split(',')
SystemRole.objects.filter(roleId__in=roleIds).update(delFlag=SystemDelEnum.p1.value)
SystemUserRole.objects.filter(roleId__in=roleIds).delete()
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class AuthUserCancelView(APIView):
def put(self, request):
"""【系统角色】取消角色人员授权"""
# 处理角色用户关系
roleId: str = request.data.get('roleId')
userId: str = request.data.get('userId')
# 判断是批量删除还是单个删除
SystemUserRole.objects.filter(roleId=roleId, userId=userId).delete()
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class AuthUserAllocatedListView(APIView):
def get(self, request):
"""【系统角色】给角色分配人员"""
roleId: str = request.GET.get('roleId')
username: str = request.GET.get('username')
phone: str = request.GET.get('phone')
UserRoleIds = SystemUserRole.objects.filter(roleId=roleId)
q = Q()
q.connector = 'AND'
if username:
q.children.append(('username', username))
if phone:
q.children.append(('phone', phone))
q.children.append(('userId__in', [item.userId for item in UserRoleIds]))
q.children.append(('delFlag', SystemDelEnum.p0.value))
q.children.append(('userType', SystemUserTypeEnum.p0.value))
userData = SystemUser.objects.filter(q)
paginator = StandardResultsSetPagination()
# 组装人员的部门信息
userData = paginator.paginate_queryset_count(userData, self.request, view=self, serializer=SystemUserSerializer)
for item in userData.get("data", []):
deptId = item.get('deptId')
if not deptId:
item["dept"] = {}
else:
deptData = SystemDept.objects.get(deptId=deptId)
item["dept"] = SystemDeptSerializer(instance=deptData).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=userData).result)
class AuthUserUnallocatedListView(APIView):
def get(self, request):
"""【系统角色】获取未授权用户列表"""
roleId: str = request.GET.get('roleId')
username: str = request.GET.get('username')
phone: str = request.GET.get('phone')
UserRoleIds = SystemUserRole.objects.filter(roleId=roleId)
q = Q()
q.connector = 'AND'
if username:
q.children.append(('username', username))
if phone:
q.children.append(('phone', phone))
q.children.append(('delFlag', SystemDelEnum.p0.value))
q.children.append(('userType', SystemUserTypeEnum.p0.value))
userData = SystemUser.objects.filter(q).exclude(userId__in=[item.userId for item in UserRoleIds])
paginator = StandardResultsSetPagination()
# 组装人员的部门信息
userData = paginator.paginate_queryset_count(userData, self.request, view=self, serializer=SystemUserSerializer)
for item in userData.get("data", []):
deptId = item.get('deptId')
if not deptId:
item["dept"] = {}
else:
deptData = SystemDept.objects.get(deptId=deptId)
item["dept"] = SystemDeptSerializer(instance=deptData).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=userData).result)
class AuthUserSelectAllView(APIView):
def put(self, request):
"""【系统角色】批量绑定角色人员"""
roleId: str = request.data.get('roleId')
userIds: str = request.data.get('userIds')
userIdList = userIds.split(',')
# 批量插入用户关系
for userId in userIdList:
SystemUserRole.objects.create(**dict(userId=userId, roleId=roleId))
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class AuthUserCancelAllView(APIView):
def put(self, request):
"""【系统角色】批量取消角色人员授权"""
# 处理角色用户关系
roleId: str = request.data.get('roleId')
userIds: str = request.data.get('userIds')
userIdList = userIds.split(',')
# 判断是批量删除还是单个删除
SystemUserRole.objects.filter(roleId=roleId, userId__in=userIdList).delete()
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class UserListView(APIView):
"""【系统用户】列表接口"""
@permAuth("system:user:list")
def get(self, request):
deptId: str = request.GET.get('deptId')
username: str = request.GET.get('username')
phone: str = request.GET.get('phone')
status: str = request.GET.get('status')
q = Q()
q.connector = 'AND'
if deptId:
deptData = SystemDept.objects.filter(ancestors__contains=deptId)
deptIds = [item.deptId for item in deptData]
deptIds.append(deptId)
q.children.append(('deptId__in', deptIds))
if username:
q.children.append(('username', username))
if phone:
q.children.append(('phone', phone))
if status:
q.children.append(('status', status))
q.children.append(('delFlag', SystemDelEnum.p0.value))
q.children.append(('userType', SystemUserTypeEnum.p0.value))
userData = SystemUser.objects.filter(q)
# 分页
paginator = StandardResultsSetPagination()
userData = paginator.paginate_queryset_count(userData, self.request, view=self, serializer=SystemUserSerializer)
# 组装人员的部门信息
for item in userData.get("data", []):
deptId = item.get('deptId')
if not deptId:
item["dept"] = {}
else:
deptData = SystemDept.objects.get(deptId=deptId)
item["dept"] = SystemDeptSerializer(instance=deptData).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=userData).result)
class UserDeptTreeView(APIView):
"""【系统用户】部门的结构树"""
@classmethod
def deptFormat(cls, SystemDeptList):
container = []
for item in SystemDeptList:
deptItem = {"id": item.get("deptId"), "parentId": item.get("parentId"), "label": item.get("deptName"), }
container.append(deptItem)
return container
def get(self, request):
# 查询全部数据
deptData = SystemDept.objects.filter(delFlag=SystemDelEnum.p0.value, status=SystemStatusEnum.p0.value)
# 组装前端所需要的数据结构
SystemDeptList = SystemDeptSerializer(instance=deptData, many=True)
DeptList = self.deptFormat(SystemDeptList.data)
# 组装成树的结构
TreeData = TreeBuilder(DeptList).build(parentKey="parentId", ownerKey="id", topParent="0")
TreeDataList = list(TreeData.values())
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=TreeDataList).result)
class UserStatusView(APIView):
"""【系统用户】修改用户状态"""
@permAuth("*:*:*")
def put(self, request):
data: dict = request.data
userId = data.get("userId")
SystemUser.objects.filter(userId=userId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class UserCreateView(APIView):
"""【系统用户】新增接口"""
@permAuth("*:*:*")
def post(self, request):
data: dict = request.data
username = data.get("username")
password = data.get('password', "")
userId = Sf.generate()
# 判断用户名是否重复
userExist = SystemUser.objects.filter(username=username, delFlag=SystemDelEnum.p0.value)
if userExist:
return JsonResponse(ResultJson(ret=ResultCode.USER_ERROR).result)
# 处理角色用户关系
roleIds = data.pop("roleIds", [])
for roleId in roleIds:
SystemUserRole.objects.create(**dict(roleId=roleId, userId=userId))
# 用户表插入数据
user_info = request.headers.user_info
username = user_info.get('user', {}).get('username')
data["userId"] = userId
data["createBy"] = username
data["password"] = HashCipher.md5(config.ENCRYPT_STRING + password)
SystemUser.objects.create(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
@permAuth("*:*:*")
def put(self, request):
"""【系统用户】修改信息"""
# 处理角色用户关系
data: dict = request.data
userId = data.get('userId')
roleIds = data.pop("roleIds", [])
# 删除以前的角色人员关系,在增加新的关系
SystemUserRole.objects.filter(userId=userId).delete()
for roleId in roleIds:
SystemUserRole.objects.create(**dict(roleId=roleId, userId=userId))
SystemUser.objects.filter(userId=userId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
@permAuth("*:*:*")
def get(self, request):
"""【系统用户】获取现有的角色列表"""
res = Dict()
roleData = SystemRole.objects.filter(status=SystemStatusEnum.p0.value, delFlag=SystemDelEnum.p0.value, roleAdmin=False)
res.roles = SystemRoleSerializer(instance=roleData, many=True).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=res).result)
class UserDetailView(APIView):
@permAuth("system:user:query")
def get(self, request, userId: str):
"""【系统用户】获取用户信息"""
res = Dict()
# 找到用户绑定的角色id
userData = SystemUser.objects.get(userId=userId)
userRoleData = SystemUserRole.objects.filter(userId=userId)
roleIds = [item.roleId for item in userRoleData]
roleData = SystemRole.objects.filter(status=SystemStatusEnum.p0.value, roleAdmin=False, delFlag=SystemDelEnum.p0.value)
# 组装数据
res.user = SystemUserSerializer(instance=userData).data
res.roleIds = roleIds
res.roles = SystemRoleSerializer(instance=roleData, many=True).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=res).result)
@permAuth("system:user:remove")
def delete(self, request, userId: str):
"""【系统用户】获取删除用户信息"""
# 分割路径的userId,变为list
userIds = userId.split(',')
SystemUser.objects.filter(userId__in=userIds).update(delFlag=SystemDelEnum.p1.value)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class UserProfileView(APIView):
def get(self, request):
"""【个人中心】获取信息"""
user_info = request.headers.user_info
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=user_info).result)
def put(self, request):
"""【个人中心】修改"""
data: dict = request.data
user_info = request.headers.user_info
userId = user_info.get('user', {}).get('userId')
SystemUser.objects.filter(userId=userId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class UserProfileAvatarView(APIView):
def post(self, request):
"""【个人中心】修改头像"""
avatar = request.Files.get("avatarfile")
user_info = request.headers.user_info
userId = user_info.get('user', {}).get('userId')
# TODO: 上传头像文件流生成一个url更新用户信息的头像字段没有obs 功能未作)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=user_info).result)
class UserResetPwdView(APIView):
@permAuth("*:*:*")
def put(self, request):
"""【系统用户】重置密码/ 需要管理员权限"""
data: dict = request.data
password = data.get('password')
userId = data.get('userId')
# 修改密码
password_md5 = HashCipher.md5(config.ENCRYPT_STRING + password)
SystemUser.objects.filter(userId=userId).update(password=password_md5)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class UserUpdatePwdView(APIView):
def put(self, request):
"""【系统用户】更新密码"""
oldPassword = request.GET.get('oldPassword')
newPassword = request.GET.get('newPassword')
# 判断旧密码是否正确
user_info = request.headers.user_info
userId = user_info.get('user', {}).get('userId', "")
# 对密码进行加密
old_encrypt_password = HashCipher.md5(config.ENCRYPT_STRING + str(oldPassword))
new_encrypt_password = HashCipher.md5(config.ENCRYPT_STRING + str(newPassword))
userData = SystemUser.objects.filter(password=old_encrypt_password, userId=userId)
if not userData:
return JsonResponse(ResultJson(ret=ResultCode.PASSWORD_ERROR).result)
else:
SystemUser.objects.filter(userId=userId).update(password=new_encrypt_password)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class AuthRoleView(APIView):
def get(self, request, userId: str):
"""【系统用户】查询角色映射关系"""
# 查询用户信息
userData = SystemUser.objects.get(userId=userId)
# 查询用户角色映射关系
userRoleList = SystemUserRole.objects.filter(userId=userId)
# 查询角色信息
roleIds = [item.roleId for item in userRoleList]
roleData = SystemRole.objects.filter(roleId__in=roleIds)
# 序列化
userData = SystemUserSerializer(instance=userData).data
roleData = SystemRoleSerializer(instance=roleData, many=True).data
# 组装返回数据
resData = dict(user=userData, roles=roleData)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=resData).result)
def put(self, request):
"""【系统用户】修改角色映射关系"""
userId = request.GET.get("userId")
roleIds = request.GET.get("roleIds")
roleIds = roleIds.split(",")
# 删除以前的角色人员关系,在增加新的关系
SystemUserRole.objects.filter(userId=userId).delete()
for roleId in roleIds:
SystemUserRole.objects.create(**dict(roleId=roleId, userId=userId))
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=None).result)
class MenuDetailView(APIView):
@permAuth("system:menu:query")
def get(self, request, menuId: str):
"""【系统用户】查询"""
menuData = SystemMenu.objects.get(menuId=menuId)
menuData = SystemMenuSerializer(instance=menuData).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=menuData).result)
@permAuth("system:menu:remove")
def delete(self, request, menuId: str):
"""【系统用户】删除"""
# 删除目录信息
SystemMenu.objects.filter(menuId=menuId).delete()
# 删除角色目录映射
SystemRoleMenu.objects.filter(menuId=menuId).delete()
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class MenuListView(APIView):
@permAuth("system:menu:list")
def get(self, request):
"""【系统目录】列表"""
menuName: str = request.GET.get('menuName')
status: str = request.GET.get('status')
q = Q()
q.connector = 'AND'
if menuName:
q.children.append(('menuName', menuName))
if status:
q.children.append(('status', status))
q.children.append(('visible', SystemDelEnum.p0.value))
# 查询数据列表
menuData = SystemMenu.objects.filter(q).order_by('orderNum')
menuData = SystemMenuSerializer(instance=menuData, many=True).data
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=menuData).result)
class MenuCreateView(APIView):
@permAuth("system:menu:add")
def post(self, request):
"""【系统目录】新增"""
data: dict = request.data
parentId = data.get("parentId")
menuName = data.get("menuName")
# 生成父级数据
data["menuId"] = Sf.generate()
menuExist = SystemMenu.objects.filter(parentId=parentId, menuName=menuName)
if menuExist:
return JsonResponse(ResultJson(ret=ResultCode.MENU_ERROR).result)
SystemMenu.objects.create(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=data).result)
@permAuth("system:menu:edit")
def put(self, request):
"""【系统目录】修改"""
data: dict = request.data
menuId = data.get('menuId')
SystemMenu.objects.filter(menuId=menuId).update(**data)
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS).result)
class MenuTreeSelectView(APIView):
"""【系统目录】树选择"""
@classmethod
def MenuFormat(cls, MenuData):
container = []
for item in MenuData:
deptItem = {"id": item.get("menuId"), "parentId": item.get("parentId"), "label": item.get("menuName"), }
container.append(deptItem)
return container
def get(self, request):
menuData = SystemMenu.objects.filter(status=SystemStatusEnum.p0.value)
menuData = SystemMenuSerializer(instance=menuData, many=True).data
# 组装前端所需要的数据结构
MenuList = self.MenuFormat(menuData)
# 组装成树的结构
TreeData = TreeBuilder(MenuList).build(parentKey="parentId", ownerKey="id", topParent="0")
TreeDataList = list(TreeData.values())
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=TreeDataList).result)
class MenuRoleTreeSelectView(APIView):
"""【系统目录】已经选择树选择器"""
def get(self, request, roleId: str):
res = Dict()
# 查询树的列表
TreeDataListResponse = MenuTreeSelectView().get(request)
TreeDataList = response2json(TreeDataListResponse).get("data", [])
# 查询选中数据的
res.menus = TreeDataList
roleMenuData = SystemRoleMenu.objects.filter(roleId=roleId)
res.checkedKeys = [item.menuId for item in roleMenuData]
return JsonResponse(ResultJson(ret=ResultCode.SUCCESS, data=res.to_dict()).result)