ck před 4 roky
rodič
revize
3378cee372
2 změnil soubory, kde provedl 75 přidání a 128 odebrání
  1. 71 124
      data_manage/pitcher_panel.py
  2. 4 4
      handlers/PitcherPanelHandler.py

+ 71 - 124
data_manage/pitcher_panel.py

@@ -356,135 +356,83 @@ select
 
 
 def get_channel_active(channel,pitcher,start,end,page,page_size,order_by,order):
-    ck = CkUtils()
-    channel_op=f" and channel='{channel}' " if channel!='' else ''
-    if pitcher != '赞象 admin':
-        if get_channels_from_user(pitcher).__len__() == 0:
-            pitcher_op = f"  and pitcher='{pitcher}'"
-        else:
-            pitcher_op = f" and channel in {get_channels_from_user(pitcher)}"
-
-    sql=f"""select stage,pitcher,formatDateTime(a.dt,'%Y-%m-%d') date,channel,book,toDecimal32(cost,2),toDecimal32(reg_amount,2),roi,new_follow_user,toDecimal32(new_follow_per_cost,2),order_user,order_count,
-       toDecimal32(order_user_per_cost,2),day7_avg_act_rate,toDecimal32(day7_avg_act_per_cost,2),day30_avg_act_rate,toDecimal32(ay30_avg_act_cost,2),
-       toDecimal32(act_per_cost,2),
-       concat(toString(reg_order_user1),',',toString(if(reg_order_user1=0,0,cost/reg_order_user1)),',',toString(if(order_user=0,0,reg_order_user1/order_user))),
-       concat(toString(reg_order_user2-reg_order_user1),',',toString(if(reg_order_user2=0,0,cost/reg_order_user2)),',',toString(if(order_user=0,0,(reg_order_user2-reg_order_user1)/order_user))),
-       concat(toString(reg_order_user3-reg_order_user2),',',toString(if(reg_order_user3=0,0,cost/reg_order_user3)),',',toString(if(order_user=0,0,(reg_order_user3-reg_order_user2)/order_user))),
-       concat(toString(reg_order_user4-reg_order_user3),',',toString(if(reg_order_user4=0,0,cost/reg_order_user4)),',',toString(if(order_user=0,0,(reg_order_user4-reg_order_user3)/order_user))),
-       concat(toString(reg_order_user5-reg_order_user4),',',toString(if(reg_order_user5=0,0,cost/reg_order_user5)),',',toString(if(order_user=0,0,(reg_order_user5-reg_order_user4)/order_user))),
-       concat(toString(reg_order_user6-reg_order_user5),',',toString(if(reg_order_user6=0,0,cost/reg_order_user6)),',',toString(if(order_user=0,0,(reg_order_user6-reg_order_user5)/order_user))),
-       concat(toString(reg_order_user7-reg_order_user6),',',toString(if(reg_order_user7=0,0,cost/reg_order_user7)),',',toString(if(order_user=0,0,(reg_order_user7-reg_order_user6)/order_user))),
-       concat(toString(reg_order_user8-reg_order_user7),',',toString(if(reg_order_user8=0,0,cost/reg_order_user8)),',',toString(if(order_user=0,0,(reg_order_user8-reg_order_user7)/order_user))),
-       concat(toString(reg_order_user9-reg_order_user8),',',toString(if(reg_order_user9=0,0,cost/reg_order_user9)),',',toString(if(order_user=0,0,(reg_order_user9-reg_order_user8)/order_user))),
-       concat(toString(reg_order_user10-reg_order_user9),',',toString(if(reg_order_user10=0,0,cost/reg_order_user10)),',',toString(if(order_user=0,0,(reg_order_user10-reg_order_user9)/order_user))),
-       concat(toString(reg_order_user11-reg_order_user10),',',toString(if(reg_order_user11=0,0,cost/reg_order_user11)),',',toString(if(order_user=0,0,(reg_order_user11-reg_order_user10)/order_user))),
-       concat(toString(reg_order_user12-reg_order_user11),',',toString(if(reg_order_user12=0,0,cost/reg_order_user12)),',',toString(if(order_user=0,0,(reg_order_user12-reg_order_user11)/order_user))),
-       concat(toString(reg_order_user13-reg_order_user12),',',toString(if(reg_order_user13=0,0,cost/reg_order_user13)),',',toString(if(order_user=0,0,(reg_order_user13-reg_order_user12)/order_user))),
-       concat(toString(reg_order_user14-reg_order_user13),',',toString(if(reg_order_user14=0,0,cost/reg_order_user14)),',',toString(if(order_user=0,0,(reg_order_user14-reg_order_user13)/order_user))),
-       concat(toString(reg_order_user15-reg_order_user14),',',toString(if(reg_order_user15=0,0,cost/reg_order_user15)),',',toString(if(order_user=0,0,(reg_order_user15-reg_order_user14)/order_user))),
-       concat(toString(reg_order_user16-reg_order_user15),',',toString(if(reg_order_user16=0,0,cost/reg_order_user16)),',',toString(if(order_user=0,0,(reg_order_user16-reg_order_user15)/order_user))),
-       concat(toString(reg_order_user17-reg_order_user16),',',toString(if(reg_order_user17=0,0,cost/reg_order_user17)),',',toString(if(order_user=0,0,(reg_order_user17-reg_order_user16)/order_user))),
-       concat(toString(reg_order_user18-reg_order_user17),',',toString(if(reg_order_user18=0,0,cost/reg_order_user18)),',',toString(if(order_user=0,0,(reg_order_user18-reg_order_user17)/order_user))),
-       concat(toString(reg_order_user19-reg_order_user18),',',toString(if(reg_order_user19=0,0,cost/reg_order_user19)),',',toString(if(order_user=0,0,(reg_order_user19-reg_order_user18)/order_user))),
-       concat(toString(reg_order_user20-reg_order_user19),',',toString(if(reg_order_user20=0,0,cost/reg_order_user20)),',',toString(if(order_user=0,0,(reg_order_user20-reg_order_user19)/order_user))),
-       concat(toString(reg_order_user21-reg_order_user20),',',toString(if(reg_order_user21=0,0,cost/reg_order_user21)),',',toString(if(order_user=0,0,(reg_order_user21-reg_order_user20)/order_user))),
-       concat(toString(reg_order_user22-reg_order_user21),',',toString(if(reg_order_user22=0,0,cost/reg_order_user22)),',',toString(if(order_user=0,0,(reg_order_user22-reg_order_user21)/order_user))),
-       concat(toString(reg_order_user23-reg_order_user22),',',toString(if(reg_order_user23=0,0,cost/reg_order_user23)),',',toString(if(order_user=0,0,(reg_order_user23-reg_order_user22)/order_user))),
-       concat(toString(reg_order_user24-reg_order_user23),',',toString(if(reg_order_user24=0,0,cost/reg_order_user24)),',',toString(if(order_user=0,0,(reg_order_user24-reg_order_user23)/order_user))),
-       concat(toString(reg_order_user25-reg_order_user24),',',toString(if(reg_order_user25=0,0,cost/reg_order_user25)),',',toString(if(order_user=0,0,(reg_order_user25-reg_order_user24)/order_user))),
-       concat(toString(reg_order_user26-reg_order_user25),',',toString(if(reg_order_user26=0,0,cost/reg_order_user26)),',',toString(if(order_user=0,0,(reg_order_user26-reg_order_user25)/order_user))),
-       concat(toString(reg_order_user27-reg_order_user26),',',toString(if(reg_order_user27=0,0,cost/reg_order_user27)),',',toString(if(order_user=0,0,(reg_order_user27-reg_order_user26)/order_user))),
-       concat(toString(reg_order_user28-reg_order_user27),',',toString(if(reg_order_user28=0,0,cost/reg_order_user28)),',',toString(if(order_user=0,0,(reg_order_user28-reg_order_user27)/order_user))),
-       concat(toString(reg_order_user29-reg_order_user28),',',toString(if(reg_order_user29=0,0,cost/reg_order_user29)),',',toString(if(order_user=0,0,(reg_order_user29-reg_order_user28)/order_user))),
-       concat(toString(reg_order_user30-reg_order_user29),',',toString(if(reg_order_user30=0,0,cost/reg_order_user30)),',',toString(if(order_user=0,0,(reg_order_user30-reg_order_user29)/order_user)))
-
-       from (
-
-select dt,book,cost,pitcher,channel,stage,
-       reg_order_amount reg_amount,
-       if(cost=0,0,reg_order_amount/cost) roi,
-       follow_user new_follow_user,
-       if(follow_user=0,0,cost/follow_user) new_follow_per_cost,
-       reg_order_user order_user,
-       reg_order_count order_count,
-       if(reg_order_user=0,0,cost/reg_order_user) order_user_per_cost,
-       if(follow_user=0,0,reg_order_user7/follow_user) day7_avg_act_rate ,
-       if(reg_order_user7=0,0,cost/reg_order_user7) day7_avg_act_per_cost,
-       if(follow_user=0,0,reg_order_user30/follow_user) day30_avg_act_rate,
-       if(reg_order_user30=0,0,cost/reg_order_user30) ay30_avg_act_cost,
-       if(reg_order_user=0,0,cost/reg_order_user) act_per_cost
-       from dw_daily_channel where 1=1 {channel_op}  and dt>='{start}' and dt<='{end}' {pitcher_op}) a
-left outer join (
-
-select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,channel,
-       count(distinct if(toDate(formatDateTime(reg_time,'%Y-%m-%d'))=date,user_id,NULL)) reg_order_user1,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),1)>=date,user_id,NULL)) reg_order_user2,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),2)>=date,user_id,NULL)) reg_order_user3,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),3)>=date,user_id,NULL)) reg_order_user4,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),4)>=date,user_id,NULL)) reg_order_user5,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),5)>=date,user_id,NULL)) reg_order_user6,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),6)>=date,user_id,NULL)) reg_order_user7,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),7)>=date,user_id,NULL)) reg_order_user8,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),8)>=date,user_id,NULL)) reg_order_user9,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),9)>=date,user_id,NULL)) reg_order_user10,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),10)>=date,user_id,NULL)) reg_order_user11,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),11)>=date,user_id,NULL)) reg_order_user12,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),12)>=date,user_id,NULL)) reg_order_user13,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),13)>=date,user_id,NULL)) reg_order_user14,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),14)>=date,user_id,NULL)) reg_order_user15,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),15)>=date,user_id,NULL)) reg_order_user16,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),16)>=date,user_id,NULL)) reg_order_user17,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),17)>=date,user_id,NULL)) reg_order_user18,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),18)>=date,user_id,NULL)) reg_order_user19,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),19)>=date,user_id,NULL)) reg_order_user20,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),20)>=date,user_id,NULL)) reg_order_user21,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),21)>=date,user_id,NULL)) reg_order_user22,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),22)>=date,user_id,NULL)) reg_order_user23,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),23)>=date,user_id,NULL)) reg_order_user24,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),24)>=date,user_id,NULL)) reg_order_user25,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),25)>=date,user_id,NULL)) reg_order_user26,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),26)>=date,user_id,NULL)) reg_order_user27,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),27)>=date,user_id,NULL)) reg_order_user28,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),28)>=date,user_id,NULL)) reg_order_user29,
-       count(distinct if(addDays(toDate(formatDateTime(reg_time,'%Y-%m-%d')),29)>=date,user_id,NULL)) reg_order_user30
-       from order where  1=1 {channel_op}  and dt>='{start}' group by formatDateTime(reg_time,'%Y-%m-%d'),channel ) b on a.dt=b.dt and a.channel=b.channel
-"""
-    print(sql)
-
-    total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-    sql+=f" order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
-    data = ck.execute(sql)
-    print(sql)
-    print(data)
+    db = MysqlUtils()
+    if pitcher:
+        op1 = f" and pitcher='{pitcher}'" if get_channels_from_user(
+            pitcher).__len__() == 0 else f" and channel in {get_channels_from_user(pitcher)}"
+    else:
+        op1 = ''
+    op2 = f" and channel='{channel}'" if channel else ''
+    op3 = f" and dt>='{start}' " if start else ''
+    op4 = f" and dt<='{end}' " if end else ''
+    op5 = f" order by {order_by} {order}" if order_by and order else ''
 
-    key=['stage','pitcher','date','channel','book','cost','reg_amount','roi','new_follow_user','new_follow_per_cost','order_user','order_count','order_user_per_cost',
-         'day7_avg_act_rate','day7_avg_act_per_cost','day30_avg_act_rate','day30_avg_act_cost','act_per_cost','d1','d2','d3','d4','d5','d6','d7','d8','d9','d10',
-         'd11','d12','d13','d14','d15','d16','d17','d18','d19','d20','d21','d22','d23','d24','d25','d26','d27','d28','d29','d30']
 
-    x=get_dict_list(key,get_round(data))
-    print(x)
-    li=[]
+    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,
+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,
+round(cost/dc30,2)   day30_avg_act_cost,
+round(cost/reg_order_user,2) act_per_cost,
+concat(dc1,',',cost/dc1,',',dc1/reg_order_user) d1,
+concat(dc2-dc1,',',cost/dc2,',',(dc2-dc1)/reg_order_user) d2,
+concat(dc3-dc2,',',cost/dc3,',',(dc3-dc2)/reg_order_user) d3,
+concat(dc4-dc3,',',cost/dc4,',',(dc4-dc3)/reg_order_user) d4,
+concat(dc5-dc4,',',cost/dc5,',',(dc5-dc4)/reg_order_user) d5,
+concat(dc6-dc5,',',cost/dc6,',',(dc6-dc5)/reg_order_user) d6,
+concat(dc7-dc6,',',cost/dc7,',',(dc7-dc6)/reg_order_user) d7,
+concat(dc8-dc7,',',cost/dc8,',',(dc8-dc7)/reg_order_user) d8,
+concat(dc9-dc8,',',cost/dc9,',',(dc9-dc8)/reg_order_user) d9,
+concat(dc10-dc9,',',cost/dc10,',',(dc10-dc9)/reg_order_user) d10,
+concat(dc11-dc10,',',cost/dc11,',',(dc11-dc10)/reg_order_user) d11,
+concat(dc12-dc11,',',cost/dc12,',',(dc12-dc11)/reg_order_user) d12,
+concat(dc13-dc12,',',cost/dc13,',',(dc13-dc12)/reg_order_user) d13,
+concat(dc14-dc13,',',cost/dc14,',',(dc14-dc13)/reg_order_user) d14,
+concat(dc15-dc14,',',cost/dc15,',',(dc15-dc14)/reg_order_user) d15,
+concat(dc16-dc15,',',cost/dc16,',',(dc16-dc15)/reg_order_user) d16,
+concat(dc17-dc16,',',cost/dc17,',',(dc17-dc16)/reg_order_user) d17,
+concat(dc18-dc17,',',cost/dc18,',',(dc18-dc17)/reg_order_user) d18,
+concat(dc19-dc18,',',cost/dc19,',',(dc19-dc18)/reg_order_user) d19,
+concat(dc20-dc19,',',cost/dc20,',',(dc20-dc19)/reg_order_user) d20,
+concat(dc21-dc20,',',cost/dc21,',',(dc21-dc20)/reg_order_user) d21,
+concat(dc22-dc21,',',cost/dc22,',',(dc22-dc21)/reg_order_user) d22,
+concat(dc23-dc22,',',cost/dc23,',',(dc23-dc22)/reg_order_user) d23,
+concat(dc24-dc23,',',cost/dc24,',',(dc24-dc23)/reg_order_user) d24,
+concat(dc25-dc24,',',cost/dc25,',',(dc25-dc24)/reg_order_user) d25,
+concat(dc26-dc25,',',cost/dc26,',',(dc26-dc25)/reg_order_user) d26,
+concat(dc27-dc26,',',cost/dc27,',',(dc27-dc26)/reg_order_user) d27,
+concat(dc28-dc27,',',cost/dc28,',',(dc28-dc27)/reg_order_user) d28,
+concat(dc29-dc28,',',cost/dc29,',',(dc29-dc28)/reg_order_user) d29,
+concat(dc30-dc29,',',cost/dc30,',',(dc30-dc29)/reg_order_user) d30 
+from (select * from dw_channel where cost>0  {op1} {op2} {op3} {op4}) a 
+left join dw_channel_user_daily b using(dt,channel) {op5}
+"""
 
-    for i in x:
-        di = {}
-        for j in i:
-            if j in ['d1','d2','d3','d4','d5','d6','d7','d8','d9','d10',
-         'd11','d12','d13','d14','d15','d16','d17','d18','d19','d20','d21','d22','d23','d24','d25','d26','d27','d28','d29','d30']:
-                if i[j]:
-                    k=i[j].split(",")
-                    k[0]=round(float(k[0]),0)
-                    k[1]=round(float(k[1]),2)
-                    k[2]=round(float(k[2]),4)
 
-                else:
-                    k=[0,0,0]
-                di[j] = dict(zip(['act_user', 'act_cost_per_cost', 'act_rate'], k))
+    data,total=getLimitData(db.dm,sql,page,page_size)
+    def parse(str):
+        li=str.split(',')
+        li[0]=round(float(li[0]),0)
+        li[1]=round(float(li[1]),2)
+        li[2]=round(float(li[2]),4)
+        return dict(zip(['act_user', 'act_cost_per_cost', 'act_rate'],li))
 
+    for i in data:
+        for x in i:
+            if x in ['d1','d2','d3','d4','d5','d6','d7','d8','d9','d10',
+         'd11','d12','d13','d14','d15','d16','d17','d18','d19','d20','d21','d22','d23','d24','d25','d26','d27','d28','d29','d30']:
+                i[x]=parse(i[x]) if i[x] is not None else {}
 
-            else:
-                di[j]=i[j]
-        li.append(di)
-    return li,total
+    return data,total
 
 def get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order):
     db=MysqlUtils()
@@ -614,7 +562,6 @@ left join  dw_channel_amount_daily b on a.channel=b.channel and a.dt=b.dt
          'd60','m3','m4','m5']:
                 i[x]=parse(i[x]) if i[x] is not None else {}
     print(data)
-
     return data,total,total_data
 
 def get_channel_summary(channel,pitcher,page,page_size,order_by,order,state,location,start,end):

+ 4 - 4
handlers/PitcherPanelHandler.py

@@ -86,10 +86,10 @@ class ChannelActive(BaseHandler):
     def post(self):
         args = self.get_args()
         print(args)
-        pitcher=args.get("pitcher",'')
-        channel = args.get("channel", '')
-        start = args.get("start", self.get_n_days(-7))
-        end = args.get("end", self.get_n_days(0))
+        pitcher=args.get("pitcher")
+        channel = args.get("channel")
+        start = args.get("start")
+        end = args.get("end")
         page = args.get("page", 1)
         page_size = args.get("page_size", 10)
         order_by = args.get("order_by", 'date')