ck 4 gadi atpakaļ
vecāks
revīzija
38b083b959

+ 9 - 9
data_manage/pitcher_panel.py

@@ -369,15 +369,15 @@ def get_channel_active(channel,pitcher,start,end,page,page_size,order_by,order):
 
 
     sql=f""" 
-select channel,dt date,book,stage,cost,
-reg_order_amount reg_amount,
-dc7,dc30,
-round(reg_order_amount/cost,4) roi,
-follow_user new_follow_user,
-round(cost/follow_user,2) new_follow_per_cost,
-reg_order_user order_user,
-reg_order_count order_count,
-round(cost/reg_order_user,2) order_user_per_cost,
+     select channel,dt date,book,stage,cost,
+    reg_order_amount reg_amount,
+    dc7,dc30,
+    round(reg_order_amount/cost,4) roi,
+    follow_user new_follow_user,
+    round(cost/follow_user,2) new_follow_per_cost,
+    reg_order_user order_user,
+    reg_order_count order_count,
+    round(cost/reg_order_user,2) order_user_per_cost,   
 round(dc7/follow_user,4) day7_avg_act_rate,
 round(cost/dc7,2) day7_avg_act_per_cost,
 round(dc30/follow_user,4) day30_avg_act_rate,

+ 39 - 0
data_manage/public_analysis.py

@@ -0,0 +1,39 @@
+from model.DateUtils import DateUtils
+from model.DataBaseUtils import *
+from model.log import logger
+from model.CommonUtils import *
+du = DateUtils()
+log = logger()
+
+def book_rank(start,end,book,page,page_size,order_by,order):
+    db=MysqlUtils()
+    op1=f" and book='{book}'" if book 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 ''
+
+    sql=f"""select 
+concat(DATE_FORMAT(min(dt),'%Y%m%d') ,'~',DATE_FORMAT(max(dt),'%Y%m%d')) date,
+pitcher,book,
+sum(cost) cost,
+sum(view_count) view_count,
+sum(click_count) click_count,
+round(sum(click_count)/sum(view_count),4) click_rate,
+round(sum(cost)*1000/sum(view_count),2) thousand_view_cost,
+sum(reg_order_user) reg_user,
+sum(reg_order_count) reg_count,
+sum(first_order_amount) first_amount,
+sum(reg_order_amount) reg_amount,
+round(sum(first_order_amount)/sum(cost),4) frist_roi,
+round(sum(reg_order_amount)/sum(cost),4) roi
+from dw_channel where 1=1 {op1} {op2} {op3} GROUP BY channel,book,pitcher
+ {op4}"""
+    print(sql)
+    return getLimitData(db.dm,sql,page,page_size)
+
+
+
+
+
+
+

+ 23 - 0
handlers/PublicAnalysisHandler.py

@@ -0,0 +1,23 @@
+from handlers.HandlerBase import BaseHandler
+from model.log import logger
+from data_manage.public_analysis import *
+log = logger()
+
+
+class BookRank(BaseHandler):
+    def post(self):
+        arg = self.get_args()
+        print(arg)
+        start=arg.get("start",du.get_n_days(0))
+        end=arg.get("end",du.get_n_days(0))
+        date_range=arg.get("date_range")
+        book=arg.get("book")
+        page = arg.get("page")
+        page_size = arg.get("page_size")
+        order_by = arg.get("order_by", 'cost')
+        order = arg.get("order", 'desc')
+        if date_range:
+            end=du.get_n_days(0)
+            start=du.get_n_days(-int(date_range)+1)
+        data,total=book_rank(start,end,book,page,page_size,order_by,order)
+        self.write_json(data=data,total=total)

+ 6 - 0
urls.py

@@ -1,6 +1,8 @@
 from handlers.PitcherPanelHandler import*
 from handlers.ApiHandler import YgApiHandler
 from handlers.GitHookHandler import *
+from handlers.PublicAnalysisHandler import *
+
 
 
 urls = [
@@ -14,6 +16,10 @@ urls = [
     (r'/data/channel_stat/channel',ChannelSummary), # 公众号总数据
     (r'/data/pitcher/trend',PitcherTrend), # 投手个人付费趋势
 
+    # 公共分析
+    (r'/data/book/rank',BookRank), # 今日消耗排行
+
+
     # 外部接口
     (r'/api/get_yangguang_data', YgApiHandler),  # 阳光订单回调接口