Kaynağa Gözat

修复翻页问题

ck 4 yıl önce
ebeveyn
işleme
2387ff1efc

+ 21 - 17
data_manage/pitcher_panel.py

@@ -15,7 +15,6 @@ def get_channel_belong_pitcher(channel):
     di={}
     di={}
     for i in data:
     for i in data:
         di[i[1]]=i[0]
         di[i[1]]=i[0]
-
     return di.get(channel,'')
     return di.get(channel,'')
 
 
 
 
@@ -42,7 +41,7 @@ def get_pitcher_panel_channel(pitcher,channel,start,end,page,page_size,order_by,
         sql += f" and channel='{channel}' "
         sql += f" and channel='{channel}' "
 
 
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-    sql += f" order by {order_by} {order} limit {page},{page_size} "
+    sql += f" order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
 
 
     print(sql)
     print(sql)
     data=ck.execute(sql)
     data=ck.execute(sql)
@@ -73,7 +72,7 @@ def get_pitcher_panel_daily(pitcher, start, end, page, page_size, order_by, orde
     if pitcher != 'all':
     if pitcher != 'all':
         sql += f" and pitcher='{pitcher}' "
         sql += f" and pitcher='{pitcher}' "
 
 
-    sql += f" group by date,pitcher order by {order_by} {order} limit {page},{page_size} "
+    sql += f" group by date,pitcher order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
     print(sql)
     print(sql)
     data = ck.execute(sql)
     data = ck.execute(sql)
     total=ck.execute(f"select count(1) from ({sql}) a")[0][0]
     total=ck.execute(f"select count(1) from ({sql}) a")[0][0]
@@ -148,7 +147,7 @@ def get_channel_overview(channel,pitcher,start,end,page,page_size,order_by,order
     if pitcher!='':
     if pitcher!='':
         sql+=f" and pitcher='{pitcher}'"
         sql+=f" and pitcher='{pitcher}'"
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-    sql += f" order by {order_by} {order} limit {page},{page_size} "
+    sql += f" order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
     print(sql)
     print(sql)
 
 
     key=['channel','date','view_count','click_count','click_rate','follow_user','follow_rate','follow_per_cost','order_rate','order_per_cost','cost',
     key=['channel','date','view_count','click_count','click_rate','follow_user','follow_rate','follow_per_cost','order_rate','order_per_cost','cost',
@@ -159,8 +158,9 @@ def get_channel_overview(channel,pitcher,start,end,page,page_size,order_by,order
 
 
 
 
 def get_channel_again_order_trend(channel,date,pitcher):
 def get_channel_again_order_trend(channel,date,pitcher):
-    if get_channel_belong_pitcher(channel)!=pitcher:
-        return []
+
+    # if get_channel_belong_pitcher(channel)!=pitcher:
+    #     return []
 
 
     sql=f"""select toString(dt) date,
     sql=f"""select toString(dt) date,
        channel,book,
        channel,book,
@@ -177,9 +177,9 @@ def get_channel_again_order_trend(channel,date,pitcher):
 
 
         from dw_daily_channel where channel='{channel}' and dt='{date}'
         from dw_daily_channel where channel='{channel}' and dt='{date}'
        """
        """
-    print(sql)
+    # print(sql)
     data=ck.execute(sql)
     data=ck.execute(sql)
-    print(data)
+    # print(data)
     key1=['date','channel','book','cost','reg_amount','roi','new_follow','new_follow_per_cost',
     key1=['date','channel','book','cost','reg_amount','roi','new_follow','new_follow_per_cost',
          'reg_count','reg_user','cost_per_user','avg_order_amount','avg_again_order_rate','order_count']
          'reg_count','reg_user','cost_per_user','avg_order_amount','avg_again_order_rate','order_count']
     json1=get_dict_list(key1,get_round(data))[0]
     json1=get_dict_list(key1,get_round(data))[0]
@@ -201,7 +201,7 @@ def get_channel_again_order_trend(channel,date,pitcher):
             ) a group by date"""
             ) a group by date"""
 
 
     df=ck.execute(sql2)
     df=ck.execute(sql2)
-
+    print(df)
     # 补全
     # 补全
     xx=[i[0] for i in df]
     xx=[i[0] for i in df]
     for i in range(1,8):
     for i in range(1,8):
@@ -210,6 +210,7 @@ def get_channel_again_order_trend(channel,date,pitcher):
     # 排序
     # 排序
     import operator
     import operator
     df.sort(key=operator.itemgetter(0))
     df.sort(key=operator.itemgetter(0))
+    print(df)
 
 
     reg_user=json1["reg_user"]
     reg_user=json1["reg_user"]
     li=[]
     li=[]
@@ -274,6 +275,7 @@ def get_channel_again_order_trend(channel,date,pitcher):
         d['d7'] = d7
         d['d7'] = d7
 
 
         li.append(d)
         li.append(d)
+    print(li)
 
 
     json1['data']=li
     json1['data']=li
     print([json1])
     print([json1])
@@ -369,10 +371,11 @@ select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,
        count(distinct if(subtractDays(date, 30)>=reg_time,NULL,user_id)) reg_order_user30
        count(distinct if(subtractDays(date, 30)>=reg_time,NULL,user_id)) reg_order_user30
        from order where  channel='{channel}' and dt>='{start}' group by formatDateTime(reg_time,'%Y-%m-%d')) b on a.dt=b.dt 
        from order where  channel='{channel}' and dt>='{start}' group by formatDateTime(reg_time,'%Y-%m-%d')) b on a.dt=b.dt 
 """
 """
-    print(sql)
+
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
     total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-    sql+=f" order by {order_by} {order} limit {page},{page_size} "
+    sql+=f" order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
     data = ck.execute(sql)
     data = ck.execute(sql)
+    print(sql)
     print(data)
     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',
     key=['date','channel','book','cost','reg_amount','roi','new_follow_user','new_follow_per_cost','order_user','order_count','order_user_per_cost',
@@ -615,7 +618,7 @@ from order where  channel='{channel}' and dt>='{start}' group by formatDateTime(
         total=1
         total=1
     else:
     else:
         total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
         total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-        sql += f" order by {order_by} {order} limit {page},{page_size} "
+        sql += f" order by {order_by} {order} limit {(page-1)*page_size},{page_size} "
 
 
     data=get_round(ck.execute(sql))
     data=get_round(ck.execute(sql))
     # print(data)
     # print(data)
@@ -640,7 +643,7 @@ from order where  channel='{channel}' and dt>='{start}' group by formatDateTime(
 
 
     return get_dict_list(key,data),total
     return get_dict_list(key,data),total
 
 
-def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
+def get_channel_summary(channel,pitcher,page,page_size,order_by,order,state):
 
 
     pitcher_op=f" and pitcher='{pitcher}'" if pitcher!='' else ''
     pitcher_op=f" and pitcher='{pitcher}'" if pitcher!='' else ''
     channel_op=f" and channel='{channel}'" if channel!='' else ''
     channel_op=f" and channel='{channel}'" if channel!='' else ''
@@ -676,8 +679,9 @@ def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
     if channel!='':
     if channel!='':
         total=1
         total=1
     else:
     else:
+        sql+=f" having state='{state}' " if state!='' else ''
         total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
         total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
-        sql += f' order by {order_by} {order} limit {page},{page_size} '
+        sql += f' order by {order_by} {order} limit {(page-1)*page_size},{page_size} '
     print(sql)
     print(sql)
     key=['channel','state','location','start','end','total_cost','total_amount','profit','roi',
     key=['channel','state','location','start','end','total_cost','total_amount','profit','roi',
          'follow_user','follow_per_cost','order_user','order_tran_rate','order_tran_cost']
          'follow_user','follow_per_cost','order_user','order_tran_rate','order_tran_cost']
@@ -690,8 +694,8 @@ def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
 if __name__ == '__main__':
 if __name__ == '__main__':
     # a=get_channel_overview('','','',1,10,'date','desc')
     # a=get_channel_overview('','','',1,10,'date','desc')
     # a=get_channel_summary('','')
     # 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')
     # a=get_channel_active('玉龙书社','2020-09-15','2020-09-20',1,10,'date','desc')
-    a,b =get_channel_order_trend("玉龙书社",'王俊杰','2020-12-01','2020-12-12',1,5,'date','desc')
-    print(a,b)
+    # a,b =get_channel_order_trend("玉龙书社",'王俊杰','2020-12-01','2020-12-12',1,5,'date','desc')
+    print(a)
     pass
     pass

+ 4 - 2
handlers/PitcherPanelHandler.py

@@ -16,8 +16,9 @@ class PitcherPanelChannel(BaseHandler):
         date_range = args.get("date_range", '')
         date_range = args.get("date_range", '')
         page = args.get("page",'1')
         page = args.get("page",'1')
         page_size = args.get("page_size",'10')
         page_size = args.get("page_size",'10')
-        order_by=args.get("order_by",'date')
+        order_by=args.get("order_by",'date,dhannel')
         order=args.get("order", 'desc')
         order=args.get("order", 'desc')
+
         if date_range!='':
         if date_range!='':
             end=du.get_n_days(-1)
             end=du.get_n_days(-1)
             start=du.get_n_days(-int(date_range))
             start=du.get_n_days(-int(date_range))
@@ -134,7 +135,8 @@ class ChannelSummary(BaseHandler):
         page_size = arg.get("page_size", '10')
         page_size = arg.get("page_size", '10')
         order_by = arg.get("order_by", 'total_cost')
         order_by = arg.get("order_by", 'total_cost')
         order = arg.get("order", 'desc')
         order = arg.get("order", 'desc')
-        data,total=get_channel_summary(channel,pitcher,page,page_size,order_by,order)
+        state=arg.get("state",'')
+        data,total=get_channel_summary(channel,pitcher,page,page_size,order_by,order,state)
         self.write_json(data=data,total=total)
         self.write_json(data=data,total=total)
 
 
 
 

+ 4 - 3
model/CommonUtils.py

@@ -1,16 +1,17 @@
-
+import collections
 
 
 def get_dict_list(key,value_list):
 def get_dict_list(key,value_list):
-    """把一个列表的数据变成字典
+    """把一个列表的数据变成有序字典
     :param key []
     :param key []
     :param value_list [[]]
     :param value_list [[]]
     :return [{},{}]
     :return [{},{}]
     """
     """
     data_list=[]
     data_list=[]
     for i in value_list:
     for i in value_list:
-        data_list.append(dict(zip(key, i)))
+        data_list.append(collections.OrderedDict(zip(key, i)))
     return data_list
     return data_list
 
 
+
 def get_round(li):
 def get_round(li):
     """
     """
 
 

+ 8 - 8
urls.py

@@ -3,13 +3,13 @@ from handlers.ApiHandler import YgApiHandler
 
 
 
 
 urls = [
 urls = [
-    (r'/data/pitcher_panel/channel', PitcherPanelChannel),
-    (r'/data/pitcher_panel/daily', PitcherPanelDaily),
-    (r'/data/pitcher_panel/overview', PitcherPanelOverview),
-    (r'/api/get_yangguang_data',YgApiHandler),
-    (r'/data/channel_stat/overview',ChannelOverview),
-    (r'/data/channel_stat/again_order_trend',ChannelAgainOrderTrend),
-    (r'/data/channel_stat/active',ChannelActive),
-    (r'/data/channel_stat/order_trend',ChannelOrderTrend),
+    (r'/data/pitcher_panel/channel', PitcherPanelChannel),  # 公众号汇总
+    (r'/data/pitcher_panel/daily', PitcherPanelDaily),# 日期汇总
+    (r'/data/pitcher_panel/overview', PitcherPanelOverview), # 投手今天概况
+    (r'/api/get_yangguang_data',YgApiHandler), # 阳光订单回调接口
+    (r'/data/channel_stat/overview',ChannelOverview), # 公众号整体概况
+    (r'/data/channel_stat/again_order_trend',ChannelAgainOrderTrend), # 公众号复冲趋势
+    (r'/data/channel_stat/active',ChannelActive), # 公众号激活数据
+    (r'/data/channel_stat/order_trend',ChannelOrderTrend), # 公众号趋势
     (r'/data/channel_stat/channel',ChannelSummary)
     (r'/data/channel_stat/channel',ChannelSummary)
 ]
 ]