浏览代码

增加调试输出

Signed-off-by: Binren Zhnag <zhangbr@elab-plus.com>
Binren Zhnag 5 年之前
父节点
当前提交
81eee70bca
共有 3 个文件被更改,包括 172 次插入161 次删除
  1. 11 12
      email_util.py
  2. 1 1
      flask_app.py
  3. 160 148
      report_push.py

+ 11 - 12
email_util.py

@@ -17,10 +17,7 @@ class EmailUtil(object):
     receiver = ['1285211525@qq.com', 'lijm@elab-plus.com', 'xuanxc@elab-plus.com']
 
     def __init__(self):
-        self.smtp = SMTP(self.host_server)
-        self.smtp.set_debuglevel(1)
-        self.smtp.ehlo(self.host_server)
-        self.smtp.login(self.sender_email, self.pwd)
+        pass
 
     def send_mail(self,
                   mail_title,
@@ -28,7 +25,12 @@ class EmailUtil(object):
                   receivers,
                   mail_excel
                   ):
+        global smtp
         try:
+            smtp = SMTP(self.host_server)
+            smtp.set_debuglevel(1)
+            smtp.ehlo(self.host_server)
+            smtp.login(self.sender_email, self.pwd)
             msg = MIMEMultipart('related')
             msg['From'] = self.send_name
             msg['Subject'] = Header(mail_title, 'utf-8')
@@ -47,17 +49,16 @@ class EmailUtil(object):
             for receiver in receivers:
                 msg['To'] = receiver
                 try:
-                    self.smtp.sendmail(self.sender_email, receiver, msg.as_string())
+                    smtp.sendmail(self.sender_email, receiver, msg.as_string())
                 except Exception as e:
                     print(str(e))
-                    self.smtp.sendmail(self.sender_email, receiver, msg.as_string())
+                    smtp.sendmail(self.sender_email, receiver, msg.as_string())
                 print('Success!')
         except Exception as e:
             print('Error:{}'.format(str(e)))
             traceback.print_exc()
-
-    def quit_mail(self):
-        self.smtp.quit()
+        finally:
+            smtp.quit()
 
     dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
@@ -65,11 +66,9 @@ class EmailUtil(object):
         send_email = EmailUtil()
         send_email.send_mail('elab_test', '11', ['1285211525@qq.com'],
                              mail_excel=r'{}/elab_mvp/resources/111.xlsx'.format(self.dir_path))
-        send_email.quit_mail()
 
 
 if __name__ == '__main__':
     send_email = EmailUtil()
-    send_email.send_mail('elab_test', '11', ['1285211525@qq.com'], mail_excel=r'D:\elab-code\elab_mvp\resources\建业项目卡片信息合档-补id(1)(1).xlsx')
-    send_email.quit_mail()
+    send_email.send_test()
     pass

+ 1 - 1
flask_app.py

@@ -228,7 +228,7 @@ def report_test():
     try:
         task_id = request.args.get('id', default=0, type=int)
         report_push = ReportPush('bi_report')
-        result = report_push.report_push(task_id)
+        result = report_push.report_data_query(task_id)
     except Exception as e:
         print(str(e))
         result['error'] = str(e)

+ 160 - 148
report_push.py

@@ -484,165 +484,177 @@ class ReportPush(object):
         :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_data = {}
-            name = customer[3]
-            mail = customer[4]
-            customer_type = customer[2]
-            house_ids = []
-            brand_id_list = []
-            if customer_type == 1:
-                # 项目
-                ids = customer[5]
-                if str(ids).find(',') != -1:
-                    house_ids = [x for x in str(ids).split(',')]
-                else:
-                    house_ids = [ids]
-                brand_id_list = self.get_brand_ids_by_house_ids(house_ids)
-                pass
-            elif customer_type == 2:
-                # 集团
-                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([x[0] for x in self.get_house_ids_by_brand_id(id)])
-                brand_id_list = brands
+        message = []
+        try:
+            # 根据任务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)
+            message.append(1)
+            brand_top_data = self.brand_top(time_range)
+            message.append(2)
+            customer_channel_details_data = self.customer_channel_details(time_range)
+            message.append(3)
+            brand_customer_channel_details = self.brand_customer_channel_details(time_range)
+            message.append(4)
+            # 所有历史数据
+            xcx_top_data_all = self.xcx_top(all_time_rang)
+            message.append(5)
+            brand_top_data_all = self.brand_top(all_time_rang)
+            message.append(5)
+            for customer in customers:
+                customer_data = {}
+                name = customer[3]
+                mail = customer[4]
+                customer_type = customer[2]
+                house_ids = []
+                brand_id_list = []
+                if customer_type == 1:
+                    # 项目
+                    ids = customer[5]
+                    if str(ids).find(',') != -1:
+                        house_ids = [x for x in str(ids).split(',')]
+                    else:
+                        house_ids = [ids]
+                    brand_id_list = self.get_brand_ids_by_house_ids(house_ids)
+                    pass
+                elif customer_type == 2:
+                    # 集团
+                    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([x[0] for x in 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_7 = []
-            result_data_8 = []
+                result_data_1 = []
+                result_data_2 = []
+                result_data_3 = []
+                result_data_4 = []
+                result_data_5 = []
+                result_data_7 = []
+                result_data_8 = []
 
-            all_house_ids = self.get_house_ids_by_brand_ids(brand_id_list)
-            xcx_top_data_part = self.filter_by_house_ids(xcx_top_data, all_house_ids)
-            brand_top_data_part = self.filter_by_brand_ids(brand_top_data, brand_id_list)
-            xcx_top_data_all_part = self.filter_by_house_ids(xcx_top_data_all, all_house_ids)
-            brand_top_data_all_part = self.filter_by_brand_ids(brand_top_data_all, brand_id_list)
+                all_house_ids = self.get_house_ids_by_brand_ids(brand_id_list)
+                xcx_top_data_part = self.filter_by_house_ids(xcx_top_data, all_house_ids)
+                brand_top_data_part = self.filter_by_brand_ids(brand_top_data, brand_id_list)
+                xcx_top_data_all_part = self.filter_by_house_ids(xcx_top_data_all, all_house_ids)
+                brand_top_data_all_part = self.filter_by_brand_ids(brand_top_data_all, brand_id_list)
 
-            # 1 数据总览 12个统计指标
-            data_overview = self.data_overview(time_range, house_ids, xcx_top_data_part, brand_top_data_part)
-            result_data_1.extend(data_overview)
-            # 4:单个项目小程序数据排行榜
-            # 排名	项目名称	总浏览量	总浏览人数	新增获客	新增获电
-            for index, x in enumerate(xcx_top_data_part):
-                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_part):
-                    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[6]])
+                # 1 数据总览 12个统计指标
+                data_overview = self.data_overview(time_range, house_ids, xcx_top_data_part, brand_top_data_part)
+                result_data_1.extend(data_overview)
+                # 4:单个项目小程序数据排行榜
+                # 排名	项目名称	总浏览量	总浏览人数	新增获客	新增获电
+                for index, x in enumerate(xcx_top_data_part):
+                    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_part):
+                        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[6]])
+                        pass
                     pass
-                pass
-            elif customer_type == 1:
-                for index, x1 in enumerate(brand_top_data_part):
-                    if x1[1] in house_ids:
-                        result_data_5.append([index, x1[2], x1[3], x1[4], x1[5], x1[6]])
-            else:
-                pass
-            # 2: 项目数据排行榜
-            # 排名 项目名称 总浏览量 总浏览人数 新增获客 新增获电
-            house_with_brand_data = self.house_with_brand(xcx_top_data_part, brand_top_data_part)
-            for x in house_with_brand_data:
-                if x[2] in house_ids:
-                    x.pop(1)
-                    x.pop(1)
-                    result_data_2.append(x)
-
-            # 3: 项目历史累计总数
-            # 排名 项目名称	总浏览量	总浏览人数 新增获客 新增获电
-            if customer_type == 2:
-                all_data_history = self.house_with_brand(xcx_top_data_all_part, brand_top_data_all_part, brand_id_list)
-                for index, x in enumerate(all_data_history):
-                    if x[2] in house_ids or x[1] in brand_id_list:
-                        x.pop(1)
-                        x.pop(1)
-                        result_data_3.append(x)
-            else:
-                all_data_history = self.house_with_brand(xcx_top_data_all_part, brand_top_data_all_part)
-                for index, x in enumerate(all_data_history):
+                elif customer_type == 1:
+                    for index, x1 in enumerate(brand_top_data_part):
+                        if x1[1] in house_ids:
+                            result_data_5.append([index, x1[2], x1[3], x1[4], x1[5], x1[6]])
+                else:
+                    pass
+                # 2: 项目数据排行榜
+                # 排名 项目名称 总浏览量 总浏览人数 新增获客 新增获电
+                house_with_brand_data = self.house_with_brand(xcx_top_data_part, brand_top_data_part)
+                for x in house_with_brand_data:
                     if x[2] in house_ids:
                         x.pop(1)
                         x.pop(1)
-                        result_data_3.append(x)
+                        result_data_2.append(x)
 
-            # 7: 单个项目小程序获客来源场景分析
-            # 项目 合计 长按识别二维码 会话 公众号菜单 公众号文章 小程序历史列表 扫一扫二维码 搜索 相册选取二维码 其他小程序 其他
-            for x in customer_channel_details_data:
-                if x[0] in house_ids:
-                    result_data_7.append(x)
+                # 3: 项目历史累计总数
+                # 排名 项目名称	总浏览量	总浏览人数 新增获客 新增获电
+                if customer_type == 2:
+                    all_data_history = self.house_with_brand(xcx_top_data_all_part, brand_top_data_all_part, brand_id_list)
+                    for index, x in enumerate(all_data_history):
+                        if x[2] in house_ids or x[1] in brand_id_list:
+                            x.pop(1)
+                            x.pop(1)
+                            result_data_3.append(x)
+                else:
+                    all_data_history = self.house_with_brand(xcx_top_data_all_part, brand_top_data_all_part)
+                    for index, x in enumerate(all_data_history):
+                        if x[2] in house_ids:
+                            x.pop(1)
+                            x.pop(1)
+                            result_data_3.append(x)
 
-            # 8: 集团项目获客来源场景分析
-            if customer_type == 2:
-                for x in brand_customer_channel_details:
-                    if x[2] in house_ids or x[0] in brand_id_list:
-                        result_data_8.append(x)
-            elif customer_type == 1:
-                for x in brand_customer_channel_details:
-                    if x[2] in house_ids:
-                        result_data_8.append(x)
+                # 7: 单个项目小程序获客来源场景分析
+                # 项目 合计 长按识别二维码 会话 公众号菜单 公众号文章 小程序历史列表 扫一扫二维码 搜索 相册选取二维码 其他小程序 其他
+                for x in customer_channel_details_data:
+                    if x[0] in house_ids:
+                        result_data_7.append(x)
 
-            # 6: 项目获客来源场景分析
-            result_data_6 = self.house_with_brand_for_share(result_data_7, result_data_8)
+                # 8: 集团项目获客来源场景分析
+                if customer_type == 2:
+                    for x in brand_customer_channel_details:
+                        if x[2] in house_ids or x[0] in brand_id_list:
+                            result_data_8.append(x)
+                elif customer_type == 1:
+                    for x in brand_customer_channel_details:
+                        if x[2] in house_ids:
+                            result_data_8.append(x)
 
-            customer_data[1] = result_data_1
-            result_data_2.sort(key=lambda obj: obj[0])
-            customer_data[2] = result_data_2
-            result_data_3.sort(key=lambda obj: obj[0])
-            customer_data[3] = result_data_3
-            result_data_4.sort(key=lambda obj: obj[0])
-            customer_data[4] = result_data_4
-            result_data_5.sort(key=lambda obj: obj[0])
-            customer_data[5] = result_data_5
-            self.sort(result_data_6, 1)
-            customer_data[6] = result_data_6
-            result_data_7_format = []
-            for x in result_data_7:
-                house_name = x[1]
-                ele = [house_name]
-                data = x[2:]
-                total = sum(data)
-                ele.append(total)
-                ele.extend(data)
-                result_data_7_format.append(ele)
-            self.sort(result_data_7_format, 1)
-            customer_data[7] = result_data_7_format
-            result_data_8_format = []
-            for x in result_data_8:
-                ele = []
-                house_name = x[3]
-                data = x[4:]
-                total = sum(data)
-                ele.append(house_name)
-                ele.append(total)
-                ele.extend(data)
-                result_data_8_format.append(ele)
-            self.sort(result_data_8_format, 1)
-            customer_data[8] = result_data_8_format
-            customer_data[0] = mail
-            result[name] = customer_data
-        return result
+                # 6: 项目获客来源场景分析
+                result_data_6 = self.house_with_brand_for_share(result_data_7, result_data_8)
+
+                customer_data[1] = result_data_1
+                result_data_2.sort(key=lambda obj: obj[0])
+                customer_data[2] = result_data_2
+                result_data_3.sort(key=lambda obj: obj[0])
+                customer_data[3] = result_data_3
+                result_data_4.sort(key=lambda obj: obj[0])
+                customer_data[4] = result_data_4
+                result_data_5.sort(key=lambda obj: obj[0])
+                customer_data[5] = result_data_5
+                self.sort(result_data_6, 1)
+                customer_data[6] = result_data_6
+                result_data_7_format = []
+                for x in result_data_7:
+                    house_name = x[1]
+                    ele = [house_name]
+                    data = x[2:]
+                    total = sum(data)
+                    ele.append(total)
+                    ele.extend(data)
+                    result_data_7_format.append(ele)
+                self.sort(result_data_7_format, 1)
+                customer_data[7] = result_data_7_format
+                result_data_8_format = []
+                for x in result_data_8:
+                    ele = []
+                    house_name = x[3]
+                    data = x[4:]
+                    total = sum(data)
+                    ele.append(house_name)
+                    ele.append(total)
+                    ele.extend(data)
+                    result_data_8_format.append(ele)
+                self.sort(result_data_8_format, 1)
+                customer_data[8] = result_data_8_format
+                customer_data[0] = mail
+                result[name] = customer_data
+            # return result
+        except:
+            pass
+        finally:
+            return message
 
     def sort(self, data, idnex):
         data.sort(key=lambda obj: obj[idnex])