|
@@ -86,6 +86,8 @@ class AgentCustomerView(View):
|
|
|
return self.batch_rebind_customer_packages(userID, request_dict, response)
|
|
|
elif operation == 'getAgentServicePackageList':
|
|
|
return self.get_agent_service_package_list(response)
|
|
|
+ elif operation == 'getAgentSettleOrders':
|
|
|
+ return self.get_agent_settle_order(userID, request_dict, response)
|
|
|
elif operation == 'getDataStatistics':
|
|
|
return self.get_data_statistics(userID, response)
|
|
|
else:
|
|
@@ -444,6 +446,91 @@ class AgentCustomerView(View):
|
|
|
# 出错时返回错误信息
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
+ def get_agent_settle_order(self, userID, request_dict, response):
|
|
|
+ """
|
|
|
+ 查询结算明细
|
|
|
+ @param userID: userID
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param request_dict status: 结算状态
|
|
|
+ @param request_dict time: 年-季度 2023-1
|
|
|
+ @param response: 响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ agent_customer_info = AgentCustomerInfo.objects.filter(user_id=userID).first()
|
|
|
+ if not agent_customer_info:
|
|
|
+ return response.json(104, 'Agent customer not found')
|
|
|
+
|
|
|
+ ac_id = agent_customer_info.id
|
|
|
+
|
|
|
+ status = request_dict.get('status', None)
|
|
|
+ time_str = request_dict.get('time', None)
|
|
|
+ startTime = int(request_dict.get('start_time', 1))
|
|
|
+ endTime = int(request_dict.get('end_time', 0))
|
|
|
+
|
|
|
+
|
|
|
+ page = int(request_dict.get('page', 1)) # 默认为第一页
|
|
|
+ page_size = int(request_dict.get('page_size', 10)) # 默认每页10条记录
|
|
|
+ try:
|
|
|
+ agent_device_orders_qs = AgentDeviceOrder.objects.filter(ac_id=ac_id, is_del=0)
|
|
|
+
|
|
|
+ if time_str:
|
|
|
+ year, quarter = map(int, time_str.split('-'))
|
|
|
+ start_month = 3 * (quarter - 1) + 1
|
|
|
+ end_month = start_month + 2
|
|
|
+
|
|
|
+ start_date = datetime(year, start_month, 1)
|
|
|
+ end_date = datetime(year + 1, 1, 1) if end_month == 12 else datetime(year, end_month + 1, 1)
|
|
|
+
|
|
|
+ start_time = int(start_date.timestamp())
|
|
|
+ end_time = int(end_date.timestamp()) - 1
|
|
|
+ agent_device_orders_qs = agent_device_orders_qs.filter(created_time__gte=start_time,
|
|
|
+ created_time__lte=end_time)
|
|
|
+ if status:
|
|
|
+ agent_device_orders_qs = agent_device_orders_qs.filter(status=status)
|
|
|
+
|
|
|
+ if startTime < endTime:
|
|
|
+ agent_device_orders_qs = agent_device_orders_qs.filter(created_time__gte=startTime,
|
|
|
+ created_time__lte=endTime)
|
|
|
+
|
|
|
+ # 计算利润总额和订单总数
|
|
|
+ total_profit = agent_device_orders_qs.aggregate(Sum('profit'))['profit__sum'] or 0
|
|
|
+
|
|
|
+ # 应用分页
|
|
|
+ agent_device_orders_qs = agent_device_orders_qs.order_by('-created_time')
|
|
|
+ paginator = Paginator(agent_device_orders_qs, page_size)
|
|
|
+ current_page = paginator.get_page(page)
|
|
|
+
|
|
|
+ orders = []
|
|
|
+ for order in current_page:
|
|
|
+ csp = AgentCloudServicePackage.objects.filter(id=order.csp_id).first()
|
|
|
+ service_name = csp.service_name if csp else order.csp_id
|
|
|
+
|
|
|
+ orders.append({
|
|
|
+ 'id': order.id,
|
|
|
+ 'serial_number': order.serial_number,
|
|
|
+ 'status': order.status,
|
|
|
+ 'service_name': service_name,
|
|
|
+ 'profit_amount': order.profit_amount,
|
|
|
+ 'profit': order.profit,
|
|
|
+ 'settlement_time': order.settlement_time,
|
|
|
+ 'remark': order.remark,
|
|
|
+ 'created_time':order.created_time
|
|
|
+ })
|
|
|
+
|
|
|
+ response_data = {
|
|
|
+ 'list': orders,
|
|
|
+ 'total_profit': total_profit,
|
|
|
+ 'total': paginator.count,
|
|
|
+ 'page': current_page.number,
|
|
|
+ 'page_size': page_size,
|
|
|
+ 'num_pages': paginator.num_pages,
|
|
|
+ }
|
|
|
+
|
|
|
+ return response.json(0, response_data)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
def get_data_statistics(self, userID, response):
|
|
|
"""
|
|
|
首页总览
|