Browse Source

mvp: 报表推送服务开发

Signed-off-by: Binren Zhnag <zhangbr@elab-plus.com>
Binren Zhnag 5 years ago
parent
commit
196369039c
2 changed files with 734 additions and 80 deletions
  1. 12 4
      flask_app.py
  2. 722 76
      report_push.py

+ 12 - 4
flask_app.py

@@ -5,10 +5,11 @@ from test_info import TestInfo
 from tongce import TongCe
 from apscheduler_elab import Config
 from flask_apscheduler import APScheduler
+from report_push import ReportPush
 
 
 app = Flask(__name__)
-app.config.from_object(Config())
+# app.config.from_object(Config())
 
 
 @app.route('/score', methods=['GET', 'POST'])
@@ -212,10 +213,17 @@ def update_other_city():
     return json.dumps(response, ensure_ascii=False)
 
 
+@app.route('/report_test', methods=['GET', 'POST'])
+def report_test():
+    reprt_push = ReportPush('bi_report')
+    result = reprt_push.report_data_query(2)
+    return json.dumps(result, ensure_ascii=False)
+
+
 if __name__ == '__main__':
-    scheduler = APScheduler()
-    scheduler.init_app(app)
-    scheduler.start()
+    # scheduler = APScheduler()
+    # scheduler.init_app(app)
+    # scheduler.start()
     app.run(
         host='0.0.0.0',
         port=5001

+ 722 - 76
report_push.py

@@ -1,3 +1,5 @@
+from mysql_db import MysqlDB
+import datetime
 
 
 class ReportPush(object):
@@ -6,107 +8,363 @@ class ReportPush(object):
     """
     pass
 
-    # 数据一,周数据概览
-    sql_1 = """
-        待定
+    # 1:总浏览量
+    #
+    #   集团部分+项目部分!!!
+
+    #  ----项目PV--权限项目范围内,求和
+    # 参数:时间区间 和 项目列表
+    sql_1_1 = """
+            SELECT SUM(pv) AS pv1 FROM a_idfa_behavior_sum
+            WHERE `report_d` >= %s and report_d < %s AND house_id IN %s
     """
 
-    #  1.默认值/001_大麦/项目排行榜/小程序排行榜TOP_N
-    sql_2_1 = """
+    # ----集团PV--权限项目范围内,求和
+    # 参数:数据区间和项目列表
+    sql_1_2 = """
+        SELECT SUM(pv) AS pav2 FROM a_behavior_brand_mini_day
+        WHERE report_d >= %s and report_d < %s AND house_id IN %s
+    """
+    # 2:总浏览人数
+    #
+    # 参数,数据区间, 项目列表
+    sql_1_3 = """
+            SELECT
+                count(
+                    DISTINCT IFNULL(mobile, user_id)
+                ) as people
+            FROM
+                (
+                    SELECT
+                        A.user_id,
+                        B.mobile
+                    FROM
+                        a_idfa_behavior_sum A
+                    LEFT JOIN d_user B ON A.user_id = B.user_id
+                    WHERE
+                        A.report_d >= %s and A.report_d < %s
+                    AND A.house_id IN %s
+                    UNION
+                        SELECT
+                            A.brand_user_id AS user_id,
+                            B.mobile
+                        FROM
+                            a_behavior_brand_mini_day A
+                        LEFT JOIN `a_brand_app_customer` B ON A.brand_user_id = B.brand_customer_id
+                        WHERE
+                            A.report_d >= %s and A.report_d < %s
+                        AND A.house_id IN %s
+                ) t1
+    """
+
+    # 3:新增获客
+    sql_1_4 = """
+            SELECT
+                count(
+                    DISTINCT IFNULL(mobile, user_id)
+                )
+            FROM
+                (
+                    SELECT
+                        user_id,
+                        mobile,
+                        created
+                    FROM
+                        `d_user`
+                    WHERE
+                        created >= %s
+                    AND created < %s
+                    AND house_id IN %s
+                    UNION
+                        SELECT
+                            brand_customer_id AS user_id,
+                            mobile,
+                            rlat_created
+                        FROM
+                            `a_brand_app_customer_house_rlat`
+                        WHERE
+                            rlat_created >= %s
+                        AND rlat_created < %s
+                        AND rlat_house_id IN %s
+                ) t1
+    """
+
+    # 4:新增获电
+    sql_1_5 = """
         SELECT
-            a.*, 
-            b.house_name,
-            c.interested_num,
-            d.wx_num,
-            e.new_cust_num
+            COUNT(DISTINCT mobile)
         FROM
             (
+                SELECT
+                    user_id,
+                    mobile,
+                    wx_phone_time AS created
+                FROM
+                    `d_user`
+                WHERE
+                    wx_phone_time >= %s
+                AND wx_phone_time < %s
+                AND house_id IN %s
+                UNION
+                    SELECT
+                        brand_customer_id,
+                        mobile,
+                        houdian_time AS created
+                    FROM
+                        (
+                            SELECT
+                                *,
+                                CASE
+                            WHEN rlat_created > shouquan_time THEN
+                                rlat_created
+                            ELSE
+                                shouquan_time
+                            END AS houdian_time
+                            FROM
+                                a_brand_app_customer_house_rlat
+                            WHERE
+                                mobile IS NOT NULL
+                            AND rlat_house_id IN %s
+                            AND cust_house_flag = '1'
+                        ) t1
+                    WHERE
+                        houdian_time >= %s
+                    AND houdian_time < %s
+            ) t1
+    """
+
+    # 5:集团小程序总浏览量(针对香港置地要命名为【CNC小程序总浏览量】)
+    # 集团部分
+
+    # 6:集团小程序总浏览人数(针对香港置地要命名为【CNC小程序总浏览人数】)
+    #
+    #         集团小程序整体UV(见SQL3)
+    sql_1_6 = """
+        SELECT
+            COUNT(DISTINCT brand_user_id) AS UV4
+        FROM
+            a_behavior_brand_mini_day
+        WHERE
+            report_d > %s
+        AND report_d < %s
+        AND house_id IN %s
+    """
+
+    # 7: 集团小程序新增获客(针对香港置地要命名为【CNC小程序新增获客】)
+    #
+    #         权限项目范围内,集团维度的获客
+
+    # 8: 集团小程序新增获电(针对香港置地要命名为【CNC小程序新增获电】)
+    #
+    #         权限项目范围内,集团维度的获电
+
+    # 9.单项目小程序总浏览量
+    #
+    #         项目部分
+    #
+    # 10.单项目小程序总浏览人数
+    #
+    #         权限项目未授权部分求和+去重的授权部分(见SQL2)
+    #
+
+    # 11.单项目小程序新增获客
+    #
+    #         权限项目未授权部分求和+去重的授权部分(见SQL7)
+    #
+
+    # 12.单项目小程序新增获电
+    #
+    #         权限项目所有授权手机号去重(见SQL8)
+
+    #  1.默认值/001_大麦/项目排行榜/小程序排行榜TOP_N
+    sql_2_1 = """
+        SELECT
+        a.house_id,
+        a.house_name,
+        SUM(a.pv),
+        SUM(a.uv),
+        SUM(a.new_cust_num),
+        SUM(a.wx_num)
+        from
+            (SELECT
+                a.*, 
+                b.house_name,
+                c.interested_num,
+                d.wx_num,
+                e.new_cust_num
+            FROM
+                (
+                    SELECT
+                        house_id,
+                        count(
+                            DISTINCT ifnull(user_id, idfa)
+                        ) uv,
+                        sum(session_times) session_times,
+                        sum(sum_session_time) sum_session_time,
+                        sum(pv) pv,
+                        sum(page_num) page_num
+                    FROM
+                        a_idfa_behavior_sum
+                    WHERE
+                        report_d >= %s
+                    AND report_d < %s
+                    GROUP BY
+                        house_id
+                ) a
+            JOIN d_house b ON a.house_id = b.house_id
+            LEFT JOIN (
+                SELECT
+                    house_id,
+                    count(*) interested_num
+                FROM
+                    f_interested_custlist
+                WHERE
+                    report_d >= %s
+                AND report_d < %s
+                GROUP BY
+                    house_id
+            ) c ON a.house_id = c.house_id
+            LEFT JOIN (
                 SELECT
                     house_id,
-                    count(
-                        DISTINCT ifnull(user_id, idfa)
-                    ) uv,
-                    sum(session_times) session_times,
-                    sum(sum_session_time) sum_session_time,
-                    sum(pv) pv,
-                    sum(page_num) page_num
+                    count(*) wx_num
                 FROM
-                    a_idfa_behavior_sum
+                    f_customer_dynamic
                 WHERE
-                    report_d >= '2020-03-01'
-                AND report_d < '2020-03-05'
+                    dynamic = 1
+                AND report_d >= %s
+                AND report_d <= %s
                 GROUP BY
                     house_id
+            ) d ON a.house_id = d.house_id
+            LEFT JOIN (
+                SELECT
+                    house_id,
+                    count(*) new_cust_num
+                FROM
+                    d_user
+                WHERE
+                    created >= %s
+                AND created < %s # 时间需要加一天!!!!
+                GROUP BY
+                    house_id
+            ) e ON a.house_id = e.house_id
             ) a
-        JOIN d_house b ON a.house_id = b.house_id
-        LEFT JOIN (
-            SELECT
-                house_id,
-                count(*) interested_num
-            FROM
-                f_interested_custlist
-            WHERE
-                report_d >= '2020-03-01'
-            AND report_d <'2020-03-05'
-            GROUP BY
-                house_id
-        ) c ON a.house_id = c.house_id
-        LEFT JOIN (
-            SELECT
-                house_id,
-                count(*) wx_num
-            FROM
-                f_customer_dynamic
-            WHERE
-                dynamic = 1
-            AND report_d >= '2020-03-01'
-            AND report_d <= '2020-03-05'
-            GROUP BY
-                house_id
-        ) d ON a.house_id = d.house_id
-        LEFT JOIN (
-            SELECT
-                house_id,
-                count(*) new_cust_num
-            FROM
-                d_user
-            WHERE
-                created >= '2020-03-01'
-            AND created < '2020-03-05' # 时间需要加一天!!!!
-            GROUP BY
-                house_id
-        ) e ON a.house_id = e.house_id
+        GROUP BY
+            a.house_id,
+            a.house_name
+        order by a.pv desc
     """
 
     # 2.默认值/006_大麦(集团)/集团项目排行榜v1.3/集团排行榜
     sql_2_2 = """
-    待定
+            select
+                a.brand_id,
+                a.house_id,
+                a.house_name,
+                SUM(a.pv),
+                SUM(a.uv),
+                SUM(a.new_cust),
+                SUM(a.shouquan_cust)
+            from           
+            (SELECT
+                            c.pv,c.uv,a.brand_id,a.house_id, a.house_name,a.brand_name,
+                            ifnull(b.house_layout_num,0) house_layout_num,
+                                ifnull(d.launch_time,'--') launch_time,
+                                c.new_cust,
+                                c.shouquan_cust,
+                                c.revisit_cust
+                        FROM
+                            (
+                            SELECT
+                                brand_id,
+                                ifnull(house_id, '0') house_id,
+                                sum(pv) pv,
+                                count(DISTINCT brand_user_id) uv,
+                                        count(DISTINCT case when is_new_user = 1 then 
+                                            brand_user_id end) new_cust,
+                                        count(DISTINCT case when is_shouquan_user = 1 then 
+                                            brand_user_id end) shouquan_cust,
+                                        count(DISTINCT case when is_new_user = 0 then 
+                                            brand_user_id end) revisit_cust
+                         from a_behavior_brand_mini_day
+                            where report_d>= %s
+                                        and report_d < %s
+                                GROUP BY
+                                brand_id,
+                                ifnull(house_id, '0')
+                        ) c
+                        LEFT JOIN (
+                            SELECT
+                                house_id,
+                                count(1) house_layout_num
+                            FROM
+                                d_content_layout
+                            WHERE
+                                `status` = '1'
+                                 and house_id <> 1
+                        group by house_id
+                        union all
+                            SELECT
+                                bb.brand_id house_id,
+                                count(1) house_layout_num
+                            FROM
+                                d_content_layout aa join d_house bb
+                            on aa.house_id = bb.house_id
+                            WHERE
+                                aa.`status` = '1'
+                                        and bb.status = '1'
+                                        and aa.house_id <> 1
+                        group by bb.brand_id
+                        ) b ON c.house_id = b.house_id
+                         JOIN d_house a ON a.house_id = c.house_id
+                        and a.brand_id = c.brand_id
+                        left join d_house_attr d
+                         on c.house_id = d.house_id
+                        and c.brand_id = d.brand_id ) a 
+            group by a.brand_id, a.house_id, a.house_name
+            order by a.pv desc
     """
 
     # 默认值/001_大麦/场景_用户来源渠道/用户来源渠道—明细
     sql_3_1 = """
             SELECT
-                *
+                house_id,
+                house_name,
+                label_wx,
+                COUNT(a.id) as counts
             FROM
                 d_user_attr a
             LEFT JOIN d_scene b ON a.scene = b. CODE
             WHERE
                 a.source IN (1, 2, 3, 4, 10)
-            AND a.report_d >= '2020-03-01'
-            AND a.report_d <= '2020-03-04'
+            AND a.report_d >= %s
+            AND a.report_d < '%s
+            GROUP BY
+                house_id,
+                house_name,
+                label_wx
     """
 
     # 默认值/006_大麦(集团)/场景(集团)_用户来源渠道_v1.1/用户来源渠道—明细
     sql_3_2 = """
-            SELECT
-                a.scene,
-                a.brand_id,
-                b.*, a.share_brand_customer_id,
-                '2' adviser_agent,
-                a.house_id house_id,
-                c.house_name house_name,
-                c.brand_name
-            FROM
+        select  
+            brand_id,
+            x.brand_name,
+            house_id,
+            house_name,
+            label_wx, 
+            COUNT(1)
+	    from						
+	        (SELECT
+            a.scene,
+            a.brand_id,
+            b.*, a.share_brand_customer_id,
+            '2' adviser_agent,
+            a.house_id house_id,
+            c.house_name house_name,
+            c.brand_name
+        FROM
                 (
                     SELECT
                         scene,
@@ -116,9 +374,9 @@ class ReportPush(object):
                     FROM
                         d_brand_app_customer
                     WHERE
-                        created >='2020-03-01'
+                        created >= %s
                     AND created < DATE_ADD(
-                        '2020-03-04', INTERVAL 1 DAY
+                        %s, INTERVAL 1 DAY
                     )
                     UNION ALL
                         SELECT
@@ -129,13 +387,401 @@ class ReportPush(object):
                         FROM
                             d_brand_app_customer
                         WHERE
-                            created >= '2020-03-01'
+                            created >= %s
                         AND created < DATE_ADD(
-                            '2020-03-04', INTERVAL 1 DAY
+                            %s, INTERVAL 1 DAY
                         )
                 ) a
             LEFT JOIN d_scene b ON a.scene = b. CODE
             JOIN d_house c ON a.house_id = c.house_id
-            AND a.brand_id = c.brand_id
+            AND a.brand_id = c.brand_id) x
+            group by x.brand_id, x.brand_name, x.house_id, x.house_name, x.label_wx
     """
 
+    # 根据任务id获取推送客户信息
+    sql_4 = """
+        select a.task_key, a.customer_id, b.customer_type, b.`name`, b.mail, GROUP_CONCAT(c.house_or_brand_id) as ids
+        from report_task_info a left join report_push_customer_info b on b.id = a.customer_id
+        left join report_customer_authority_info c on b.id = c.customer_id
+        where a.task_key = %s and a.status = b.status = c.status = 1
+        group by a.task_key, a.customer_id, b.customer_type, b.`name`, b.mail
+    """
+
+    # 根据集团id获取项目id
+    sql_5 = """
+        select house_id, house_name from d_house where brand_id = %s
+    """
+
+    sql_6 = """insert into report_push_log(name, mail, report_name, push_time, send_status, status) values(%s, %s, 
+    %s, now(), %s, 1) """
+
+    # 根据项目id获取集团id和名称
+    sql_7 = """
+        select a.brand_id, a.brand_name from d_house a where a.house_id = %s;
+    """
+
+    def __init__(self, db_name):
+        self.db = MysqlDB(db_name)
+
+    def report_data_query(self, task_key):
+        """
+            定时任务推送数据准备
+        :param task_key:
+        :return:
+        """
+        # 根据任务key获取需要推送的客户以及可以的权限
+        result = {}
+        customers = self.db.select(self.sql_4, [task_key])
+        # a.task_key, a.customer_id, b.customer_type, b.`name`, b.mail, GROUP_CONCAT(c.house_or_brand_id)
+        time_range = self.get_time_range(task_key)
+        all_time_rang = self.get_time_range(4)
+        # 有限时间范围内的数据
+        xcx_top_data = self.xcx_top(time_range)
+        brand_top_data = self.brand_top(time_range)
+        customer_channel_details_data = self.customer_channel_details(time_range)
+        brand_customer_channel_details = self.brand_customer_channel_details(time_range)
+        # 所有历史数据
+        xcx_top_data_all = self.xcx_top(all_time_rang)
+        brand_top_data_all = self.brand_top(all_time_rang)
+        for customer in customers:
+            customer_type = customer[2]
+            house_ids = []
+            brand_id_list = []
+            if customer_type == 1:
+                # 项目
+                ids = customer[5]
+                if str(house_ids).find(',') != -1:
+                    house_ids = [x for x in str(ids).split(',')]
+                else:
+                    house_ids = [ids]
+                pass
+            elif customer_type == 2:
+                # 集团
+                brands = []
+                brand_ids = customer[5]
+                if str(brand_ids).find(',') != -1:
+                    brands = [x for x in str(brand_ids).split(',')]
+                else:
+                    brands = [brand_ids]
+                for id in brands:
+                    house_ids.extend(self.get_house_ids_by_brand_id(id))
+                brand_id_list = brands
+
+            result_data_1 = []
+            result_data_2 = []
+            result_data_3 = []
+            result_data_4 = []
+            result_data_5 = []
+            result_data_6 = []
+            result_data_7 = []
+            result_data_8 = []
+
+            # 1 数据总览 12个统计指标
+            data_overview = self.data_overview(time_range, house_ids, xcx_top_data, brand_top_data)
+            result_data_1.extend(data_overview)
+            # 4:单个项目小程序数据排行榜
+            for index, x in enumerate(xcx_top_data):
+                if x[0] in house_ids:
+                    result_data_4.append([index, x[1], x[2], x[3], x[4], x[5]])
+            # 5: 集团项目数据排行榜
+            if customer_type == 2:
+                for index, x2 in enumerate(brand_top_data):
+                    if x2[1] in house_ids or x2[0] in brand_id_list:
+                        result_data_5.append([index, x2[2], x2[3], x2[4], x2[5], x2[5], x2[6]])
+                    pass
+                pass
+            else:
+                for index, x1 in enumerate(brand_top_data):
+                    if x1[1] in house_ids:
+                        result_data_5.append([index, x1[2], x1[3], x1[4], x1[5], x1[5], x1[6]])
+            # 2: 项目数据排行榜
+            house_with_brand_data = self.house_with_brand(xcx_top_data, brand_top_data)
+            for index, x in enumerate(house_with_brand_data):
+                if x[1] in house_ids or x[0] in brand_id_list:
+                    obj = [index]
+                    obj.extend(x)
+                    result_data_2.append(obj)
+
+            # 3: 项目历史累计总数
+            if customer_type == 2:
+                all_data_history = self.house_with_brand(xcx_top_data_all, brand_top_data_all, brand_id_list)
+                for index, x in enumerate(all_data_history):
+                    if x[1] in house_ids or x[0] in brand_id_list:
+                        obj = [index]
+                        obj.extend(x)
+                        result_data_3.append(obj)
+            else:
+                all_data_history = self.house_with_brand(xcx_top_data_all, brand_top_data_all)
+                for index, x in enumerate(all_data_history):
+                    if x[0] in house_ids:
+                        obj = [index]
+                        obj.extend(x)
+                        result_data_3.append(obj)
+            result[1] = result_data_1
+            result[2] = result_data_2
+            result[3] = result_data_3
+            result[4] = result_data_4
+            result[5] = result_data_5
+            result[6] = result_data_6
+            break
+            # 7: 单个项目小程序获客来源场景分析
+
+            # 8: 集团项目获客来源场景分析
+
+            # 6: 项目获客来源场景分析
+        return result
+
+    def data_overview(self, time_range, house_ids, xcx_top_data, brand_top_data):
+        """
+            统计数据总览
+        :param time_range:
+        :param house_ids:
+        :return:
+        """
+        result = []
+        # 1:总浏览量
+        data_1_1 = self.db.select(self.sql_1_1, [time_range[0], time_range[1], house_ids])
+        number_1_1 = data_1_1[0][0]
+        data_1_2 = self.db.select(self.sql_1_2, [time_range[0], time_range[1], house_ids])
+        number_1_2 = data_1_2[0][0]
+        number_1 = number_1_1 + number_1_2
+        result.append(number_1)
+        # 2: 总浏览人数
+        data_2 = self.db.select(self.sql_1_3, [time_range[0], time_range[1], house_ids, time_range[0], time_range[1]])
+        number_2 = data_2[0][0]
+        result.append(number_2)
+        # 3:新增获客
+        data_3 = self.db.select(self.sql_1_4, [time_range[0], time_range[1], house_ids, time_range[0], time_range[1]])
+        number_3 = data_3[0][0]
+        result.append(number_3)
+        # 4:新增获电
+        data_4 = self.db.select(self.sql_1_5, [time_range[0], time_range[1], house_ids, house_ids, time_range[0], time_range[1]])
+        number_4 = data_4[0][0]
+        result.append(number_4)
+        xcx_top_data_part = [x for x in xcx_top_data if x[0] in house_ids]
+        brand_top_data_part = [x for x in brand_top_data if x[0] in house_ids]
+        # 5 6 7 8
+        number_5 = 0
+        number_6 = 0
+        number_7 = 0
+        number_8 = 0
+        for x in brand_top_data_part:
+            number_5 += x[3]
+            number_6 += x[4]
+            number_7 += x[5]
+            number_8 += x[6]
+        result.append(number_5)
+        result.append(number_6)
+        result.append(number_7)
+        result.append(number_8)
+        # 9 10 11 12
+        number_9 = 0
+        number_10 = 0
+        number_11 = 0
+        number_12 = 0
+        for x in xcx_top_data_part:
+            number_9 += x[2]
+            number_10 += x[3]
+            number_11 += x[4]
+            number_12 += x[5]
+        result.append(number_9)
+        result.append(number_10)
+        result.append(number_11)
+        result.append(number_12)
+        return result
+
+    def house_with_brand(self, xcx_top_data, brand_top_data, brands=None):
+        """
+            项目数据和集团数据的求和
+        :param brands:
+        :param xcx_top_data:
+        :param brand_top_data:
+        :return:
+        """
+        result = []
+        house_ids = []
+        if brands:
+            house_ids.extend(house_ids)
+        for x in xcx_top_data:
+            house_ids.append(x[0])
+        for x in brand_top_data:
+            if x[1] not in house_ids:
+                house_ids.append(x[1])
+        for house_id in house_ids:
+            a = []
+            for index, x in enumerate(xcx_top_data):
+                if house_id == x[0]:
+                    a.extend(x)
+            b = []
+            for index, y in enumerate(brand_top_data):
+                if house_id == y[1] or house_id == y[0]:
+                    b.extend(y)
+            if len(a) == 1 and len(b) == 1:
+                result.append([b[0], a[0], a[1], a[2] + b[3], a[3] + b[4], a[4] + b[5], a[5] + b[6]])
+            elif len(a) == 1 and len(b) == 0:
+                _a = [1]
+                for x in a:
+                    _a.append(x)
+                result.append(_a)
+            elif len(a) == 0 and len(b) == 1:
+                result.append(b)
+            else:
+                pass
+        result.sort(key=lambda obj: obj[1])
+        result.reverse()
+        return result
+
+    def xcx_top(self, time_range):
+        """
+            获取 1.默认值/001_大麦/项目排行榜/小程序排行榜TOP_N
+        :return:
+        """
+        params = []
+        params.extend(time_range)
+        params.extend(time_range)
+        params.extend(time_range)
+        params.extend(time_range)
+        xcx_top_data = self.db.select(self.sql_2_1, params)
+        result = []
+        for x in xcx_top_data:
+            result.append([n for n in x])
+        # xcx_top_data的结果结构
+        #       0  a.house_id, 项目id
+        #       1  a.house_name, 项目名称
+        #       2  SUM(a.pv), 浏览总量
+        #       3  SUM(a.uv), 浏览人数
+        #       4  SUM(a.new_cust_num), 新增获客
+        #       5  SUM(a.wx_num) 授权手机号
+        result.sort(key=lambda obj: obj[2])
+        result.reverse()
+        return result
+
+    def brand_top(self, time_range):
+        """
+            2.默认值/006_大麦(集团)/集团项目排行榜v1.3/集团排行榜
+        :param task_key:
+        :return:
+        """
+        params = [time_range]
+        brand_top_data = self.db.select(self.sql_2_2, params)
+        result = []
+        for x in brand_top_data:
+            result.append([n for n in x])
+        # brand_top_data结果的结构
+        #                0 a.brand_id, 集团id
+        #                1 a.house1_id, 项目id
+        #                2 a.house_name, 项目名称
+        #                3 SUM(a.pv), 浏览总量
+        #                4 SUM(a.uv), 浏览人数
+        #                5 SUM(a.new_cust), 新增获客
+        #                6 SUM(a.shouquan_cust) 授权手机号
+        result.sort(key=lambda obj: obj[3])
+        result.reverse()
+        return result
+
+    """
+        数据分享类别
+        1:长按识别二维码	2:会话	3:公众号菜单	4:公众号文章	5:小程序历史列表	6:扫一扫二维码	
+        7:搜索	8:相册选取二维码	9:其他小程序	10:其他
+
+    """
+    share_way = {
+        "长按识别二维码": 1,
+        "会话": 2,
+        "公众号菜单": 3,
+        '公众号文章': 4,
+        '小程序历史列表': 5,
+        '扫一扫二维码': 6,
+        '搜索': 7,
+        '相册选取二维码': 8,
+        '其他小程序': 9,
+        '': 10
+    }
+
+    def customer_channel_details(self, time_range):
+        """
+            1.默认值/001_大麦/场景_用户来源渠道/用户来源渠道—明细
+        :param task_key:
+        :return:
+        """
+        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数据结构
+        # 	house_id, 项目id
+        # 	house_name, 项目名称
+        # 	label_wx, 分享类别
+        # 	COUNT(a.id) as counts, 数量
+        return customer_channel_details_data
+
+    def brand_customer_channel_details(self, time_range):
+        """
+            2.默认值/006_大麦(集团)/场景(集团)_用户来源渠道_v1.1/用户来源渠道—明细
+        :param frequency:
+        :return:
+        """
+        params = [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
+
+    def push_log_recording(self, push_message):
+        """
+            报表推送日志记录
+        :param push_message:
+        :return:
+        """
+        self.db.add_some(self.sql_6, push_message)
+
+    def get_house_ids_by_brand_id(self, brand_id):
+        return self.db.select(self.sql_5, [brand_id])
+
+    def get_brand_info_by_house_id(self, house_id):
+        """
+            根据项目id或者相应的集团信息
+        :param house_id:
+        :return:
+        """
+        brand_info = self.db.select(self.sql_7, [house_id])
+        if len(brand_info) == 1:
+            return brand_info[0][0]
+        return
+
+    def get_time_range(self, task_key):
+        """
+         根据定时任务id获取时间区间
+         时间格式 yyyy-mm-dd
+        :param task_key:1: 日报,2:周报, 3:all
+        :return:
+        """
+        now_time = datetime.datetime.now()
+        pre_time = None
+        if task_key in (2, 3):
+            # 上周,上周一到上周天
+            pre_time = now_time + datetime.timedelta(days=-7)
+            pass
+        elif task_key in (1):
+            # 昨天
+            pre_time = now_time + datetime.timedelta(days=-1)
+            pass
+        elif task_key in (4):
+            # 不限时间
+            pre_time = now_time + datetime.timedelta(days=-2999)
+        return [pre_time.strftime('%Y-%m-%d'), now_time.strftime('%Y-%m-%d')]
+
+
+if __name__ == '__main__':
+    rp = ReportPush('linshi')
+    print(rp.get_time_range(3))
+    sql = "select COUNT(1) from t_house_image where id in %s and status = %s"
+    print(rp.db.select(sql, [[46, 47, 48], -1]))
+    list_data = [2, 1, 4]
+    for x in list_data:
+        print(x)