ck 4 jaren geleden
bovenliggende
commit
2b492085f9
2 gewijzigde bestanden met toevoegingen van 237 en 9 verwijderingen
  1. 234 6
      data_manage/pitcher_panel.py
  2. 3 3
      handlers/PitcherPanelHandler.py

+ 234 - 6
data_manage/pitcher_panel.py

@@ -407,11 +407,238 @@ select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,
 def get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order):
     if get_channel_belong_pitcher(channel)!=pitcher:
         return [],0
-    sql=""
+    sql=f"""select '{channel}' channel,toString(dt) date,book,cost,reg_order_amount,roi,new_follow_user,new_follow_per_cost,order_user,order_count,
+       order_user_per_cost,
+       concat(toString(r1),',',toString(r1/cost),',', toString(a1/cost),',',toString(b1)),
+       concat(toString(r2),',',toString(r2/cost),',', toString(a2/cost),',',toString(b2)),
+ concat(toString(r3),',',toString(r3/cost),',', toString(a3/cost),',',toString(b3)),
+ concat(toString(r4),',',toString(r4/cost),',', toString(a4/cost),',',toString(b4)),
+ concat(toString(r5),',',toString(r5/cost),',', toString(a5/cost),',',toString(b5)),
+ concat(toString(r6),',',toString(r6/cost),',', toString(a6/cost),',',toString(b6)),
+ concat(toString(r7),',',toString(r7/cost),',', toString(a7/cost),',',toString(b7)),
+ concat(toString(r8),',',toString(r8/cost),',', toString(a8/cost),',',toString(b8)),
+ concat(toString(r9),',',toString(r9/cost),',', toString(a9/cost),',',toString(b9)),
+ concat(toString(r10),',',toString(r10/cost),',', toString(a10/cost),',',toString(b10)),
+ concat(toString(r11),',',toString(r11/cost),',', toString(a11/cost),',',toString(b11)),
+ concat(toString(r12),',',toString(r12/cost),',', toString(a12/cost),',',toString(b12)),
+ concat(toString(r13),',',toString(r13/cost),',', toString(a13/cost),',',toString(b13)),
+ concat(toString(r14),',',toString(r14/cost),',', toString(a14/cost),',',toString(b14)),
+ concat(toString(r15),',',toString(r15/cost),',', toString(a15/cost),',',toString(b15)),
+ concat(toString(r16),',',toString(r16/cost),',', toString(a16/cost),',',toString(b16)),
+ concat(toString(r17),',',toString(r17/cost),',', toString(a17/cost),',',toString(b17)),
+ concat(toString(r18),',',toString(r18/cost),',', toString(a18/cost),',',toString(b18)),
+ concat(toString(r19),',',toString(r19/cost),',', toString(a19/cost),',',toString(b19)),
+ concat(toString(r20),',',toString(r20/cost),',', toString(a20/cost),',',toString(b20)),
+ concat(toString(r21),',',toString(r21/cost),',', toString(a21/cost),',',toString(b21)),
+ concat(toString(r22),',',toString(r22/cost),',', toString(a22/cost),',',toString(b22)),
+ concat(toString(r23),',',toString(r23/cost),',', toString(a23/cost),',',toString(b23)),
+ concat(toString(r24),',',toString(r24/cost),',', toString(a24/cost),',',toString(b24)),
+ concat(toString(r25),',',toString(r25/cost),',', toString(a25/cost),',',toString(b25)),
+ concat(toString(r26),',',toString(r26/cost),',', toString(a26/cost),',',toString(b26)),
+ concat(toString(r27),',',toString(r27/cost),',', toString(a27/cost),',',toString(b27)),
+ concat(toString(r28),',',toString(r28/cost),',', toString(a28/cost),',',toString(b28)),
+ concat(toString(r29),',',toString(r29/cost),',', toString(a29/cost),',',toString(b29)),
+ concat(toString(r30),',',toString(r30/cost),',', toString(a30/cost),',',toString(b30)),
+ concat(toString(r31),',',toString(r31/cost),',', toString(a31/cost),',',toString(b31)),
+ concat(toString(r32),',',toString(r32/cost),',', toString(a32/cost),',',toString(b32)),
+ concat(toString(r33),',',toString(r33/cost),',', toString(a33/cost),',',toString(b33)),
+ concat(toString(r34),',',toString(r34/cost),',', toString(a34/cost),',',toString(b34)),
+ concat(toString(r35),',',toString(r35/cost),',', toString(a35/cost),',',toString(b35)),
+ concat(toString(r36),',',toString(r36/cost),',', toString(a36/cost),',',toString(b36)),
+ concat(toString(r37),',',toString(r37/cost),',', toString(a37/cost),',',toString(b37)),
+ concat(toString(r38),',',toString(r38/cost),',', toString(a38/cost),',',toString(b38)),
+ concat(toString(r39),',',toString(r39/cost),',', toString(a39/cost),',',toString(b39)),
+ concat(toString(r40),',',toString(r40/cost),',', toString(a40/cost),',',toString(b40)),
+ concat(toString(r41),',',toString(r41/cost),',', toString(a41/cost),',',toString(b41)),
+ concat(toString(r42),',',toString(r42/cost),',', toString(a42/cost),',',toString(b42)),
+ concat(toString(r43),',',toString(r43/cost),',', toString(a43/cost),',',toString(b43)),
+ concat(toString(r44),',',toString(r44/cost),',', toString(a44/cost),',',toString(b44)),
+ concat(toString(r45),',',toString(r45/cost),',', toString(a45/cost),',',toString(b45)),
+ concat(toString(r46),',',toString(r46/cost),',', toString(a46/cost),',',toString(b46)),
+ concat(toString(r47),',',toString(r47/cost),',', toString(a47/cost),',',toString(b47)),
+ concat(toString(r48),',',toString(r48/cost),',', toString(a48/cost),',',toString(b48)),
+ concat(toString(r49),',',toString(r49/cost),',', toString(a49/cost),',',toString(b49)),
+ concat(toString(r50),',',toString(r50/cost),',', toString(a50/cost),',',toString(b50)),
+ concat(toString(r51),',',toString(r51/cost),',', toString(a51/cost),',',toString(b51)),
+ concat(toString(r52),',',toString(r52/cost),',', toString(a52/cost),',',toString(b52)),
+ concat(toString(r53),',',toString(r53/cost),',', toString(a53/cost),',',toString(b53)),
+ concat(toString(r54),',',toString(r54/cost),',', toString(a54/cost),',',toString(b54)),
+ concat(toString(r55),',',toString(r55/cost),',', toString(a55/cost),',',toString(b55)),
+ concat(toString(r56),',',toString(r56/cost),',', toString(a56/cost),',',toString(b56)),
+ concat(toString(r57),',',toString(r57/cost),',', toString(a57/cost),',',toString(b57)),
+ concat(toString(r58),',',toString(r58/cost),',', toString(a58/cost),',',toString(b58)),
+ concat(toString(r59),',',toString(r59/cost),',', toString(a59/cost),',',toString(b59)),
+ concat(toString(r60),',',toString(r60/cost),',', toString(a60/cost),',',toString(b60)),
+concat(toString(r120),',',toString(r120/cost),',', toString(a120/cost),',',toString(b120)),
+       concat(toString(r150),',',toString(r150/cost),',', toString(a150/cost),',',toString(b150))
+from
+              (
+select dt,book,cost,reg_order_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
+       from dw_daily_channel where dt>='{start}' and dt<='{end}' and channel='{channel}' and cost>0) a
 
-    total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-    a=''
-    return a,total
+left outer join (
+select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,
+       sum(if(subtractDays(date, 1)>=reg_time,0,amount)) as r1,
+       sum(if(subtractDays(date, 2)>=reg_time,0,amount)) as r2,
+       sum(if(subtractDays(date, 3)>=reg_time,0,amount)) as r3,
+       sum(if(subtractDays(date, 4)>=reg_time,0,amount)) as r4,
+       sum(if(subtractDays(date, 5)>=reg_time,0,amount)) as r5,
+       sum(if(subtractDays(date, 6)>=reg_time,0,amount)) as r6,
+       sum(if(subtractDays(date, 7)>=reg_time,0,amount)) as r7,
+       sum(if(subtractDays(date, 8)>=reg_time,0,amount)) as r8,
+       sum(if(subtractDays(date, 9)>=reg_time,0,amount)) as r9,
+       sum(if(subtractDays(date, 10)>=reg_time,0,amount)) as r10,
+       sum(if(subtractDays(date, 11)>=reg_time,0,amount)) as r11,
+       sum(if(subtractDays(date, 12)>=reg_time,0,amount)) as r12,
+       sum(if(subtractDays(date, 13)>=reg_time,0,amount)) as r13,
+       sum(if(subtractDays(date, 14)>=reg_time,0,amount)) as r14,
+       sum(if(subtractDays(date, 15)>=reg_time,0,amount)) as r15,
+       sum(if(subtractDays(date, 16)>=reg_time,0,amount)) as r16,
+       sum(if(subtractDays(date, 17)>=reg_time,0,amount)) as r17,
+       sum(if(subtractDays(date, 18)>=reg_time,0,amount)) as r18,
+       sum(if(subtractDays(date, 19)>=reg_time,0,amount)) as r19,
+       sum(if(subtractDays(date, 20)>=reg_time,0,amount)) as r20,
+       sum(if(subtractDays(date, 21)>=reg_time,0,amount)) as r21,
+       sum(if(subtractDays(date, 22)>=reg_time,0,amount)) as r22,
+       sum(if(subtractDays(date, 23)>=reg_time,0,amount)) as r23,
+       sum(if(subtractDays(date, 24)>=reg_time,0,amount)) as r24,
+       sum(if(subtractDays(date, 25)>=reg_time,0,amount)) as r25,
+       sum(if(subtractDays(date, 26)>=reg_time,0,amount)) as r26,
+       sum(if(subtractDays(date, 27)>=reg_time,0,amount)) as r27,
+       sum(if(subtractDays(date, 28)>=reg_time,0,amount)) as r28,
+       sum(if(subtractDays(date, 29)>=reg_time,0,amount)) as r29,
+       sum(if(subtractDays(date, 30)>=reg_time,0,amount)) as r30,
+       sum(if(subtractDays(date, 31)>=reg_time,0,amount)) as r31,
+       sum(if(subtractDays(date, 32)>=reg_time,0,amount)) as r32,
+       sum(if(subtractDays(date, 33)>=reg_time,0,amount)) as r33,
+       sum(if(subtractDays(date, 34)>=reg_time,0,amount)) as r34,
+       sum(if(subtractDays(date, 35)>=reg_time,0,amount)) as r35,
+       sum(if(subtractDays(date, 36)>=reg_time,0,amount)) as r36,
+       sum(if(subtractDays(date, 37)>=reg_time,0,amount)) as r37,
+       sum(if(subtractDays(date, 38)>=reg_time,0,amount)) as r38,
+       sum(if(subtractDays(date, 39)>=reg_time,0,amount)) as r39,
+       sum(if(subtractDays(date, 40)>=reg_time,0,amount)) as r40,
+       sum(if(subtractDays(date, 41)>=reg_time,0,amount)) as r41,
+       sum(if(subtractDays(date, 42)>=reg_time,0,amount)) as r42,
+       sum(if(subtractDays(date, 43)>=reg_time,0,amount)) as r43,
+       sum(if(subtractDays(date, 44)>=reg_time,0,amount)) as r44,
+       sum(if(subtractDays(date, 45)>=reg_time,0,amount)) as r45,
+       sum(if(subtractDays(date, 46)>=reg_time,0,amount)) as r46,
+       sum(if(subtractDays(date, 47)>=reg_time,0,amount)) as r47,
+       sum(if(subtractDays(date, 48)>=reg_time,0,amount)) as r48,
+       sum(if(subtractDays(date, 49)>=reg_time,0,amount)) as r49,
+       sum(if(subtractDays(date, 50)>=reg_time,0,amount)) as r50,
+       sum(if(subtractDays(date, 51)>=reg_time,0,amount)) as r51,
+       sum(if(subtractDays(date, 52)>=reg_time,0,amount)) as r52,
+       sum(if(subtractDays(date, 53)>=reg_time,0,amount)) as r53,
+       sum(if(subtractDays(date, 54)>=reg_time,0,amount)) as r54,
+       sum(if(subtractDays(date, 55)>=reg_time,0,amount)) as r55,
+       sum(if(subtractDays(date, 56)>=reg_time,0,amount)) as r56,
+       sum(if(subtractDays(date, 57)>=reg_time,0,amount)) as r57,
+       sum(if(subtractDays(date, 58)>=reg_time,0,amount)) as r58,
+       sum(if(subtractDays(date, 59)>=reg_time,0,amount)) as r59,
+       sum(if(subtractDays(date, 60)>=reg_time,0,amount)) as r60,
+       sum(if(subtractDays(date, 90)>=reg_time,0,amount)) as r90,
+       sum(if(subtractDays(date, 120)>=reg_time,0,amount)) as r120,
+       sum(if(subtractDays(date, 150)>=reg_time,0,amount)) as r150,
+       0 a1,1 b1,
+       r2-r1 a2,if(r1=0,0,r2/r1) b2,
+r3-r2 a3,if(r1=0,0,r3/r1) b3,
+r4-r3 a4,if(r1=0,0,r4/r1) b4,
+r5-r4 a5,if(r1=0,0,r5/r1) b5,
+r6-r5 a6,if(r1=0,0,r6/r1) b6,
+r7-r6 a7,if(r1=0,0,r7/r1) b7,
+r8-r7 a8,if(r1=0,0,r8/r1) b8,
+r9-r8 a9,if(r1=0,0,r9/r1) b9,
+r10-r9 a10,if(r1=0,0,r10/r1) b10,
+r11-r10 a11,if(r1=0,0,r11/r1) b11,
+r12-r11 a12,if(r1=0,0,r12/r1) b12,
+r13-r12 a13,if(r1=0,0,r13/r1) b13,
+r14-r13 a14,if(r1=0,0,r14/r1) b14,
+r15-r14 a15,if(r1=0,0,r15/r1) b15,
+r16-r15 a16,if(r1=0,0,r16/r1) b16,
+r17-r16 a17,if(r1=0,0,r17/r1) b17,
+r18-r17 a18,if(r1=0,0,r18/r1) b18,
+r19-r18 a19,if(r1=0,0,r19/r1) b19,
+r20-r19 a20,if(r1=0,0,r20/r1) b20,
+r21-r20 a21,if(r1=0,0,r21/r1) b21,
+r22-r21 a22,if(r1=0,0,r22/r1) b22,
+r23-r22 a23,if(r1=0,0,r23/r1) b23,
+r24-r23 a24,if(r1=0,0,r24/r1) b24,
+r25-r24 a25,if(r1=0,0,r25/r1) b25,
+r26-r25 a26,if(r1=0,0,r26/r1) b26,
+r27-r26 a27,if(r1=0,0,r27/r1) b27,
+r28-r27 a28,if(r1=0,0,r28/r1) b28,
+r29-r28 a29,if(r1=0,0,r29/r1) b29,
+r30-r29 a30,if(r1=0,0,r30/r1) b30,
+r31-r30 a31,if(r1=0,0,r31/r1) b31,
+r32-r31 a32,if(r1=0,0,r32/r1) b32,
+r33-r32 a33,if(r1=0,0,r33/r1) b33,
+r34-r33 a34,if(r1=0,0,r34/r1) b34,
+r35-r34 a35,if(r1=0,0,r35/r1) b35,
+r36-r35 a36,if(r1=0,0,r36/r1) b36,
+r37-r36 a37,if(r1=0,0,r37/r1) b37,
+r38-r37 a38,if(r1=0,0,r38/r1) b38,
+r39-r38 a39,if(r1=0,0,r39/r1) b39,
+r40-r39 a40,if(r1=0,0,r40/r1) b40,
+r41-r40 a41,if(r1=0,0,r41/r1) b41,
+r42-r41 a42,if(r1=0,0,r42/r1) b42,
+r43-r42 a43,if(r1=0,0,r43/r1) b43,
+r44-r43 a44,if(r1=0,0,r44/r1) b44,
+r45-r44 a45,if(r1=0,0,r45/r1) b45,
+r46-r45 a46,if(r1=0,0,r46/r1) b46,
+r47-r46 a47,if(r1=0,0,r47/r1) b47,
+r48-r47 a48,if(r1=0,0,r48/r1) b48,
+r49-r48 a49,if(r1=0,0,r49/r1) b49,
+r50-r49 a50,if(r1=0,0,r50/r1) b50,
+r51-r50 a51,if(r1=0,0,r51/r1) b51,
+r52-r51 a52,if(r1=0,0,r52/r1) b52,
+r53-r52 a53,if(r1=0,0,r53/r1) b53,
+r54-r53 a54,if(r1=0,0,r54/r1) b54,
+r55-r54 a55,if(r1=0,0,r55/r1) b55,
+r56-r55 a56,if(r1=0,0,r56/r1) b56,
+r57-r56 a57,if(r1=0,0,r57/r1) b57,
+r58-r57 a58,if(r1=0,0,r58/r1) b58,
+r59-r58 a59,if(r1=0,0,r59/r1) b59,
+r60-r59 a60,if(r1=0,0,r60/r1) b60,
+r120-r60 a120,if(r1=0,0,r120/r1) b120,
+r150-r120 a150,if(r1=0,0,r150/r1) b150
+from order where  channel='{channel}' and dt>='{start}' group by formatDateTime(reg_time,'%Y-%m-%d')
+    ) b on a.dt=b.dt
+"""
+    if start==end:
+        total=1
+    else:
+        total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
+        sql += f" order by {order_by} {order} limit {page},{page_size} "
+
+    data=get_round(ck.execute(sql))
+    # print(data)
+    def parse(str):
+        li=str.split(',')
+        li[0]=round(float(li[0]),2)
+        li[1]=round(float(li[1]),4)
+        li[2]=round(float(li[2]),4)
+        li[3]=round(float(li[3]),2)
+        return dict(zip(['order','roi','add','mult'],li))
+
+    for i in data:
+        for x,y in enumerate(i):
+            if x>=11:
+                i[x]=parse(y)
+    print(data)
+    key=['date','channel','book','cost','reg_amount','roi','new_follow_user','new_follow_per_cost','order_user','order_count',
+         'order_user_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','d31','d32','d33','d34','d35','d36','d37','d38',
+         'd39','d40','d41','d42','d43','d44','d45','d46','d47','d48','d49','d50','d51','d52','d53','d54','d55','d56','d57','d58','d59',
+         'd60','m3','m4','m5']
+
+    return get_dict_list(key,data),total
 
 def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
 
@@ -463,7 +690,8 @@ def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
 if __name__ == '__main__':
     # a=get_channel_overview('','','',1,10,'date','desc')
     # a=get_channel_summary('','')
-    a=get_channel_again_order_trend('龙鳞文学','2021-01-01','宋刚')
+    # a=get_channel_again_order_trend('龙鳞文学','2021-01-01','宋刚')
     # a=get_channel_active('玉龙书社','2020-09-15','2020-09-20',1,10,'date','desc')
-    # print(a)
+    a,b =get_channel_order_trend("玉龙书社",'王俊杰','2020-12-01','2020-12-12',1,5,'date','desc')
+    print(a,b)
     pass

+ 3 - 3
handlers/PitcherPanelHandler.py

@@ -78,7 +78,7 @@ class ChannelAgainOrderTrend(BaseHandler):
         print(args)
         pitcher=args.get("pitcher",'')
         channel = args.get("channel", '')
-        date = args.get("date",'')
+        date = args.get("date",du.get_n_days(-8))
         data=get_channel_again_order_trend(channel,date,pitcher)
         self.write_json(data)
 
@@ -110,8 +110,8 @@ class ChannelOrderTrend(BaseHandler):
         print(arg)
         pitcher=arg.get("pitcher",'')
         channel = arg.get("channel", '')
-        start = arg.get("start", '')
-        end = arg.get("start", '')
+        start = arg.get("start", du.get_n_days(-7))
+        end = arg.get("end", du.get_n_days(-1))
         date_range = arg.get("date_range", '')
         page = arg.get("page", '1')
         page_size = arg.get("page_size", '10')