|
@@ -320,3 +320,98 @@ class EmployeeTreeView(APIView):
|
|
|
employee_data.append(agent_item)
|
|
|
|
|
|
return response_ok(employee_data)
|
|
|
+
|
|
|
+class EmployeeTreeView2(APIView):
|
|
|
+ permission_classes = [isLogin, ]
|
|
|
+
|
|
|
+ def get(self, request):
|
|
|
+ # 查询当前用户管理门店树形结构
|
|
|
+ agent_dict = {}
|
|
|
+ general_agent_dict = {}
|
|
|
+ data = []
|
|
|
+
|
|
|
+ exist_agents = []
|
|
|
+ manage_storess = request.user.get_manager_range()
|
|
|
+ for store_id in manage_storess:
|
|
|
+ store = Store.objects.filter(id=store_id, enable=True).values('name','agent_id')
|
|
|
+ if not store:
|
|
|
+ continue
|
|
|
+ store_item = {
|
|
|
+ 'title': store[0]['name'],
|
|
|
+ 'id': store_id,
|
|
|
+ 'field': 'store',
|
|
|
+ 'children': [],
|
|
|
+ }
|
|
|
+ employees = User.objects.filter(store_id=store_id, is_active=True).values('id', 'name')
|
|
|
+ for employee in employees:
|
|
|
+ user_item = {
|
|
|
+ 'title': employee['name'],
|
|
|
+ 'id': employee['id'],
|
|
|
+ 'field': 'user',
|
|
|
+ }
|
|
|
+ store_item['children'].append(user_item)
|
|
|
+
|
|
|
+ try:
|
|
|
+ agent_dict[store[0]['agent_id']].append(store_item)
|
|
|
+ except:
|
|
|
+ agent_dict[store[0]['agent_id']] = [store_item]
|
|
|
+
|
|
|
+ exist_agents.append(store[0]['agent_id'])
|
|
|
+ ######## 代理
|
|
|
+ exist_agents = list(set(exist_agents))
|
|
|
+ exist_general_agents = []
|
|
|
+ agents = Agent.objects.filter(id__in=exist_agents).values('id', 'name', 'general_agent_id')
|
|
|
+ for agent in agents:
|
|
|
+ agent_item = {
|
|
|
+ 'title': agent['name'],
|
|
|
+ 'id': agent['id'],
|
|
|
+ 'field': 'agent',
|
|
|
+ 'children': agent_dict[agent['id']] ,
|
|
|
+ }
|
|
|
+ # 当前用户有代理商没有门店,则是代理商账号。此时加载和代理商平行的账号
|
|
|
+ if not request.user.store and request.user.agent:
|
|
|
+ agent_users = User.objects.filter(agent_id=agent['id'], is_active=True, store__isnull=True)
|
|
|
+ for agent_user in agent_users:
|
|
|
+ if agent_user.has_perm('customer.inner_review'):
|
|
|
+ agent_user_item = {
|
|
|
+ 'title': agent_user.name,
|
|
|
+ 'id': agent_user.id,
|
|
|
+ 'field': 'user',
|
|
|
+ }
|
|
|
+ agent_item['children'].insert(0,agent_user_item)
|
|
|
+
|
|
|
+ try:
|
|
|
+ general_agent_dict[agent['general_agent_id']].append(agent_item)
|
|
|
+ except:
|
|
|
+ general_agent_dict[agent['general_agent_id']] = [agent_item]
|
|
|
+
|
|
|
+ exist_general_agents.append(agent['general_agent_id'])
|
|
|
+ ###### 总代理
|
|
|
+ exist_general_agents = list(set(exist_general_agents))
|
|
|
+ general_agents = GeneralAgent.objects.filter(id__in=exist_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_dict[general_agent['id']],
|
|
|
+ }
|
|
|
+ # 当前用户没有代理商,则是总代理账号。此时加载和总代理平行的账号
|
|
|
+ if not request.user.agent:
|
|
|
+ general_agent_users = User.objects.filter(general_agent_id=general_agent['id'], agent__isnull=True, store__isnull=True, is_active=True)
|
|
|
+ for general_agent_user in general_agent_users:
|
|
|
+ if general_agent_user.has_perm('customer.inner_review'):
|
|
|
+ general_agent_user_item = {
|
|
|
+ 'title': general_agent_user.name,
|
|
|
+ 'id': general_agent_user.id,
|
|
|
+ 'field': 'user',
|
|
|
+ }
|
|
|
+ general_agent_item['children'].insert(0, general_agent_user_item)
|
|
|
+ data.append(general_agent_item)
|
|
|
+ # 总代理只有一级,去掉总代理
|
|
|
+ if len(data) == 1:
|
|
|
+ data = data[0]['children']
|
|
|
+ # 代理只有一级,去掉代理
|
|
|
+ if len(data) == 1:
|
|
|
+ data = data[0]['children']
|
|
|
+ return response_ok(data)
|