功能变化: 部门懒加载优化

pull/84/head
猿小天 2023-01-01 17:20:51 +08:00
parent b6c12332a1
commit 3b5435cab7
2 changed files with 34 additions and 1 deletions

View File

@ -120,6 +120,25 @@ class Dept(CoreModel):
help_text="上级部门", help_text="上级部门",
) )
@classmethod
def recursion_dept_info(cls, dept_id: int, dept_all_list=None, dept_list=None):
"""
递归获取部门的所有下级部门
:param dept_id: 需要获取的id
:param dept_all_list: 所有列表
:param dept_list: 递归list
:return:
"""
if not dept_all_list:
dept_all_list = Dept.objects.values("id", "parent")
if dept_list is None:
dept_list = [dept_id]
for ele in dept_all_list:
if ele.get("parent") == dept_id:
dept_list.append(ele.get("id"))
cls.recursion_dept_info(ele.get("id"), dept_all_list, dept_list)
return list(set(dept_list))
class Meta: class Meta:
db_table = table_prefix + "system_dept" db_table = table_prefix + "system_dept"
verbose_name = "部门表" verbose_name = "部门表"

View File

@ -163,7 +163,21 @@ class DeptViewSet(CustomModelViewSet):
else: else:
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent') queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
else: else:
data_range = request.user.role.values_list('data_range', flat=True)
user_dept_id = request.user.dept.id
dept_list = []
data_range_list = list(set(data_range))
for item in data_range_list:
if item in [0,2]:
dept_list = [user_dept_id]
elif item == 1:
dept_list = Dept.recursion_dept_info(dept_id=user_dept_id)
elif item == 3:
dept_list = Dept.objects.values_list('id',flat=True)
elif item == 4:
dept_list = request.user.role.values_list('dept',flat=True) dept_list = request.user.role.values_list('dept',flat=True)
else:
dept_list = []
if parent: if parent:
queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent') queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent')
else: else: