ck 4 年之前
父节点
当前提交
94361e7d63
共有 3 个文件被更改,包括 47 次插入5 次删除
  1. 1 1
      data_manage/pitcher_panel.py
  2. 39 2
      data_manage/public_analysis.py
  3. 7 2
      handlers/PublicAnalysisHandler.py

+ 1 - 1
data_manage/pitcher_panel.py

@@ -543,7 +543,7 @@ left join src_book_info c on a.dt=c.dt and a.book=c.book  and a.type=c.type
                 round(sum(cost)/sum(new_follow_user),2) new_follow_per_cost,
                 sum(order_user) order_user,
                 sum(order_count) order_count,
-                round(sum(cost)/sum(order_count),2) order_user_per_cost,
+                round(sum(cost)/sum(order_user),2) order_user_per_cost,
                 round(avg(require_roi),4) require_roi,
                 round(avg(require_mult),2) require_mult,
                 round(sum(expect_profit),2) expect_profit

+ 39 - 2
data_manage/public_analysis.py

@@ -305,5 +305,42 @@ concat(sum(m5-m4),',',sum(m5-m4)/sum(if(dt>=SUBDATE(CURRENT_DATE,INTERVAL 148 da
 
 
 
-def pitcher_overview(start, end, page, page_size, order_by, order):
-    pass
+def pitcher_overview(start, end, pitcher, page, page_size, order_by, order):
+    op1 = f" and pitcher='{pitcher}' " if pitcher else ''
+    op2 = f" and dt>='{start}' " if start else ''
+    op3 = f" and dt<='{end}' " if end else ''
+    op4 = f" order by {order_by} {order}" if order_by and order else ''
+
+    db = MysqlUtils()
+
+    sql=f""" select pitcher,
+                DATE_FORMAT(min(dt),'%Y%m%d') start_date,
+                DATE_FORMAT(max(dt),'%Y%m%d') end_date,
+                sum(cost) cost,
+                sum(reg_amount) amount,
+                sum(first_order_amount) first_amount,
+                round(sum(reg_amount)/sum(cost),4) roi,
+                round(sum(first_order_amount)/sum(cost),4) first_roi,
+                round(sum(d7)/sum(cost),4) roi7,
+                round(sum(d30)/sum(cost),4) roi30,
+                sum(reg_amount-cost) profit,
+    round(sum(click_count)/sum(view_count),4) click_rate,
+    round(sum(follow_user)/sum(click_count),4) follow_rate,
+    round(sum(reg_order_user)/sum(click_count),4) order_rate,
+    round(sum(first_order_user)/sum(click_count),4) first_order_rate,
+    sum(view_count) view_count,
+    sum(click_count) click_count,
+    sum(follow_user) follow_user,
+    sum(reg_order_user) order_user,
+    sum(first_order_user) first_order_user,
+    round(sum(cost)/sum(follow_user),2) follow_cost,
+    round(sum(cost)/sum(reg_order_user),2) order_cost,
+    round(sum(cost)/sum(first_order_user),2) first_order_cost,
+    round(sum(reg_amount)/sum(reg_order_user),2) avg_amount,
+    sum(ba1) td_amount,
+    sum(ba2) yd_amount,
+    sum(ba3) byd_amount  
+    from dw_pitcher_trend where cost>0 {op1} {op2} {op3} group by pitcher {op4}
+    """
+
+    return getLimitData(db.dm, sql, page, page_size)

+ 7 - 2
handlers/PublicAnalysisHandler.py

@@ -79,8 +79,13 @@ class PitcherOverview(BaseHandler):
         page_size = arg.get("page_size")
         order_by = arg.get("order_by", 'cost')
         order = arg.get("order", 'desc')
-        data, total, total_data = pitcher_overview(start, end, page, page_size, order_by, order)
+        pitcher = arg.get("pitcher")
+        date_range = arg.get("date_range")
+        if date_range:
+            end = self.get_n_days(0)
+            start = self.get_n_days(-int(date_range)+1)
+        data, total = pitcher_overview(start, end, pitcher, page, page_size, order_by, order)
         if arg.get("download"):
             self.write_download('BookOver_'+str(int(time.time())), data)
 
-        self.write_json(data=data, total=total, total_data=total_data)
+        self.write_json(data=data, total=total)