|
@@ -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)
|