فهرست منبع

数据系统订单汇总、首页销售额

peng 2 سال پیش
والد
کامیت
0c1112f7b4
3فایلهای تغییر یافته به همراه100 افزوده شده و 31 حذف شده
  1. 11 3
      AdminController/dataSystemManagement/HomeDataController.py
  2. 88 27
      Controller/Cron/CronTaskController.py
  3. 1 1
      Model/models.py

+ 11 - 3
AdminController/dataSystemManagement/HomeDataController.py

@@ -192,9 +192,16 @@ class HomeDataView(View):
             time_list = CommonService.cutting_time(start_time, end_time, time_unit)
             order_list = []
             for item in time_list:
-                total = order_qs.filter(time__gte=item[0], time__lt=item[1]).aggregate(total=Sum('total'))['total']
+                temp_order_qs = order_qs.filter(time__gte=item[0], time__lt=item[1])
+                cny_total = 0
+                usd_total = 0
+                for each in temp_order_qs:
+                    temp_total = eval(each['total'])
+                    cny_total += temp_total.get('CNY', 0)
+                    usd_total += temp_total.get('USD', 0)
                 res = {
-                    'total': round(total, 2) if total else 0,
+                    'rmbTotal': cny_total,
+                    'usdTotal': usd_total,
                     'startTime': item[0],
                     'endTime': item[1]
                 }
@@ -354,7 +361,8 @@ class HomeDataView(View):
                         flag = 0
                         for each in order_list:
                             if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
-                                each['total'] += item['total']
+                                each['cnyTotal'] = round(each['cnyTotal'] + item['cnyTotal'], 2)
+                                each['usdTotal'] = round(each['usdTotal'] + item['usdTotal'], 2)
                                 flag = 1
                                 break
                         if flag == 0:

+ 88 - 27
Controller/Cron/CronTaskController.py

@@ -462,7 +462,7 @@ class CronCollectDataView(View):
             order_qs = Order_Model.objects.filter(addTime__gte=start_time, addTime__lt=end_time,
                                                   status=1).values('UID', 'order_type',
                                                                    'store_meal_name', 'price',
-                                                                   'addTime').order_by(
+                                                                   'addTime', 'currency').order_by(
                 'addTime')
             uid_list = []
             all_order_qs = Order_Model.objects.filter(addTime__lt=start_time, status=1).values('UID')
@@ -484,6 +484,7 @@ class CronCollectDataView(View):
                 for item in order_qs:
                     is_pay = 0
                     price = float(item['price'])
+                    currency = item['currency']
                     uid_set_qs = UidSetModel.objects.filter(uid=item['UID']).values('tb_country')
                     country_id = uid_set_qs[0]['tb_country'] if uid_set_qs.exists() else 0
                     country_name = country_dict.get(country_id, '未知国家')
@@ -514,62 +515,112 @@ class CronCollectDataView(View):
                         if pay_order_summary_qs.exists():
                             pay_order_summary = pay_order_summary_qs.first()
                             pay_order_summary.count += 1
-                            pay_order_summary.total = str(round(float(pay_order_summary.total) + price, 2))
+                            temp_total = eval(pay_order_summary.total)
+                            if currency not in temp_total:
+                                temp_total[currency] = price
+                            else:
+                                temp_total[currency] = round(temp_total[currency] + price, 2)
+                            pay_order_summary.total = temp_total
                             country_temp_dict = eval(pay_order_summary.country)
                             if country_name in country_temp_dict:
-                                country_temp_dict[country_name] += 1
+                                country_temp_dict[country_name]['数量'] += 1
+                                if currency not in country_temp_dict[country_name]:
+                                    country_temp_dict[country_name][currency] = price
+                                else:
+                                    country_temp_dict[country_name][currency] = round(
+                                        country_temp_dict[country_name][currency] + price, 2)
                             else:
-                                country_temp_dict[country_name] = 1
+                                country_temp_dict[country_name] = {'数量': 1, currency: price}
                             pay_order_summary.country = country_temp_dict
                             device_type_temp_dict = eval(pay_order_summary.device_type)
                             if device_type_name in device_type_temp_dict:
-                                device_type_temp_dict[device_type_name] += 1
+                                device_type_temp_dict[device_type_name]['数量'] += 1
+                                if currency not in device_type_temp_dict[device_type_name]:
+                                    device_type_temp_dict[device_type_name][currency] = price
+                                else:
+                                    device_type_temp_dict[device_type_name][currency] = round(
+                                        device_type_temp_dict[device_type_name][currency] + price, 2)
                             else:
-                                device_type_temp_dict[device_type_name] = 1
+                                device_type_temp_dict[device_type_name] = {'数量': 1, currency: price}
                             pay_order_summary.device_type = device_type_temp_dict
                             store_meal_temp_dict = eval(pay_order_summary.store_meal)
                             if store_meal_name in store_meal_temp_dict:
-                                store_meal_temp_dict[store_meal_name] += 1
+                                store_meal_temp_dict[store_meal_name]['数量'] += 1
+                                if currency not in store_meal_temp_dict[store_meal_name]:
+                                    store_meal_temp_dict[store_meal_name][currency] = price
+                                else:
+                                    store_meal_temp_dict[store_meal_name][currency] = round(
+                                        store_meal_temp_dict[store_meal_name][currency] + price, 2)
                             else:
-                                store_meal_temp_dict[store_meal_name] = 1
+                                store_meal_temp_dict[store_meal_name] = {'数量': 1, currency: price}
                             pay_order_summary.store_meal = store_meal_temp_dict
                             pay_order_summary.save()
                         else:
+                            final_total = {currency: price}
                             country_temp_dict = {
-                                country_name: 1
+                                country_name: {
+                                    '数量': 1,
+                                    currency: price
+                                }
                             }
                             device_type_temp_dict = {
-                                device_type_name: 1
+                                device_type_name: {
+                                    '数量': 1,
+                                    currency: price
+                                }
                             }
                             store_meal_temp_dict = {
-                                store_meal_name: 1
+                                store_meal_name: {
+                                    '数量': 1,
+                                    currency: price
+                                }
                             }
                             OrdersSummary.objects.create(time=add_time_stamp, count=1, query_type=query_type,
-                                                         service_type=order_type, total=price,
+                                                         service_type=order_type, total=final_total,
                                                          country=country_temp_dict,
                                                          device_type=device_type_temp_dict,
                                                          store_meal=store_meal_temp_dict)
                     if order_summary_qs.exists():
                         order_summary = order_summary_qs.first()
                         order_summary.count += 1
-                        order_summary.total = str(round(float(order_summary.total) + price, 2))
+                        temp_total = eval(order_summary.total)
+                        if currency not in temp_total:
+                            temp_total[currency] = price
+                        else:
+                            temp_total[currency] = round(temp_total[currency] + price, 2)
+                        order_summary.total = temp_total
                         country_temp_dict = eval(order_summary.country)
                         if country_name in country_temp_dict:
-                            country_temp_dict[country_name] += 1
+                            if is_pay == 0:
+                                country_temp_dict[country_name]['数量'] += 1
+                                if currency not in country_temp_dict[country_name]:
+                                    country_temp_dict[country_name][currency] = price
+                                else:
+                                    country_temp_dict[country_name][currency] = round(
+                                        country_temp_dict[country_name][currency] + price, 2)
+                            else:
+                                country_temp_dict[country_name] += 1
                         else:
-                            country_temp_dict[country_name] = 1
+                            if is_pay == 0:
+                                country_temp_dict[country_name] = {'数量': 1, currency: price}
+                            else:
+                                country_temp_dict[country_name] = 1
                         order_summary.country = country_temp_dict
                         device_type_temp_dict = eval(order_summary.device_type)
                         if device_type_name in device_type_temp_dict:
                             if is_pay == 0:
                                 device_type_temp_dict[device_type_name]['数量'] += 1
-                                device_type_temp_dict[device_type_name]['销售额'] = round(
-                                    device_type_temp_dict[device_type_name]['销售额'] + price, 2)
+                                if currency not in device_type_temp_dict[device_type_name]:
+                                    device_type_temp_dict[device_type_name][currency] = price
+                                else:
+
+                                    device_type_temp_dict[device_type_name][currency] = round(
+                                        device_type_temp_dict[device_type_name][currency] + price, 2)
                             else:
                                 device_type_temp_dict[device_type_name] += 1
                         else:
                             if is_pay == 0:
-                                device_type_temp_dict[device_type_name] = {'数量': 1, '销售额': price}
+                                device_type_temp_dict[device_type_name] = {'数量': 1, currency: price}
                             else:
                                 device_type_temp_dict[device_type_name] = 1
                         order_summary.device_type = device_type_temp_dict
@@ -577,32 +628,39 @@ class CronCollectDataView(View):
                         if store_meal_name in store_meal_temp_dict:
                             if is_pay == 0:
                                 store_meal_temp_dict[store_meal_name]['数量'] += 1
-                                store_meal_temp_dict[store_meal_name]['销售额'] = round(
-                                    store_meal_temp_dict[store_meal_name]['销售额'] + price, 2)
+                                if currency not in store_meal_temp_dict[store_meal_name]:
+                                    store_meal_temp_dict[store_meal_name][currency] = price
+                                else:
+                                    store_meal_temp_dict[store_meal_name][currency] = round(
+                                        store_meal_temp_dict[store_meal_name][currency] + price, 2)
                             else:
                                 store_meal_temp_dict[store_meal_name] += 1
                         else:
                             if is_pay == 0:
-                                store_meal_temp_dict[store_meal_name] = {'数量': 1, '销售额': price}
+                                store_meal_temp_dict[store_meal_name] = {'数量': 1, currency: price}
                             else:
                                 store_meal_temp_dict[store_meal_name] = 1
                         order_summary.store_meal = store_meal_temp_dict
                         order_summary.save()
                     else:
-                        country_temp_dict = {
-                            country_name: 1
-                        }
+                        final_total = {currency: price}
                         if is_pay == 0:
+                            country_temp_dict = {
+                                country_name: {
+                                    '数量': 1,
+                                    currency: price
+                                }
+                            }
                             device_type_temp_dict = {
                                 device_type_name: {
                                     '数量': 1,
-                                    '销售额': price
+                                    currency: price
                                 }
                             }
                             store_meal_temp_dict = {
                                 store_meal_name: {
                                     '数量': 1,
-                                    '销售额': price
+                                    currency: price
                                 }
                             }
                         else:
@@ -612,8 +670,11 @@ class CronCollectDataView(View):
                             store_meal_temp_dict = {
                                 store_meal_name: 1
                             }
+                            country_temp_dict = {
+                                country_name: 1
+                            }
                         OrdersSummary.objects.create(time=add_time_stamp, count=1, query_type=is_pay,
-                                                     service_type=order_type, total=price,
+                                                     service_type=order_type, total=final_total,
                                                      country=country_temp_dict,
                                                      device_type=device_type_temp_dict, store_meal=store_meal_temp_dict)
             return response.json(0)

+ 1 - 1
Model/models.py

@@ -2969,7 +2969,7 @@ class OrdersSummary(models.Model):
     query_type = models.SmallIntegerField(verbose_name='查询类型{0:付费订单,1:免费订单,2:首次付费订单,3:复购订单}', default=0)
     service_type = models.SmallIntegerField(verbose_name='增值服务类型{0:云存,1:AI,2:4G}', default=0)
     count = models.IntegerField(verbose_name='订单数量', default=0)
-    total = models.CharField(verbose_name='销售额', default='', max_length=16)
+    total = models.CharField(verbose_name='销售额', default='', max_length=255)
     country = models.TextField(verbose_name='所属国家', default='')
     device_type = models.TextField(verbose_name='设备类型信息', default='')
     store_meal = models.TextField(verbose_name='套餐信息', default='')