cxyu 3 лет назад
Родитель
Сommit
f7fd0b8352

+ 1 - 1
ServerWrapper.py

@@ -25,7 +25,7 @@ class HttpServerWrapper(tornado.web.Application):
     def __init__(self, port=80,debug=True):
         self.port = port
         handlers = urls
-        #默认为开发环境,只有当dev输入时为生产环境
+        #  默认为开发环境,只有当dev输入时为生产环境
         auth = True if 'pro' in OptionParser().parse_command_line() and sys.argv[1] == '8008' else False
         if auth:
             print('生产环境,启动')

+ 35 - 41
data_manage/operate.py

@@ -1,7 +1,8 @@
+import requests
 from model.DateUtils import DateUtils
 from model.DataBaseUtils import *
 from model.UserAuthUtils import super_auth
-import pandas as pd
+
 du = DateUtils()
 
 
@@ -24,29 +25,28 @@ def user_channel_group(arg):
         sql = "select id,name,channel_ids from channel_group"
     data = db.quchen_text.getData_json(sql)
     for i in data:
-        sr =''
+        sr = ''
         for j in i['channel_ids'].split(','):
-            sr+=di[j]+','
-        i['channel_names']=sr
+            sr += di[j] + ','
+        i['channel_names'] = sr
     return data
 
 
 def user(arg):
+    # 在2021-9月之后不被前端使用
     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)
 
 
-
 def group_add(arg):
     db = MysqlUtils()
     name = arg.get("name")
     ids = arg.get("channel_ids")
     if name and ids:
-
         sql = "insert into channel_group (name,channel_ids)  values (%s,%s)"
-        db.quchen_text.execute(sql,(name,ids))
+        db.quchen_text.execute(sql, (name, ids))
 
 
 def group_del(arg):
@@ -58,7 +58,6 @@ def group_del(arg):
         db.quchen_text.execute(sql)
 
 
-
 def group_auth_add(arg):
     db = MysqlUtils()
     user_id = arg.get("user_id")
@@ -67,6 +66,7 @@ def group_auth_add(arg):
         sql = "insert into user_channel_group_auth (user_id,channel_group_id)  values (%s,%s)"
         db.quchen_text.execute(sql, (user_id, group_id))
 
+
 def group_auth_del(arg):
     db = MysqlUtils()
     user_id = arg.get("user_id")
@@ -76,26 +76,24 @@ def group_auth_del(arg):
         # print(sql)
         db.quchen_text.execute(sql)
 
+
 def get_channel(arg):
     db = MysqlUtils()
-    user_id= arg.get('user_id')
+    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}%'  and " if name !='' else ''
-    sql = f"""select id,nick_name from t_mp_account where {op} (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.getData_json(sql)
+    # 普通权限------java,获取本人对应拥有的公众号
+    rsp = requests.get(f'http://api.zanxiangnet.com/system/api/mp/mpAccount/subAccountWithUser/{user_id}')
+    channel_list = rsp.json()['data']
+    data1 = []
+    for _ in channel_list:
+        if name in _['nickName']:
+            data1.append({'id': _['id'], 'nick_name': _['nickName']})
 
     # # 加上配置的号
     sql2 = f"""select GROUP_CONCAT(channel_ids) from user_channel_group_auth a
@@ -116,36 +114,32 @@ def get_channel(arg):
 
 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)
+        user_list = []
+        url = 'http://api.zanxiangnet.com/erp/api/user/allPutUser'
+        rsp = requests.get(url)
+        for _ in rsp.json()['data']:
+            user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})
+        return user_list
 
+    user_list = []
+    rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/{user_id}')
+    for _ in rsp.json()['data']:
+        user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})
 
-    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)
+    return user_list
 
 
 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)
+    rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/{user_id}')
+    nick_name = None
+    for _ in rsp.json()['data']:
+        if str(_['userId']) == str(user_id):
+            nick_name = _['nickName']
+    return nick_name
 
 
 if __name__ == '__main__':
     # print(get_pitcher({'user_id':78}))
     # print(get_user_name_by_id(78))
-    user_channel_group({})
+    user_channel_group({})

+ 0 - 7
data_manage/pitcher_panel.py

@@ -24,12 +24,6 @@ log = logger()
 """根据名字获取其归属的公众号"""
 
 
-def get_channels_from_user(user):
-    sql = f"""SELECT a.nick_name FROM t_mp_account a 
-            left join t_sys_user b on a.oper_user_id=b.user_id where b.nick_name='{user}'"""
-    return tuple(MysqlUtils().zx.getOneList(sql))
-
-
 def get_pitcher_panel_channel(pitcher, channel, start, end, page, page_size, order_by, order):
     db = MysqlUtils()
     op1 = f" and pitcher='{pitcher}'" if pitcher else ''
@@ -126,7 +120,6 @@ def get_channel_overview(user_id, channel, pitcher, stage, book, start, end, pag
             op = f" and channel = '{UserAuthUtils.get_auth_channel(user_id)[0]}'"
         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 ''

+ 21 - 6
data_manage/public_analysis.py

@@ -528,7 +528,8 @@ def image_rank(start, end, type, book, page, page_size, order_by, order):
 
 
 def advertisement_rank(user_id, start, end, type, page, page_size, order, order_by, book, channel, pitcher, has_order,
-                       is_video):
+                       is_video, show_type):
+    # TODO:修改为clickhouse来进行数据访问
     if user_id in super_auth():
         op1 = ''
     else:
@@ -538,18 +539,27 @@ def advertisement_rank(user_id, start, end, type, page, page_size, order, order_
         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 ''
     op11 = f" and order_count>0" if has_order else ''
     op12 = f" and is_video" if is_video else ''
+    # 公共数据,和素材库一样,个人只显示个人(小组)数据
+    # TODO:之后op_or1 变化为owner来限制,------dw_image_cost_day 生成时就根据dt,cost来归类owner
+    op_or1 = f' or (dt<date_add(now(),interval -5 day) or cost>5000) ' if show_type == 'public' else ''
+    op_order = f" order by {order_by} {order}" if order_by and order else ''
+
+    # 时间为基底限制,必须遵守
+    op_time_bigger = f" and dt>='{start}' " if start else ''
+    op_time_small = f" and dt<='{end}' " if end else ''
+
     db = MysqlUtils().dm
 
-    sql = f"""select 
+    ck = CkUtils()
+
+    sql = f"""
+    select 
     row_number () over() as id,
     dt,stage,platform,book,`type`, cost,channel,pitcher,
     view_count,
@@ -569,9 +579,13 @@ def advertisement_rank(user_id, start, end, type, page, page_size, order, order_
     description,
     image_id,
     is_video,
+    use_times,
     preview_url
     from dw_image_cost_day
-    where replace (preview_url,' ,','') !='' {op1} {op2} {op3} {op4} {op5} {op8} {op10} {op11}  {op12} {op9} 
+    where replace (preview_url,' ,','') !='' 
+    and (1=1 {op1}  {op4} {op5} {op8} {op10} {op11}  {op12}  {op_or1}) 
+    {op_time_bigger} {op_time_small} 
+     {op_order} 
     """
 
     print(sql)
@@ -589,6 +603,7 @@ def advertisement_rank(user_id, start, end, type, page, page_size, order, order_
                       round(sum(order_amount)/sum(order_count),2) unit_price,
                       round(sum(cost)/sum(follow_count),2) follow_cost,
                       round(sum(cost)/sum(order_count),2) order_cost,
+                      sum(use_times) use_times,
                       round(sum(order_amount)/sum(cost),4) ROI
                       from ({sql}) a 
       """

+ 2 - 2
handlers/OperateHandler.py

@@ -11,12 +11,12 @@ class ChannelGroupHandler(BaseHandler):
     APP_MAP = {
         "user_channel": user_channel,
         "user_channel_group": user_channel_group,
-        "user": user,
+        "user": user,#已经准备放弃
         "group_add": group_add,
         "group_del": group_del,
         "group_auth_add": group_auth_add,
         "group_auth_del": group_auth_del,
-        "get_channel" : get_channel,
+        "get_channel": get_channel,
         "get_pitcher": get_pitcher
     }
 

+ 4 - 2
handlers/PublicAnalysisHandler.py

@@ -46,7 +46,8 @@ class BookTrend(BaseHandler):
             if date_range:
                 end = self.get_n_days(0)
                 start = self.get_n_days(-int(date_range) + 1)
-            data, total, total_data = book_trend(start, end, book, book_type, platform, page, page_size, order_by, order)
+            data, total, total_data = book_trend(start, end, book, book_type, platform, page, page_size, order_by,
+                                                 order)
             self.write_json(data=data, total=total, total_data=total_data)
 
 
@@ -154,6 +155,7 @@ class AdvertisementRank(BaseHandler):
         else:
             du = DateUtils()
             arg = self.get_args()
+            show_type = arg.get('show_type', 'public') # 展示 public private,默认public----public 会展示大于5000以上的数据,超过5天的数据
             user_id = arg.get('user_id')
             start = arg.get("start", du.getNow())
             end = arg.get("end")
@@ -168,5 +170,5 @@ class AdvertisementRank(BaseHandler):
             has_order = arg.get("has_order")
             is_video = arg.get('is_video')
             data, total, total_data = advertisement_rank(user_id, start, end, type, page, page_size, order, order_by,
-                                                         book, channel, pitcher, has_order, is_video)
+                                                         book, channel, pitcher, has_order, is_video, show_type)
             self.write_json(data=data, total=total, total_data=total_data)

+ 18 - 36
model/UserAuthUtils.py

@@ -1,48 +1,41 @@
 from model.DataBaseUtils import MysqlUtils
-
-
+import requests
 
 
 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})
-            union 
-            select nick_name from t_sys_user where user_id='{user_id}'
-"""
-
-    return db.zx.getOneList(sql)
-
+    rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/{user_id}')
+    nick_name_list = []
+    for _ in rsp.json()['data']:
+        nick_name_list.append(_['nickName'])
+    return nick_name_list
 
 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)
 
+    db = MysqlUtils()
+    # 普通权限------java,获取本人对应拥有的公众号
+    rsp = requests.get(f'http://api.zanxiangnet.com/system/api/mp/mpAccount/subAccountWithUser/{user_id}')
+    channel_list = rsp.json()['data']
+    data1 = []
+    for _ in channel_list:
+        data1.append(_['nickName'])
 
     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)
+        data3 = db.zx.getOneList(sql3)
         # print(data3)
     else:
-        data3 =[]
-    return tuple(data1+data3)
+        data3 = []
+    return tuple(data1 + data3)
+
 
 def super_auth():
     "获取超级数据权限的用户列表"
@@ -51,18 +44,7 @@ def super_auth():
     return db.zx.getOneList(sql)
 
 
-def get_role(user_id):
-    """获取用户的角色"""
-    db = MysqlUtils()
-    sql = "select role_id from t_sys_user_role where user_id ="+str(user_id)
-    return db.zx.getOneList(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_auth_channel(109))
     # print(get_role(78))
-    print(f"ssed{tuple([1,3,4])}")
+    print(f"ssed{tuple([1, 3, 4])}")