|
@@ -69,15 +69,23 @@ class AgentCustomerView(View):
|
|
|
elif operation == 'getAgentServicePackage':
|
|
|
return self.get_agent_service_package(request_dict, response)
|
|
|
elif operation == 'addAgentServicePackage':
|
|
|
- return self.add_agent_service_package(request_dict, response)
|
|
|
- elif operation == 'getAgentInfo':
|
|
|
- return self.get_agent_info(userID, response)
|
|
|
return self.add_agent_service_package(userID, request_dict, response)
|
|
|
elif operation == 'updateAgentServicePackage':
|
|
|
return self.update_agent_service_package(userID, request_dict, response)
|
|
|
elif operation == 'delAgentServicePackage':
|
|
|
return self.del_agent_service_package(request_dict, response)
|
|
|
|
|
|
+ # 代理客户绑定套餐
|
|
|
+ elif operation == 'getCustomerList':
|
|
|
+ return self.get_customer_list(request_dict, response)
|
|
|
+ elif operation == 'getCustomerPackageList':
|
|
|
+ return self.get_cumstomer_package_list(request_dict, response)
|
|
|
+ elif operation == 'batchAddCustomerPackage':
|
|
|
+ return self.batch_add_customer_package(userID, request_dict, response)
|
|
|
+ elif operation == 'batchDeleteCustomerPackage':
|
|
|
+ return self.batch_del_cumstomer_package(request_dict, response)
|
|
|
+ elif operation == 'getAgentServicePackageList':
|
|
|
+ return self.get_agent_service_package_list(response)
|
|
|
else:
|
|
|
return response.json(444, 'operation')
|
|
|
|
|
@@ -298,3 +306,155 @@ class AgentCustomerView(View):
|
|
|
|
|
|
except Exception as e:
|
|
|
return response.json(500, {'error': str(e)})
|
|
|
+
|
|
|
+ def get_customer_list(self, request_dict, response):
|
|
|
+ """
|
|
|
+ 查询代理商信息,并进行分页处理
|
|
|
+ @param request_dict: 请求对象,用于接收分页参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ # 接收分页参数
|
|
|
+ page = int(request_dict.get('page', 1))
|
|
|
+ page_size = int(request_dict.get('page_size', 10))
|
|
|
+
|
|
|
+ # 查询AgentCustomerInfo表以获取代理商基本信息
|
|
|
+ agent_infos = AgentCustomerInfo.objects.filter(status=1).values(
|
|
|
+ 'id', 'user_id', 'company_name'
|
|
|
+ ).order_by('id')
|
|
|
+ try:
|
|
|
+ # 使用Paginator进行分页处理
|
|
|
+ paginator = Paginator(agent_infos, page_size)
|
|
|
+ # 获取请求页的数据
|
|
|
+ packages_page = paginator.page(page)
|
|
|
+ # 准备最终的代理商列表
|
|
|
+ agents_list = []
|
|
|
+ for agent_info in packages_page:
|
|
|
+ # 查询Device_User表获取用户信息
|
|
|
+ user_info = Device_User.objects.filter(userID=agent_info['user_id']).values('phone',
|
|
|
+ 'userEmail').first()
|
|
|
+ # 查询AgentCustomerCard表获取卡信息
|
|
|
+ card_info = AgentCustomerCard.objects.filter(ac_id=agent_info['id']).values('name', 'card_no',
|
|
|
+ 'card_address').first()
|
|
|
+
|
|
|
+ # 组合信息
|
|
|
+ agent_record = {
|
|
|
+ 'id': agent_info['id'],
|
|
|
+ 'company_name': agent_info['company_name'],
|
|
|
+ 'user_id': agent_info['user_id'],
|
|
|
+ 'phone': user_info.get('phone') if user_info else None,
|
|
|
+ 'userEmail': user_info.get('userEmail') if user_info else None,
|
|
|
+ 'card_name': card_info.get('name') if card_info else None,
|
|
|
+ 'card_no': card_info.get('card_no') if card_info else None,
|
|
|
+ 'card_address': card_info.get('card_address') if card_info else None,
|
|
|
+ }
|
|
|
+ agents_list.append(agent_record)
|
|
|
+ return response.json(0, {'page': page, 'page_size': page_size, 'total': paginator.count,
|
|
|
+ 'num_pages': paginator.num_pages, 'list': agents_list})
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ def get_cumstomer_package_list(self, request_dict, response):
|
|
|
+ """
|
|
|
+ 查询代理商服务套餐列表
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ ac_id = request_dict.get('id', None)
|
|
|
+ try:
|
|
|
+ if ac_id is None:
|
|
|
+ return response.json(444, 'Missing ac_id')
|
|
|
+ # ac_id查询AgentCustomerPackage来找到关联的云服务套餐ID(cs_id)
|
|
|
+ package_ids = AgentCustomerPackage.objects.filter(ac_id=ac_id).values_list('cs_id', flat=True)
|
|
|
+ # cs_id查询AgentCloudServicePackage获取服务套餐详情。
|
|
|
+ service_packages = AgentCloudServicePackage.objects.filter(id__in=package_ids, status=1).values()
|
|
|
+ service_packages_list = list(service_packages)
|
|
|
+ return response.json(0, {'service_packages': service_packages_list})
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ def batch_add_customer_package(self, userID, request_dict, response):
|
|
|
+ """
|
|
|
+ 代理商批量绑定服务套餐
|
|
|
+ @param userID: 操作用户的ID
|
|
|
+ @param request_dict: 请求参数,包含代理商ID和服务套餐ID列表
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ ac_id = request_dict.get('ac_id', None) # 代理客户ID
|
|
|
+ cs_ids = json.loads(request_dict.get('cs_ids', '[]')) # 服务套餐ID列表
|
|
|
+
|
|
|
+ # 校验输入
|
|
|
+ if not ac_id:
|
|
|
+ return response.json(444, 'Missing agent customer ID.')
|
|
|
+ try:
|
|
|
+ # 查询该代理客户已经绑定的服务套餐ID
|
|
|
+ existing_cs_ids = AgentCustomerPackage.objects.filter(ac_id=ac_id).values_list('cs_id', flat=True)
|
|
|
+ # 确定尚未绑定的服务套餐ID
|
|
|
+ new_cs_ids = [cs_id for cs_id in cs_ids if cs_id not in existing_cs_ids]
|
|
|
+ if not new_cs_ids:
|
|
|
+ return response.json(444)
|
|
|
+ # 过滤出存在且状态为有效的套餐ID
|
|
|
+ valid_new_cs_ids = AgentCloudServicePackage.objects.filter(id__in=new_cs_ids, status=1).values_list('id',
|
|
|
+ flat=True)
|
|
|
+ # 准备批量创建的数据
|
|
|
+ packages_to_bind = [
|
|
|
+ AgentCustomerPackage(
|
|
|
+ ac_id=ac_id,
|
|
|
+ cs_id=cs_id,
|
|
|
+ created_by=userID,
|
|
|
+ updated_by=userID,
|
|
|
+ created_time=int(time.time()),
|
|
|
+ updated_time=int(time.time())
|
|
|
+ )
|
|
|
+ for cs_id in valid_new_cs_ids
|
|
|
+ ]
|
|
|
+
|
|
|
+ # 批量创建绑定关系
|
|
|
+ AgentCustomerPackage.objects.bulk_create(packages_to_bind)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ def batch_del_cumstomer_package(self, request_dict, response):
|
|
|
+ """
|
|
|
+ 代理商解绑服务套餐
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param request_dict ac_id: 代理客户id
|
|
|
+ @param request_dict cs_ids: 代理套餐id表
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ ac_id = request_dict.get('ac_id', None)
|
|
|
+ cs_ids = json.loads(request_dict.get('cs_id', '[]'))
|
|
|
+ if ac_id is None or not cs_ids:
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ AgentCustomerPackage.objects.filter(ac_id=ac_id, cs_id__in=cs_ids).delete()
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ def get_agent_service_package_list(self, response):
|
|
|
+ """
|
|
|
+ 查询云服务套餐列表 id + service_name
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ # 查询所有有效的代理云服务套餐
|
|
|
+ all_packages = AgentCloudServicePackage.objects.filter(status=1).order_by('-created_time').values('id',
|
|
|
+ 'service_name')
|
|
|
+ # 转换查询集为列表形式
|
|
|
+ packages_list = list(all_packages)
|
|
|
+ # 返回数据
|
|
|
+ return response.json(0, {'packages': packages_list})
|
|
|
+ except Exception as e:
|
|
|
+ # 出错时返回错误信息
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|