소스 검색

report_push: 增加分享类型统计数据

Signed-off-by: binren <zhangbr@elab-plus.com>
binren 5 년 전
부모
커밋
112a8e2e93
1개의 변경된 파일95개의 추가작업 그리고 15개의 파일을 삭제
  1. 95 15
      report_push.py

+ 95 - 15
report_push.py

@@ -1,5 +1,6 @@
 from mysql_db import MysqlDB
 import datetime
+from itertools import groupby
 
 
 class ReportPush(object):
@@ -527,17 +528,33 @@ class ReportPush(object):
                 for index, x in enumerate(all_data_history):
                     if x[2] in house_ids:
                         result_data_3.append(x)
+
+            # 7: 单个项目小程序获客来源场景分析
+            for x in customer_channel_details_data:
+                if x[0] in house_ids:
+                    result_data_7.append(x)
+
+            # 8: 集团项目获客来源场景分析
+            if customer_type == 2:
+                for x in brand_customer_channel_details:
+                    if x[2] in house_ids or x[1] in brand_id_list:
+                        result_data_8.append(x)
+                pass
+            elif customer_type == 1:
+                for x in brand_customer_channel_details:
+                    if x[2] in house_ids:
+                        result_data_8.append(x)
+
+            # 6: 项目获客来源场景分析
             customer_data[1] = result_data_1
             customer_data[2] = result_data_2
             customer_data[3] = result_data_3
             customer_data[4] = result_data_4
             customer_data[5] = result_data_5
+            customer_data[6] = result_data_6
+            customer_data[7] = result_data_7
+            customer_data[8] = result_data_8
             result[name] = customer_data
-            # 7: 单个项目小程序获客来源场景分析
-
-            # 8: 集团项目获客来源场景分析
-
-            # 6: 项目获客来源场景分析
         return result
 
     def filter_by_brand_ids(self, data, brand_ids):
@@ -745,7 +762,7 @@ class ReportPush(object):
         '搜索': 7,
         '相册选取二维码': 8,
         '其他小程序': 9,
-        '': 10
+        '其他': 10
     }
 
     def customer_channel_details(self, time_range):
@@ -757,12 +774,42 @@ class ReportPush(object):
         params = []
         params.extend(time_range)
         customer_channel_details_data = self.db.select(self.sql_3_1, params)
+        result = []
+        for x in customer_channel_details_data:
+            ele = []
+            order = self.share_way.get(x[2])
+            if order:
+                ele.append(x[0])
+                ele.append(x[1])
+                ele.append(order)
+                ele.append(x[3])
+                result.append(ele)
+        result.sort(key=lambda obj: obj[0])
+        end_data = []
+        for key, data in groupby(result, key=lambda obj: obj[0]):
+            others_data = []
+            for ot in data:
+                others_data.append([x for x in ot])
+            lable_data = []
+            if len(others_data) > 0:
+                lable_data.append(others_data[0][0])
+                lable_data.append(others_data[0][1])
+                for i in range(1, 11):
+                    number = 0
+                    for od in others_data:
+                        if i == od[2]:
+                            number = od[3]
+                        else:
+                            pass
+                    lable_data.append(number)
+                pass
+            end_data.append(lable_data)
         # customer_channel_details_data数据结构
         # 	house_id, 项目id
         # 	house_name, 项目名称
         # 	label_wx, 分享类别
         # 	COUNT(a.id) as counts, 数量
-        return customer_channel_details_data
+        return end_data
 
     def brand_customer_channel_details(self, time_range):
         """
@@ -773,13 +820,44 @@ class ReportPush(object):
         params = [time_range[0], time_range[1], time_range[0], time_range[1]]
         brand_customer_channel_details_data = self.db.select(self.sql_3_2, params)
         # brand_customer_channel_details_data数据结构
-        #             brand_id, 集团id
-        #             x.brand_name, 集团名称
-        #             house_id, 项目id
-        #             house_name, 项目名称
-        #             label_wx,  分享类别
-        #             COUNT(1) 数量
-        return brand_customer_channel_details_data
+        #             0 brand_id, 集团id
+        #             1 x.brand_name, 集团名称
+        #             2 house_id, 项目id
+        #             3 house_name, 项目名称
+        #             4 label_wx,  分享类别
+        #             5 COUNT(1) 数量
+        result = []
+        for x in brand_customer_channel_details_data:
+            ele = []
+            order = self.share_way.get(x[4])
+            if order:
+                ele.append(x[0])
+                ele.append(x[1])
+                ele.append(x[2])
+                ele.append(x[3])
+                ele.append(order)
+                ele.append(x[5])
+                result.append(ele)
+        result.sort(key=lambda obj: obj[0])
+        end_data = []
+        for key, data in groupby(result, key=lambda obj: obj[2]):
+            others_data = []
+            for ot in data:
+                others_data.append([x for x in ot])
+            lable_data = []
+            if len(others_data) > 0:
+                lable_data.extend(others_data[0][1: 5])
+                for i in range(1, 11):
+                    number = 0
+                    for od in others_data:
+                        if i == od[2]:
+                            number = od[3]
+                        else:
+                            pass
+                    lable_data.append(number)
+                pass
+            end_data.append(lable_data)
+        return end_data
 
     def push_log_recording(self, push_message):
         """
@@ -843,4 +921,6 @@ class ReportPush(object):
 
 
 if __name__ == '__main__':
-    rp = ReportPush('linshi')
+    # rp = ReportPush('linshi')
+    for i in range(1, 11):
+        print(i)