| 
															
																@@ -1,5 +1,6 @@ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 from mysql_db import MysqlDB 
															 | 
															
															 | 
															
																 from mysql_db import MysqlDB 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import datetime 
															 | 
															
															 | 
															
																 import datetime 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+from itertools import groupby 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 class ReportPush(object): 
															 | 
															
															 | 
															
																 class ReportPush(object): 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -527,17 +528,33 @@ class ReportPush(object): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 for index, x in enumerate(all_data_history): 
															 | 
															
															 | 
															
																                 for index, x in enumerate(all_data_history): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     if x[2] in house_ids: 
															 | 
															
															 | 
															
																                     if x[2] in house_ids: 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         result_data_3.append(x) 
															 | 
															
															 | 
															
																                         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[1] = result_data_1 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             customer_data[2] = result_data_2 
															 | 
															
															 | 
															
																             customer_data[2] = result_data_2 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             customer_data[3] = result_data_3 
															 | 
															
															 | 
															
																             customer_data[3] = result_data_3 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             customer_data[4] = result_data_4 
															 | 
															
															 | 
															
																             customer_data[4] = result_data_4 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             customer_data[5] = result_data_5 
															 | 
															
															 | 
															
																             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 
															 | 
															
															 | 
															
																             result[name] = customer_data 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            # 7: 单个项目小程序获客来源场景分析 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																- 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            # 8: 集团项目获客来源场景分析 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																- 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            # 6: 项目获客来源场景分析 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         return result 
															 | 
															
															 | 
															
																         return result 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																     def filter_by_brand_ids(self, data, brand_ids): 
															 | 
															
															 | 
															
																     def filter_by_brand_ids(self, data, brand_ids): 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -745,7 +762,7 @@ class ReportPush(object): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         '搜索': 7, 
															 | 
															
															 | 
															
																         '搜索': 7, 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         '相册选取二维码': 8, 
															 | 
															
															 | 
															
																         '相册选取二维码': 8, 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         '其他小程序': 9, 
															 | 
															
															 | 
															
																         '其他小程序': 9, 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        '': 10 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        '其他': 10 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     } 
															 | 
															
															 | 
															
																     } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																     def customer_channel_details(self, time_range): 
															 | 
															
															 | 
															
																     def customer_channel_details(self, time_range): 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -757,12 +774,42 @@ class ReportPush(object): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         params = [] 
															 | 
															
															 | 
															
																         params = [] 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         params.extend(time_range) 
															 | 
															
															 | 
															
																         params.extend(time_range) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         customer_channel_details_data = self.db.select(self.sql_3_1, params) 
															 | 
															
															 | 
															
																         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数据结构 
															 | 
															
															 | 
															
																         # customer_channel_details_data数据结构 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         # 	house_id, 项目id 
															 | 
															
															 | 
															
																         # 	house_id, 项目id 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         # 	house_name, 项目名称 
															 | 
															
															 | 
															
																         # 	house_name, 项目名称 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         # 	label_wx, 分享类别 
															 | 
															
															 | 
															
																         # 	label_wx, 分享类别 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         # 	COUNT(a.id) as counts, 数量 
															 | 
															
															 | 
															
																         # 	COUNT(a.id) as counts, 数量 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        return customer_channel_details_data 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        return end_data 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																     def brand_customer_channel_details(self, time_range): 
															 | 
															
															 | 
															
																     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]] 
															 | 
															
															 | 
															
																         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 = self.db.select(self.sql_3_2, params) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         # brand_customer_channel_details_data数据结构 
															 | 
															
															 | 
															
																         # 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): 
															 | 
															
															 | 
															
																     def push_log_recording(self, push_message): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         """ 
															 | 
															
															 | 
															
																         """ 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -843,4 +921,6 @@ class ReportPush(object): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 if __name__ == '__main__': 
															 | 
															
															 | 
															
																 if __name__ == '__main__': 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-    rp = ReportPush('linshi') 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    # rp = ReportPush('linshi') 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    for i in range(1, 11): 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        print(i) 
															 |