添加上级部门查看所有下级部门中的用户
							parent
							
								
									991b6a7d90
								
							
						
					
					
						commit
						906970f149
					
				| 
						 | 
				
			
			@ -11,6 +11,7 @@ from mongoengine.queryset import visitor
 | 
			
		|||
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
 | 
			
		||||
 | 
			
		||||
from ..permission.models import Dept
 | 
			
		||||
from ..utils.model_util import get_dept
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -147,18 +148,6 @@ class DataLevelPermissionsFilter(BaseFilterBackend):
 | 
			
		|||
            elif ele == '3':
 | 
			
		||||
                dept_list.append(user_dept_id)
 | 
			
		||||
            elif ele == '4':
 | 
			
		||||
                dept_list.extend(self.get_dept(user_dept_id, Dept.objects.all().values('id', 'parentId')))
 | 
			
		||||
                dept_list.append(user_dept_id)
 | 
			
		||||
                dept_list.extend(get_dept(user_dept_id,))
 | 
			
		||||
        return queryset.filter(dept_belong_id__in=list(set(dept_list)))
 | 
			
		||||
 | 
			
		||||
    def get_dept(self, id, dept_all_list, dept_list=[]):
 | 
			
		||||
        """
 | 
			
		||||
        获取部门的所有下级部门
 | 
			
		||||
        :param id:
 | 
			
		||||
        :return:
 | 
			
		||||
        """
 | 
			
		||||
        for ele in dept_all_list:
 | 
			
		||||
            if ele.get('parentId') == id:
 | 
			
		||||
                dept_list.append(ele.get('id'))
 | 
			
		||||
                self.get_dept(ele.get('id'), dept_all_list, dept_list)
 | 
			
		||||
        return dept_list
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
import django_filters
 | 
			
		||||
 | 
			
		||||
from ..permission.models import Menu, Dept, Post, Role, UserProfile
 | 
			
		||||
from ..utils.model_util import get_dept
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MenuFilter(django_filters.rest_framework.FilterSet):
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +54,10 @@ class UserProfileFilter(django_filters.rest_framework.FilterSet):
 | 
			
		|||
    """
 | 
			
		||||
    username = django_filters.CharFilter(lookup_expr='icontains')
 | 
			
		||||
    mobile = django_filters.CharFilter(lookup_expr='icontains')
 | 
			
		||||
    deptId = django_filters.CharFilter(field_name='dept__id')
 | 
			
		||||
    deptId = django_filters.CharFilter(method='filter_deptId')
 | 
			
		||||
 | 
			
		||||
    def filter_deptId(self, queryset, name, value):
 | 
			
		||||
        return queryset.filter(dept__id__in=get_dept(dept_id=value))
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = UserProfile
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,8 @@ from django.apps.config import AppConfig
 | 
			
		|||
from django.db.models.fields import Field
 | 
			
		||||
from rest_framework.renderers import JSONRenderer
 | 
			
		||||
 | 
			
		||||
from ..permission.models import Dept
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_primary_field(model, many=False):
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			@ -63,6 +65,25 @@ def get_model(app_label: str = None, model_name: str = None, model_label: str =
 | 
			
		|||
    return app_conf.get_model(model_name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_dept(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.all().values('id', 'parentId')
 | 
			
		||||
    if dept_list is None:
 | 
			
		||||
        dept_list = [dept_id]
 | 
			
		||||
    for ele in dept_all_list:
 | 
			
		||||
        if ele.get('parentId') == int(dept_id):
 | 
			
		||||
            dept_list.append(ele.get('id'))
 | 
			
		||||
            get_dept(ele.get('id'), dept_all_list, dept_list)
 | 
			
		||||
    return list(set(dept_list))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ModelRelateUtils:
 | 
			
		||||
    """
 | 
			
		||||
    封装ORM模型的映射操作,例如
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue