Explorar el Código

Merge branch 'dev'

ck hace 4 años
padre
commit
07a66fcbdc

+ 2 - 0
config/common_config.py

@@ -0,0 +1,2 @@
+
+super_auth = [1, 158]

+ 83 - 13
data_manage/operate.py

@@ -1,36 +1,39 @@
 from model.DateUtils import DateUtils
 from model.DataBaseUtils import *
-from model.log import logger
-from model.CommonUtils import *
+from config.common_config import super_auth
+import pandas as pd
 du = DateUtils()
 
 
 def user_channel(arg):
     db = MysqlUtils()
-    # 返回所有公众号
+    # 杩斿洖鎵€鏈夊叕浼楀彿
     sql = "select id,nick_name from t_mp_account where del_flag=0"
     return db.zx.getData_json(sql)
 
 
 def user_channel_group(arg):
     db = MysqlUtils()
+    di = db.zx.get_data_dict("select cast(id as char) ,nick_name from t_mp_account where del_flag=0")
     user_id = arg.get('user_id')
     if user_id:
-        # 该用户拥有的公众号组
-        sql = f"""SELECT id,name from channel_group where id in  
+        sql = f"""SELECT  id,name,channel_ids from channel_group where id in  
                (select channel_group_id from user_channel_group_auth where user_id={user_id})"""
-        return db.quchen_text.getData_json(sql)
-
-
     else:
-        # 返回所有公众号组
-        sql = "select id,name from channel_group"
-        return db.quchen_text.getData_json(sql)
+        # 涓嶄紶user_id 杩斿洖鎵€鏈夌粍
+        sql = "select id,name,channel_ids from channel_group"
+    data = db.quchen_text.getData_json(sql)
+    for i in data:
+        sr =''
+        for j in i['channel_ids'].split(','):
+            sr+=di[j]+','
+        i['channel_names']=sr
+    return data
 
 
 def user(arg):
     db = MysqlUtils()
-    # 返回所有用户
+    # 杩斿洖鎵€鏈夌敤鎴�
     sql = "SELECT user_id,nick_name from t_sys_user where del_flag=0 and status=0"
     return db.zx.getData_json(sql)
 
@@ -71,4 +74,71 @@ def group_auth_del(arg):
     if user_id and group_id:
         sql = f"delete from  user_channel_group_auth where user_id={user_id} and channel_group_id={group_id}"
         # print(sql)
-        db.quchen_text.execute(sql)
+        db.quchen_text.execute(sql)
+
+def get_channel(arg):
+    db = MysqlUtils()
+    user_id= arg.get('user_id')
+    name = arg.get('name')
+    if user_id in super_auth:
+        sql = f"select id,nick_name from t_mp_account where nick_name like '%{name}%' and del_flag=0"
+        return db.zx.getData_json(sql)
+
+
+    op = f" nick_name like '%{name}%'" if name else ''
+
+    sql = f"""select id,nick_name from t_mp_account where {op} and (oper_user_id in 
+         (select user_id from t_sys_user_group_relation where group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id})) or 
+         put_user_id in (select user_id from t_sys_user_group_relation where group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id})))"""
+    data1 = db.zx.getData_json(sql)
+
+    sql2 = f"""select GROUP_CONCAT(channel_ids) from user_channel_group_auth a
+                     left join channel_group b on a.channel_group_id=b.id
+                     where user_id={user_id}"""
+
+    data2 = db.quchen_text.getOne(sql2)
+
+    if data2:
+        data2_2 = tuple(data2.split(','))
+        sql3 = f"""select id,nick_name from t_mp_account where nick_name like '%{name}%' and id in {str(data2_2)}"""
+        data3 = db.zx.getData_json(sql3)
+    else:
+        data3 = []
+    return data1 + data3
+
+
+def get_pitcher(arg):
+    user_id = arg.get('user_id')
+
+    db = MysqlUtils()
+
+    if user_id in super_auth:
+           sql = """
+                select a.user_id,nick_name from t_sys_user a 
+                left join t_sys_user_role c on a.user_id =c.user_id 
+                               where a.del_flag=0 and c.role_id in (7,9) group by a.user_id,nick_name"""
+           return db.zx.getData_json(sql)
+
+
+    sql = f"""select  b.user_id,b.nick_name from t_sys_user_group_relation a
+               left join t_sys_user b on a.user_id =b.user_id 
+            left join t_sys_user_role c on b.user_id =c.user_id 
+               where c.role_id in (7,9) and  a.group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id}) 
+            group by b.user_id,b.nick_name
+            """
+
+    # print(db.zx.getData_json(sql))
+
+    return db.zx.getData_json(sql)
+
+
+def get_user_name_by_id(user_id):
+    db = MysqlUtils()
+    sql = "select nick_name from t_sys_user where user_id="+str(user_id)
+    return  db.zx.getOne(sql)
+
+
+if __name__ == '__main__':
+    # print(get_pitcher({'user_id':78}))
+    # print(get_user_name_by_id(78))
+    user_channel_group({})

+ 47 - 29
data_manage/pitcher_panel.py

@@ -2,7 +2,10 @@ from model.DateUtils import DateUtils
 from model.DataBaseUtils import *
 from model.log import logger
 from model.CommonUtils import *
+from model import UserAuthUtils
 du = DateUtils()
+from config.common_config import *
+from data_manage.operate import get_pitcher
 
 log = logger()
 
@@ -108,13 +111,17 @@ where 1=1 {op1}
     return db.dm.getData_json(sql)
 
 
-def get_channel_overview(channel,pitcher,stage,start,end,page,page_size,order_by,order):
+def get_channel_overview(user_id,channel,pitcher,stage,start,end,page,page_size,order_by,order):
     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)}"
+    if user_id in super_auth:
+        op = ''
     else:
-        op1 = ''
+        if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
+            return None, None, None
+        else:
+            op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+
+    op1 = f" and pitcher ='{pitcher}' "   if pitcher  else ''
     op2 = f" and channel='{channel}'" if channel else ''
     op3 = f" and dt>='{start}' " if start else ''
     op4 = f" and dt<='{end}' " if end else ''
@@ -150,7 +157,7 @@ def get_channel_overview(channel,pitcher,stage,start,end,page,page_size,order_by
         round(reg_order_amount/reg_order_user,2) user_per_amount, 
         round(follow_user/click_count,4) click_follow_rate, 
         round(reg_order_user/follow_user,4) follow_order_rate 
-from dw_channel where 1=1 {op1} {op2} {op3} {op4} {op6} {op5} """
+from dw_channel where 1=1 {op}  {op1} {op2} {op3} {op4} {op6} {op5} """
 
     print(sql)
     sumsql=f"""select '总计' date,
@@ -192,10 +199,9 @@ from ({sql}) a
     return getLimitSumData(db.dm,sql,sumsql,page,page_size)
 
 
-def get_channel_again_order_trend(channel,date,pitcher):
+def get_channel_again_order_trend(channel,date):
     ck = CkUtils()
-    # if get_channel_belong_pitcher(channel)!=pitcher:
-    #     return []
+
 
     sql=f"""select toString(dt) date,
        channel,book,pitcher,stage,
@@ -357,13 +363,16 @@ select
     return [json1]
 
 
-def get_channel_active(channel,pitcher,start,end,page,page_size,order_by,order):
+def get_channel_active(user_id,channel,pitcher,start,end,page,page_size,order_by,order):
     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)}"
+    if user_id in super_auth:
+        op = ''
     else:
-        op1 = ''
+        if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
+            return None, None, None
+        else:
+            op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+    op1 = f" and pitcher ='{pitcher}' " if pitcher else ''
     op2 = f" and channel='{channel}'" if channel else ''
     op3 = f" and dt>='{start}' " if start else ''
     op4 = f" and dt<='{end}' " if end else ''
@@ -415,7 +424,7 @@ 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 
+from (select * from dw_channel where cost>0 {op} {op1} {op2} {op3} {op4}) a 
 left join dw_channel_user_daily b using(dt,channel) {op5}
 """
 
@@ -436,13 +445,18 @@ left join dw_channel_user_daily b using(dt,channel) {op5}
 
     return data,total
 
-def get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order):
-    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)}"
+def get_channel_order_trend(user_id,channel,pitcher,start,end,page,page_size,order_by,order):
+    db = MysqlUtils()
+
+    if user_id in super_auth:
+        op = ''
     else:
-        op1 = ''
+        if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
+            return None, None, None
+        else:
+            op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+
+    op1 = f" and pitcher ='{pitcher}' " if pitcher else ''
     op2 = f" and channel='{channel}'" if channel else ''
     op3 = f" and dt>='{start}' " if start else ''
     op4 = f" and dt<='{end}' " if end else ''
@@ -527,7 +541,7 @@ concat(da60-da59 ,',' ,da60/cost ,',', (da60-da59)/cost ,',' ,da60/da1) d60,
 concat(dm3-da60 ,',' ,dm3/cost ,',', (dm3-da60)/cost ,',' ,dm3/da1) m3,
 concat(dm4-dm3 ,',' ,dm4/cost ,',', (dm4-dm3)/cost ,',' ,dm4/da1) m4,
 concat(dm5-dm4 ,',' ,dm5/cost ,',', (dm5-dm4)/cost ,',' ,dm5/da1) m5 
-from ( select * from  dw_channel where cost+reg_order_amount>0  {op1} {op2} {op3} {op4} ) a
+from ( select * from  dw_channel where cost+reg_order_amount>0  {op} {op1} {op2} {op3} {op4} ) a
 left join  dw_channel_amount_daily b on a.channel=b.channel and a.dt=b.dt 
 left join src_book_info c on a.dt=c.dt and a.book=c.book  and a.type=c.type and a.platform=c.platform
 
@@ -572,15 +586,19 @@ left join src_book_info c on a.dt=c.dt and a.book=c.book  and a.type=c.type and
     print(data)
     return data,total,total_data
 
-def get_channel_summary(channel,pitcher,page,page_size,order_by,order,state,location,start,end):
+def get_channel_summary(user_id,channel,pitcher,page,page_size,order_by,order,state,location,start,end):
     db=MysqlUtils()
 
-    op1=f" and a.channel='{channel}'" if channel else ''
-
-    if pitcher:
-        op2=f" and pitcher='{pitcher}'" if get_channels_from_user(pitcher).__len__()==0 else f" and a.channel in {get_channels_from_user(pitcher)}"
+    if user_id in super_auth:
+        op = ''
     else:
-        op2=''
+        if len(UserAuthUtils.get_auth_channel(user_id))==0:
+            return None,None,None
+        else:
+            op = f" and a.channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+
+    op1=f" and a.channel='{channel}'" if channel else ''
+    op2=f" and pitcher='{pitcher}'" if pitcher else ''
     op4=f" and location='{location}' " if location else ''
     op5=f" and state='{state}'" if state else ''
     op6=f" and a.dt>='{start}'" if start else ''
@@ -612,7 +630,7 @@ def get_channel_summary(channel,pitcher,page,page_size,order_by,order,state,loca
             
                from  dw_channel  a 
                 left join dw_channel_amount_daily_reverse b using (dt,channel)
-                where 1=1 {op1} {op2}  {op6} {op7} GROUP BY a.channel,type,pitcher,stage) x
+                where 1=1 {op} {op1} {op2}  {op6} {op7} GROUP BY a.channel,type,pitcher,stage) x
                 having 1=1  {op4} {op5}  ORDER BY {order_by} {order}
                 
                 

+ 43 - 8
data_manage/public_analysis.py

@@ -2,6 +2,9 @@ from model.DateUtils import DateUtils
 from model.DataBaseUtils import *
 from model.log import logger
 from model.CommonUtils import *
+from data_manage.operate import get_pitcher,get_user_name_by_id
+from config.common_config import super_auth
+from model import UserAuthUtils
 du = DateUtils()
 log = logger()
 
@@ -305,7 +308,15 @@ concat(sum(m5-m4),',',sum(m5-m4)/sum(if(dt>=SUBDATE(CURRENT_DATE,INTERVAL 148 da
 
 
 
-def pitcher_overview(start, end, pitcher, page, page_size, order_by, order):
+def pitcher_overview(user_id,start, end, pitcher, page, page_size, order_by, order):
+    if user_id in super_auth:
+        op = ''
+    else:
+        user = tuple([i['nick_name'] for i in get_pitcher({'user_id': user_id})] + [get_user_name_by_id(user_id)])
+        if len(user) == 1:
+            op = f" and pitcher ='{user[0]}'"
+        else:
+            op = f" and pitcher in {str(user)}"
     op1 = f" and pitcher='{pitcher}' " if pitcher else ''
     op2 = f" and dt>='{start}' " if start else ''
     op3 = f" and dt<='{end}' " if end else ''
@@ -340,7 +351,7 @@ def pitcher_overview(start, end, pitcher, page, page_size, order_by, order):
     sum(ba1) td_amount,
     sum(ba2) yd_amount,
     sum(ba3) byd_amount,sum(d7) d7 ,sum(d30) d30  
-    from dw_pitcher_trend where cost>0 and pitcher!='' {op1} {op2} {op3} group by pitcher {op4}
+    from dw_pitcher_trend where cost>0 and pitcher!='' {op} {op1} {op2} {op3} group by pitcher {op4}
     """
 
     sum_sql=f"""select '总计' as pitcher,
@@ -375,7 +386,16 @@ def pitcher_overview(start, end, pitcher, page, page_size, order_by, order):
 
 
 
-def boss_panel_summary(start,end,pitcher, type, stage, page, page_size, order_by, order):
+def boss_panel_summary(user_id,start,end,pitcher, type, stage, page, page_size, order_by, order):
+
+    if user_id in super_auth:
+        op = ''
+    else:
+        if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
+            return None, None
+        else:
+            op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+
     op1 = f" and pitcher='{pitcher}' " if pitcher else ''
     op2 = f" and dt>='{start}' " if start else ''
     op3 = f" and dt<='{end}' " if end else ''
@@ -386,7 +406,7 @@ def boss_panel_summary(start,end,pitcher, type, stage, page, page_size, order_by
     dm = MysqlUtils().dm
 
     sql=f"""select sum(order_amount) order_amount,sum(cost) cost,dt from dw_channel                                                                                                                                                                                                                                                                                                                                             
-    where 1=1 {op1} {op2} {op3} {op4} {op5}
+    where 1=1 {op} {op1} {op2} {op3} {op4} {op5}
     GROUP BY dt HAVING order_amount+cost>0 {op6} """
     # print(sql)
 
@@ -413,17 +433,27 @@ def image_rank(start, end, type,book, page, page_size, order_by, order):
 
 
 """广告排行榜"""
-def advertisement_rank(start,end,type,page,page_size,order,order_by,book):
+def advertisement_rank(user_id,start,end,type,page,page_size,order,order_by,book,channel,pitcher):
+    if user_id in super_auth:
+        op1 = ''
+    else:
+        user = tuple([i['nick_name'] for i in get_pitcher({'user_id': user_id})] + [get_user_name_by_id(user_id)])
+        if len(user)==1:
+            op1 = f" and pitcher ='{user[0]}'"
+        else:
+            op1 = f" and pitcher in {str(user)}"
 
     op2=f" and dt>='{start}' " if start else ''
     op3=f" and dt<='{end}' " if end else ''
+    op4 = f" and channel='{channel}'" if channel else ''
+    op5 = f" and pitcher ='{pitcher}' " if pitcher else ''
     op8=f" and type='{type}'" if type else ''
     op9=f" order by {order_by} {order}" if order_by and order else ''
     op10=f" and book='{book}'" if book else ''
     db =MysqlUtils().dm
 
     sql=f"""select 
-    dt,stage,platform,book,`type`, cost,
+    dt,stage,platform,book,`type`, cost,channel,pitcher,
     view_count,
     click_count,
     follow_count,
@@ -441,8 +471,10 @@ def advertisement_rank(start,end,type,page,page_size,order,order_by,book):
     image_id,
     preview_url
     from dw_image_cost_day
-    where preview_url!=''  {op2} {op3} {op8} {op10} {op9}  
+    where preview_url!='' {op1} {op2} {op3} {op4} {op5} {op8} {op10} {op9}  
     """
+
+    print(sql)
     sum_sql = f"""select '总计' as pitcher,
                       sum(cost) cost,
                       sum(view_count) view_count,
@@ -459,4 +491,7 @@ def advertisement_rank(start,end,type,page,page_size,order,order_by,book):
                       round(sum(order_amount)/sum(cost),4) ROI
                       from ({sql}) a 
       """
-    return getLimitSumData(db,sql,sum_sql, page, page_size)
+    return getLimitSumData(db,sql,sum_sql, page, page_size)
+
+if __name__ == '__main__':
+    print(get_pitcher({"user_id":78}))

+ 3 - 1
handlers/OperateHandler.py

@@ -15,7 +15,9 @@ class ChannelGroupHandler(BaseHandler):
         "group_add": group_add,
         "group_del": group_del,
         "group_auth_add": group_auth_add,
-        "group_auth_del": group_auth_del
+        "group_auth_del": group_auth_del,
+        "get_channel" : get_channel,
+        "get_pitcher": get_pitcher
     }
 
 

+ 43 - 43
handlers/PitcherPanelHandler.py

@@ -4,6 +4,7 @@ from data_manage.pitcher_panel import *
 import time
 import pandas as pd
 import json
+from data_manage.operate import get_user_name_by_id
 log = logger()
 
 
@@ -38,16 +39,14 @@ class PitcherPanelDaily(BaseHandler):
         else:
             args=self.get_args()
             print(args)
-            pitcher = args.get("pitcher")
-            start = args.get("start")
+            user_id = args.get('user_id')
+            pitcher = args.get("pitcher",get_user_name_by_id(user_id))
+            start = args.get("start",self.get_n_days(-7))
             end = args.get("end")
             page = args.get("page")
             page_size = args.get("page_size")
             order_by = args.get("order_by", 'date')
             order = args.get("order", 'desc')
-            if 'date_range' in list(args.keys()):
-                end = self.get_n_days(0)
-                start = self.get_n_days(-int(args['date_range'])+1)
 
             data,total,total_data = get_pitcher_panel_daily(pitcher, start, end, page, page_size, order_by, order)
             self.write_json(data=data,total=total,total_data=total_data)
@@ -59,31 +58,31 @@ class PitcherPanelOverview(BaseHandler):
             self.write_fail(msg='auth error')
         else:
             args=self.get_args()
-            pitcher = args.get("pitcher")
+            user_id = args.get("user_id")
+            pitcher = args.get("pitcher",get_user_name_by_id(user_id))
             data = get_pitcher_panel_overview(pitcher)
             self.write_json(data)
 
 
 class ChannelOverview(BaseHandler):
     def post(self):
+        du =DateUtils()
         if not self._au:
             self.write_fail(msg='auth error')
         else:
             args=self.get_args()
             print(args)
+            user_id =args.get('user_id')
             channel=args.get("channel")
             pitcher=args.get("pitcher")
-            start=args.get("start")
+            start=args.get("start",self.thisday)
             end=args.get("end")
             stage=args.get("stage")
             page = args.get("page", 1)
             page_size = args.get("page_size", 10)
             order_by = args.get("order_by", 'date')
             order = args.get("order", 'desc')
-            if 'date_range' in list(args.keys()):
-                end = self.get_n_days(0)
-                start = self.get_n_days(-int(args['date_range'])+1)
-            data,total,total_data =get_channel_overview(channel,pitcher,stage,start,end,page,page_size,order_by,order)
+            data,total,total_data =get_channel_overview(user_id,channel,pitcher,stage,start,end,page,page_size,order_by,order)
             self.write_json(data=data,total=total,total_data=total_data)
 
 
@@ -94,12 +93,13 @@ class ChannelAgainOrderTrend(BaseHandler):
         else:
             args = self.get_args()
             print(args)
-            pitcher=args.get("pitcher",'')
-            channel = args.get("channel", '')
-            date = args.get("date",self.get_n_days(-8))
-            data=get_channel_again_order_trend(channel,date,pitcher)
-            self.write_json(data)
-
+            channel = args.get("channel")
+            date = args.get("date", self.get_n_days(-8))
+            if channel:
+                data=get_channel_again_order_trend(channel,date)
+                self.write_json(data)
+            else:
+                self.write_json([])
 
 
 class ChannelActive(BaseHandler):
@@ -109,18 +109,17 @@ class ChannelActive(BaseHandler):
         else:
             args = self.get_args()
             print(args)
+            user_id = args.get('user_id')
             pitcher=args.get("pitcher")
             channel = args.get("channel")
-            start = args.get("start",self.get_n_days(-29))
+            start = args.get("start",self.thisday)
             end = args.get("end")
             page = args.get("page", 1)
             page_size = args.get("page_size", 10)
             order_by = args.get("order_by", 'date')
             order = args.get("order", 'desc')
-            if 'date_range' in list(args.keys()):
-                end = self.get_n_days(0)
-                start = self.get_n_days(-int(args['date_range'])+1)
-            data,total=get_channel_active(channel,pitcher,start,end,page,page_size,order_by,order)
+
+            data,total=get_channel_active(user_id,channel,pitcher,start,end,page,page_size,order_by,order)
             self.write_json(data=data,total=total)
 
 
@@ -131,27 +130,28 @@ class ChannelOrderTrend(BaseHandler):
         else:
             arg = self.get_args()
             print(arg)
+            user_id =arg.get('user_id')
             pitcher=arg.get("pitcher")
             channel = arg.get("channel")
-            start = arg.get("start",self.get_n_days(-29))
+            start = arg.get("start",self.thisday)
             end = arg.get("end")
             page = arg.get("page", 1)
             page_size = arg.get("page_size", 10)
             order_by = arg.get("order_by", 'date')
             order = arg.get("order", 'desc')
-            if 'date_range' in list(arg.keys()):
-                end = self.get_n_days(0)
-                start = self.get_n_days(-int(arg['date_range'])+1)
-            data,total,total_data=get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order)
+
+            data,total,total_data=get_channel_order_trend(user_id,channel,pitcher,start,end,page,page_size,order_by,order)
             self.write_json(data=data,total=total,total_data=total_data)
 
 class ChannelSummary(BaseHandler):
     def post(self):
+
         if not self._au:
             self.write_fail(msg='auth error')
         else:
             arg = self.get_args()
             print(arg)
+            user_id = arg.get('user_id')
             channel = arg.get('channel')
             pitcher = arg.get('pitcher')
             page = arg.get("page")
@@ -160,9 +160,9 @@ class ChannelSummary(BaseHandler):
             order_by = arg.get("order_by", 'total_cost')
             order = arg.get("order", 'desc')
             state = arg.get("state")
-            start = arg.get("start")
+            start = arg.get("start",self.get_n_days(-7))
             end = arg.get("end")
-            data, total, total_data = get_channel_summary(channel, pitcher, page, page_size, order_by, order, state, location,start,end)
+            data, total, total_data = get_channel_summary(user_id,channel, pitcher, page, page_size, order_by, order, state, location,start,end)
             if arg.get("download"):
                 self.write_download("channel_"+str(int(time.time())), data)
             else:
@@ -175,20 +175,20 @@ class PitcherTrend(BaseHandler):
         else:
             arg = self.get_args()
             print(arg)
-            pitcher=arg.get('pitcher')
-            start=arg.get("start",self.get_n_days(-29))
-            end=arg.get("end")
-            date_range=arg.get("date_range")
-            page = arg.get("page")
-            page_size = arg.get("page_size")
-            order_by = arg.get("order_by", 'dt')
-            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,total_data=get_pitcher_trend(pitcher,start,end,page,page_size,order_by,order)
-            self.write_json(data=data,total=total,total_data=total_data)
+            user_id = arg.get('user_id')
+            if user_id:
+                pitcher=arg.get('pitcher',get_user_name_by_id(user_id))
+                start=arg.get("start",self.thisday)
+                end=arg.get("end")
+                page = arg.get("page")
+                page_size = arg.get("page_size")
+                order_by = arg.get("order_by", 'dt')
+                order = arg.get("order", 'desc')
+
+                data,total,total_data=get_pitcher_trend(pitcher,start,end,page,page_size,order_by,order)
+                self.write_json(data=data,total=total,total_data=total_data)
+            else:
+                self.write_fail(msg='user_id not found')
 
 
 

+ 26 - 26
handlers/PublicAnalysisHandler.py

@@ -3,6 +3,7 @@ from model.log import logger
 from data_manage.public_analysis import *
 import time
 from model.DateUtils import DateUtils
+from data_manage.operate import get_user_name_by_id
 log = logger()
 
 
@@ -86,22 +87,22 @@ class PitcherOverview(BaseHandler):
         else:
             arg = self.get_args()
             print(arg)
-            start = arg.get("start")
-            end = arg.get("end")
-            page = arg.get("page")
-            page_size = arg.get("page_size")
-            order_by = arg.get("order_by", 'cost')
-            order = arg.get("order", 'desc')
-            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)
+            user_id = arg.get('user_id')
+            if user_id:
+                start = arg.get("start")
+                end = arg.get("end")
+                page = arg.get("page")
+                page_size = arg.get("page_size")
+                order_by = arg.get("order_by", 'cost')
+                order = arg.get("order", 'desc')
+                pitcher = arg.get("pitcher")
+
+                data, total = pitcher_overview(user_id,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)
+            else:
+                self.write_fail(msg='user_id not found')
 
 
 class BossPanelSummary(BaseHandler):
@@ -112,23 +113,19 @@ class BossPanelSummary(BaseHandler):
 
             arg = self.get_args()
             print(arg)
-            start = arg.get("start")
+            user_id = arg.get("user_id")
+            start = arg.get("start",self.get_n_days(-30))
             end = arg.get("end")
             page = arg.get("page")
             page_size = arg.get("page_size")
             order_by = arg.get("order_by",'dt')
             order = arg.get("order",'desc')
             pitcher = arg.get("pitcher")
-            date_range = arg.get("date_range")
             type = arg.get("type")
             stage = arg.get("stage")
-            download = arg.get("download")
-            if date_range:
-                end = self.get_n_days(0)
-                start = self.get_n_days(-int(date_range) + 1)
 
-
-            data, total = boss_panel_summary(start, end, pitcher, type,
+            download = arg.get("download")
+            data, total = boss_panel_summary(user_id,start, end, pitcher, type,
                                              stage, page, page_size, order_by, order)
             if download:
                 self.write_download(str(int(time.time())), data)
@@ -154,7 +151,7 @@ class ImageRank(BaseHandler):
 
 
 
-"""广告排行榜"""
+"""素材排行榜"""
 class AdvertisementRank(BaseHandler):
     def post(self):
         if not self._au:
@@ -162,6 +159,7 @@ class AdvertisementRank(BaseHandler):
         else:
             du = DateUtils()
             arg = self.get_args()
+            user_id = arg.get('user_id')
             start = arg.get("start",du.getNow())
             end = arg.get("end")
             page = arg.get("page",1)
@@ -170,5 +168,7 @@ class AdvertisementRank(BaseHandler):
             order = arg.get("order", 'desc')
             type =arg.get("type")
             book =arg.get("book")
-            data, total,total_data = advertisement_rank(start, end, type,page,page_size,order,order_by,book)
+            channel =arg.get('channel')
+            pitcher = arg.get('pitcher')
+            data, total,total_data = advertisement_rank(user_id,start, end, type,page,page_size,order,order_by,book,channel,pitcher)
             self.write_json(data=data, total=total,total_data=total_data)

+ 6 - 1
model/DataBaseOperation.py

@@ -65,7 +65,12 @@ class MysqlOperation:
             li.append(list(i))
         return li
 
-
+    def get_data_dict(self,sql):
+        data =self.getData(sql)
+        di={}
+        for i in data:
+            di[i[0]]=i[1]
+        return di
 
     def execute(self, sql,args=None):
         start = time.time()

+ 4 - 2
model/DateUtils.py

@@ -13,6 +13,7 @@ class DateUtils:
         self.today = datetime.strptime(datetime.today().strftime("%Y-%m-%d"), "%Y-%m-%d")
         self.daydelta = timedelta(days=1)
         self.now = datetime.now()
+        self.thisday = datetime.now().strftime("%Y-%m-%d")
 
     def getDateLists(self, begin, end):
         """
@@ -269,5 +270,6 @@ if __name__ == "__main__":
     end = ut.now.strftime('%Y-%m') + '-01 00:00:00'
     # begin = ut.get_n_month_ago_begin(ut.now.strftime('%Y-%m'), 1) + '-01 00:00:00'
     # print(ut.get_n_pre_month_first_day(0))
-    ut.today = date(2018, 1, 1)
-    print(ut.month_first_day())
+    # ut.today = date(2018, 1, 1)
+    # print(ut.month_first_day())
+    print(ut.thisday)

+ 45 - 0
model/UserAuthUtils.py

@@ -0,0 +1,45 @@
+from model.DataBaseUtils import MysqlUtils
+
+
+
+
+def get_auth_user(user_id):
+    db = MysqlUtils()
+    sql = f"""select b.nick_name from t_sys_user_group_relation a
+            left join t_sys_user b USING(user_id)
+            where a.group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id})"""
+
+    return db.zx.getOneList(sql)
+
+
+
+def get_auth_channel(user_id):
+    db = MysqlUtils()
+    sql=f"""select nick_name from t_mp_account where 
+    oper_user_id in (select user_id from t_sys_user_group_relation where  group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id})) or 
+    put_user_id in (select user_id from t_sys_user_group_relation where group_id=(select id from t_sys_user_group where del_flag=0 and group_user_id={user_id})) or 
+    oper_user_id = {user_id} or put_user_id = {user_id}
+    
+"""
+    data1 = db.zx.getOneList(sql)
+
+
+    sql2 = f"""select GROUP_CONCAT(channel_ids) from user_channel_group_auth a
+                left join channel_group b on a.channel_group_id=b.id
+                where user_id={user_id}"""
+    data2 = db.quchen_text.getOne(sql2)
+
+
+    if data2:
+        data2_2 = tuple(data2.split(','))
+        sql3 = f"""select nick_name from t_mp_account where id in {str(data2_2)}"""
+
+        data3= db.zx.getOneList(sql3)
+        # print(data3)
+    else:
+        data3 =[]
+    return tuple(data1+data3)
+
+
+if __name__ == '__main__':
+    print(get_auth_channel(109))

+ 2 - 2
urls.py

@@ -7,7 +7,7 @@ from handlers import OperateHandler
 
 
 urls = [
-    (r'/data/pitcher_panel/daily', PitcherPanelDaily),  # 日期汇总
+    (r'/data/pitcher_panel/daily', PitcherPanelDaily),  # 投手日期汇总
     (r'/data/pitcher_panel/overview', PitcherPanelOverview),  # 投手今天概况
     (r'/data/channel_stat/overview', ChannelOverview),  # 公众号广告投放数据
     (r'/data/channel_stat/again_order_trend', ChannelAgainOrderTrend),  # 公众号复冲趋势
@@ -44,7 +44,7 @@ urls = [
     (r'/api/git_hook/qc_web', QcWebHook),
 
     # 广告排行榜
-    (r'/data/advertisement/ad_rank',AdvertisementRank),  # 广告点击数
+    (r'/data/advertisement/ad_rank',AdvertisementRank),  # 素材消耗排行
 
     # CRUD
     (r'/operate/channel_group.*', OperateHandler.ChannelGroupHandler),  # 公众号分组设置