Bladeren bron

MOD:添加订单明细查询

cxyu 3 jaren geleden
bovenliggende
commit
cbfe08ebea
4 gewijzigde bestanden met toevoegingen van 161 en 31 verwijderingen
  1. 28 17
      data_manage/operate.py
  2. 119 0
      handlers/OrderHandler.py
  3. 10 14
      model/UserAuthUtils.py
  4. 4 0
      urls.py

+ 28 - 17
data_manage/operate.py

@@ -7,15 +7,19 @@ 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)
+    rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/3')
+    channel_list = []
+    for _ in rsp.json()['data']:
+        channel_list.append({'id': _['id'], 'nick_name': _['nickName']})
+    return channel_list
 
 
 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")
+    rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/3')
+    channel_dict = {}
+    for _ in rsp.json()['data']:
+        channel_dict[str(_['id'])] = _['nickName']
     user_id = arg.get('user_id')
     if user_id:
         sql = f"""SELECT  id,name,channel_ids from channel_group where id in  
@@ -27,17 +31,19 @@ def user_channel_group(arg):
     for i in data:
         sr = ''
         for j in i['channel_ids'].split(','):
-            sr += di[j] + ','
+            sr += channel_dict[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)
+    rsp = requests.get('http://api.zanxiangnet.com/erp/api/user/search/3?powerLevelMin=0')
+    user_list = []
+    for _ in rsp.json()['data']:
+        user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})
+    return user_list
 
 
 def group_add(arg):
@@ -82,12 +88,12 @@ def get_channel(arg):
     user_id = arg.get('user_id')
     name = arg.get('name')
     pitcher_id = arg.get('pitcher_id')
-
     # 获取公众号列表
     rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/3')
     channel_list_all = []
     channel_dict = {}
     for _ in rsp.json()['data']:
+        # channel_list.append((_['id'], _['nickName']))
         channel_list_all.append({'id': _['id'], 'nick_name': _['nickName']})
         channel_dict[_['id']] = _['nickName']
     if user_id in super_auth() and not pitcher_id:
@@ -107,17 +113,15 @@ def get_channel(arg):
 
     # # 加上配置的号
     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={select_id}"""
+                     left join channel_group b on a.channel_group_id=b.id
+                     where user_id={select_id}"""
     data2 = db.quchen_text.getOne(sql2)
     data3 = []
     if data2:
         data2_2 = tuple(data2.split(','))
         for _ in data2_2:
-            data3.append(channel_dict[int(_)])
+            data3.append({'id': int(_), 'nick_name': channel_dict[int(_)]})
     data4 = data1 + data3
-
-
     return data4[:100]  # 给100个
 
 
@@ -135,7 +139,6 @@ def get_pitcher(arg):
     rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/3/{user_id}')
     for _ in rsp.json()['data']:
         user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})
-
     return user_list
 
 
@@ -151,4 +154,12 @@ def get_user_name_by_id(user_id):
 if __name__ == '__main__':
     # print(get_pitcher({'user_id':78}))
     # print(get_user_name_by_id(78))
-    user_channel_group({})
+    # user_channel_group({})
+    # user()
+    db = MysqlUtils()
+    sql3 = f"""select id,nick_name from t_mp_account limit 100"""
+    data3 = db.zx.getData_json(sql3)
+    print(data3)
+
+# xx=db.quchen_text.getData_json(sql='''select order_id,amount from ods_order oo  limit 100''')
+#     print(xx)

+ 119 - 0
handlers/OrderHandler.py

@@ -0,0 +1,119 @@
+from handlers.HandlerBase import BaseHandler
+import time
+from model.DataBaseUtils import *
+from model.CommonUtils import *
+from model import UserAuthUtils
+from model.UserAuthUtils import super_auth
+
+
+class OrderInfo(BaseHandler):
+
+    def post(self):
+        # 0.通过公众号-----需要表进行join
+        # 0.5需要是否自然量
+        # 显示----需要多一个订单时间
+        # 1.通过订单号获取
+        # 通过渠道
+        # 1.通过玩家id
+        # 1.通过玩家账号
+        # 1.通过角色名称
+        # 1.通过操作系统
+
+        if not self._au:
+            self.write_fail(msg='auth error')
+        else:
+            args = self.get_args()
+            user_id = args.get('user_id')
+            # 渠道表
+            channel = args.get("channel")
+            pitcher = args.get("pitcher")
+
+            # role 表
+            role_name = args.get("role_name")
+            start = args.get("start", self.thisday)
+            end = args.get("end")
+
+            user_start = args.get("user_start")
+            user_end = args.get("user_end")
+
+            order_id = args.get('order_id')
+            member_id = args.get('member_id')
+
+            page = args.get("page",1)
+            page_size = args.get("page_size",20)
+            order_by = args.get("order_by", 'a.create_time ')
+            order_arg = args.get("order", 'desc')
+
+            data, total, total_data = self.get_order_info(user_id, channel, pitcher, role_name, start, end,
+                                                          user_end, user_start, order_id, member_id, page,
+                                                          page_size, order_arg, order_by)
+            if args.get("download"):
+                self.write_download(str(int(time.time())), data)
+            else:
+                self.write_json(data=data, total=total, total_data=total_data)
+
+    def get_order_info(self, user_id, channel, pitcher, role_name, start, end,
+                       user_end, user_start, order_id, member_id, page, page_size, order_arg, order_by):
+        db = MysqlUtils()
+        if user_id in super_auth():
+            op = ''
+        else:
+            if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
+                return None, None, None
+            elif len(UserAuthUtils.get_auth_channel(user_id)) == 1:
+                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 from_unixtime(a.create_time) >='{start}' " if start else ''
+        op4 = f" and from_unixtime(a.create_time) <='{end}' " if end else ''
+        op5 = f" and CONVERT (g.role_name USING utf8)='{role_name}' " if role_name else ''
+        op6 = f" and from_unixtime(d.create_time) >='{user_start}' " if user_start else ''
+        op7 = f" and from_unixtime(d.create_time) <='{user_end}' " if user_end else ''
+        op8 = f" and a.order_id='{order_id}'" if order_id else ''
+        op9 = f" and a.mem_id='{member_id}'" if member_id else ''
+
+        op15 = f" order by {order_by} {order_arg}" if order_by and order_arg else ''
+
+
+
+        sql = f"""select a.order_id ,h.pitcher,if(a.agent_id =21,'客服渠道',if(a.agent_id=0,'自然流量',c.wx_name)) as channel,
+                        if(a.create_time is not null ,CONVERT(from_unixtime(a.create_time),char(20)),null) order_time,
+                        if(d.create_time is not null,CONVERT(from_unixtime(d.create_time),char(20)),null) user_create_time,
+                        d.id as user_id,e.name as user_name ,a.amount ,a.real_amount ,g.server_name ,
+                        CONVERT (g.role_name USING utf8) as role_name,a.payway ,a.status ,a.mem_id
+                        from db_mp.h_pay a
+                        left join
+                        (select b.agent_id as agent_id,b.advertiser_conf_id  from 
+                                (select agent_id,max(update_time) as update_time  
+                                from db_mp.mp_conf_agent mmc 
+                                group by agent_id ) a
+                                left join db_mp.mp_conf_agent b on  a.agent_id=b.agent_id 
+                                and a.update_time = b.update_time) b on  a.agent_id =b.agent_id 
+                        left join db_mp.mp_mp_conf c on b.advertiser_conf_id = c.id 
+                        left join db_mp.h_member d on a.mem_id = d.id
+                        left join db_mp.h_game e on a.app_id =e.id 
+                        left join db_mp.h_mem_game f on a.id = f.mem_id 
+                        left join db_mp.h_mg_role g on g.mg_mem_id = f.id
+                        left join quchen_text.advertiser_vx h on c.wx_name =h.name 
+
+                        
+                        where 1=1 and a.status=2 {op} {op1} {op2} {op3} {op4} {op5}  {op6} {op7} {op8} {op9} 
+                        {op15}
+            """
+        # print(sql)
+        sumsql = f""" select '' as order_id ,'' as pitcher, '' as channel, 
+		            '' as order_time,'' as user_create_time,'' as user_id,
+			        '' as user_name,sum(amount) as amount ,'' as real_amount ,'' as server_name ,
+                    '' as mem_id , '' as role_name,'' as payway ,'' as status 
+                    from ({sql}) a
+                """
+        # print(sumsql)
+        data, total, total_data = getLimitSumData(db.dm, sql, sumsql, page, page_size)
+
+        # print(data)
+        print(len(data))
+        return data, total, total_data

+ 10 - 14
model/UserAuthUtils.py

@@ -27,14 +27,18 @@ def get_auth_channel(user_id):
                 where user_id={user_id}"""
     data2 = db.quchen_text.getOne(sql2)
 
+    data3 = []
     if data2:
+        rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/3')
+        channel_list = []
+        channel_dict = {}
+        for _ in rsp.json()['data']:
+            channel_list.append((_['id'], _['nickName']))
+            channel_dict[_['id']] = _['nickName']
         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 = []
+        for _ in data2_2:
+            data3.append(channel_dict[int(_)])
     return tuple(data1 + data3)
 
 
@@ -50,12 +54,4 @@ def super_auth():
 if __name__ == '__main__':
     # print(get_auth_channel(109))
     # print(get_role(78))
-    # print(f"ssed{tuple([1, 3, 4])}")
-    # super_auth()
-    rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/1')
-    channel_list = []
-    for _ in rsp.json()['data']:
-        # print(_['data'])
-        channel_list.append((_['id'], _['nickName']))
-        print(type(_['id']))
-    print(channel_list)
+    print(f"ssed{tuple([1, 3, 4])}")

+ 4 - 0
urls.py

@@ -3,6 +3,7 @@ from handlers.ApiHandler import YgApiHandler,TtApiHandler,WxGameApiHandler
 from handlers.GitHookHandler import *
 from handlers.PublicAnalysisHandler import *
 from handlers.TaskHandler import *
+from handlers.OrderHandler import *
 from handlers import OperateHandler
 from handlers import AnalysisHandler
 
@@ -32,6 +33,9 @@ urls = [
     # 主动刷新任务
     (r'/task/src_book_info', SrcBookInfo),  # 刷新书籍卡点
 
+    #
+    (r'/order/detail', OrderInfo),  # 获取订单明细
+
     # 外部接口
     (r'/api/get_yangguang_data', YgApiHandler),  # 阳光订单回调接口