فهرست منبع

Merge branch 'master' of http://git.zzliaoyuan.com:4000/wushaodong/decorate

lijiangwei 4 سال پیش
والد
کامیت
93811d6f12
3فایلهای تغییر یافته به همراه83 افزوده شده و 1 حذف شده
  1. 1 0
      apps/account/models.py
  2. 1 0
      apps/account/urls.py
  3. 81 1
      apps/account/views.py

+ 1 - 0
apps/account/models.py

@@ -136,6 +136,7 @@ class User(AbstractBaseUser, PermissionsMixin):
         self.save()
         return self
 
+
 class ManageStoreUser(models.Model):
 
     store = models.ForeignKey(Store, verbose_name=u"门店", null=True, blank=True, on_delete=models.PROTECT)

+ 1 - 0
apps/account/urls.py

@@ -9,6 +9,7 @@ urlpatterns = [
     url(r'^permission/dict/$', PermissionDictView.as_view()), # 人员管理,编辑,权限组
     url(r'^permission/all/$', PermissionsListView.as_view()), # 权限管理,编辑,加载所有权限
     url(r'^store/tree/$', StoreTreeView.as_view()), # 人员管理,管理门店,加载门店
+    url(r'^employee_tree/$', EmployeeTreeView.as_view()) #人员列表
 ]
 
 router = SimpleRouter()

+ 81 - 1
apps/account/views.py

@@ -20,7 +20,8 @@ from apps.account.models import ManageStoreUser
 from apps.log.models import BizLog
 from apps.account.consts import PermissionMenu
 from collections import OrderedDict
-from apps.agent.models import Store, Agent
+from apps.agent.models import Store, Agent,GeneralAgent
+from utils.exceptions import CustomError
 
 
 class LoginView(ObtainJSONWebToken):
@@ -241,3 +242,82 @@ class StoreTreeView(APIView):
             store_data.append(item)
 
         return response_ok(store_data)
+
+
+class EmployeeTreeView(APIView):
+    permission_classes = [isLogin, ]
+
+    def get(self, request):
+        id = request.GET.get('id')
+        employee_data = []
+
+        # 查询当前用户的代理商账号和门店人员账号
+        employees = User.objects.filter()
+        general_agents = GeneralAgent.objects.filter()
+        agents = Agent.objects.filter()
+        stores = Store.objects.filter()
+        manage_user = ManageStoreUser.objects.filter(manage_user_id=request.user.id)
+        if not request.user.is_superuser:
+            general_agents = general_agents.filter(id=request.user.general_agent_id)
+            if request.user.agent:
+                general_agents = None
+                agents = Agent.objects.filter(id=request.user.agent_id,
+                                              general_agent_id=request.user.general_agent_id)
+                if request.user.store:
+                    if not manage_user:
+                        raise CustomError(u'无人员查看权限!')
+                    stores = Store.objects.filter(id=request.user.store_id, enable=True)
+        if general_agents:
+            general_agents = general_agents.values('id', 'name')
+            for general_agent in general_agents:
+                general_agent_item = {
+                    'title': general_agent['name'],
+                    'id': general_agent['id'],
+                    'field': 'general_agent',
+                    'children': [],
+                }
+                general_agent_user = employees.filter(general_agent_id=general_agent['id'], agent__isnull=True).first()
+                if general_agent_user:
+                    general_agent_user_item = {
+                        'title': general_agent_user.name,
+                        'id': general_agent_user.id,
+                        'field': 'general_agent_user',
+                    }
+                    general_agent_item['children'].append(general_agent_user_item)
+                employee_data.append(general_agent_item)
+        agents = agents.values('id', 'name')
+        for agent in agents:
+            agent_item = {
+                'title': agent['name'],
+                'id': agent['id'],
+                'field': 'agent',
+                'children': [],
+            }
+            agent_user = employees.filter(agent_id=agent['id'], store__isnull=True).first()
+            if agent_user and not request.user.store:
+                agent_user_item = {
+                    'title': agent_user.name,
+                    'id': agent_user.id,
+                    'field': 'agent_user',
+                }
+                agent_item['children'].append(agent_user_item)
+            stores = stores.values('id', 'name')
+            for store in stores:
+                store_item = {
+                    'title': store['name'],
+                    'id': store['id'],
+                    'field': 'store_{}'.format(store['id']),
+                    'children': [],
+                }
+                agent_item['children'].append(store_item)
+                store_users = employees.filter(store_id=store['id'])
+                for store_user in store_users:
+                    store_user_item = {
+                        'title': store_user.name,
+                        'id': store_user.id,
+                        'field': 'store_user_{}'.format(store_user.id),
+                    }
+                    store_item['children'].append(store_user_item)
+            employee_data.append(agent_item)
+
+        return response_ok(employee_data)