cxyu пре 3 година
родитељ
комит
eb67ec2d81
3 измењених фајлова са 58 додато и 35 уклоњено
  1. 52 33
      handlers/OrderHandler.py
  2. 3 2
      model/UserAuthUtils.py
  3. 3 0
      urls.py

+ 52 - 33
handlers/OrderHandler.py

@@ -6,18 +6,21 @@ from model import UserAuthUtils
 from model.UserAuthUtils import super_auth
 
 
+class OrderInfoGame(BaseHandler):
+
+    def get(self):
+        pass
+
+
+class OrderInfoAgent(BaseHandler):
+
+    def get(self):
+        pass
+
+
 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')
@@ -38,22 +41,24 @@ class OrderInfo(BaseHandler):
 
             order_id = args.get('order_id')
             member_id = args.get('member_id')
+            status = (args.get('status'))
 
-            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')
+            page = args.get("page", 1)
+            page_size = args.get("page_size", 20)
+            order_by = args.get("order_by", 'order_date')
+            order_ = 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)
+                                                          user_end, user_start, order_id, member_id, status,
+                                                          page, page_size, order_, 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):
+                       user_end, user_start, order_id, member_id, status,
+                       page, page_size, order_, order_by):
         db = MysqlUtils()
         if user_id in super_auth():
             op = ''
@@ -61,13 +66,13 @@ class OrderInfo(BaseHandler):
             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]}'"
+                op = f" and c.wx_name = '{UserAuthUtils.get_auth_channel(user_id)[0]}'"
 
             else:
-                op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
+                op = f" and c.wx_name in {str(UserAuthUtils.get_auth_channel(user_id))}"
 
-        op1 = f" and pitcher ='{pitcher}' " if pitcher else ''
-        op2 = f" and channel='{channel}'" if channel else ''
+        op1 = f" and h.pitcher ='{pitcher}' " if pitcher else ''
+        op2 = f" and c.wx_name='{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 ''
@@ -75,16 +80,31 @@ class OrderInfo(BaseHandler):
         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 ''
+        print(status)
+        op10 = f" and a.status=2 " if  status and int(status) == 2 else ' and a.status!=2 '
+
+        # 选项:order_date:订单时间,user_date:用户时间,amount:金额,game:游戏名字,payway:支付方式,agent_name:渠道
+        if order_by == 'agent_name':
+            order_by = 'q.user_nicename'
+        elif order_by == 'user_date':
+            order_by = 'd.create_time'
+        elif order_by == 'amount':
+            order_by = 'amount'
+        elif order_by == 'game':
+            order_by = 'e.name'
+        elif order_by == 'payway':
+            order_by = 'a.payway'
+        else:
+            order_by = 'a.create_time'
 
-        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,
+        op15 = f" order by {order_by} {order_}" if order_by and order_ else ''
+        sql = f"""select row_number() over() as id,a.order_id ,h.pitcher,
+                        if(a.agent_id =21,'客服渠道',if(a.agent_id=0,'自然流量',q.user_nicename)) as agent_name,
+                        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
+                        d.id as user_id,e.name as game ,a.amount ,a.real_amount ,g.server_name ,
+                        CONVERT (g.role_name USING utf8) as role_name,a.payway ,if(a.status!=2,1,2 ) status ,a.mem_id
                         from db_mp.h_pay a
                         left join
                         (select b.agent_id as agent_id,b.advertiser_conf_id  from 
@@ -99,21 +119,20 @@ class OrderInfo(BaseHandler):
                         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 
-
+                        left join db_mp.h_user q on a.agent_id =q.id 
+                        
                         
-                        where 1=1 and a.status=2 {op} {op1} {op2} {op3} {op4} {op5}  {op6} {op7} {op8} {op9} 
+                        where 1=1  {op} {op1} {op2} {op3} {op4} {op5}  {op6} {op7} {op8} {op9} {op10} 
                         {op15}
             """
-        # print(sql)
-        sumsql = f""" select '' as order_id ,'' as pitcher, '' as channel, 
+        sumsql = f""" select '' as id,'' as order_id ,'' as pitcher,'' as agent_name, '' 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 game,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

+ 3 - 2
model/UserAuthUtils.py

@@ -19,8 +19,9 @@ def get_auth_channel(user_id):
     rsp = requests.get(f'http://api.zanxiangnet.com/system/api/mp/mpAccount/subAccountWithUser/3/{user_id}')
     channel_list = rsp.json()['data']
     data1 = []
-    for _ in channel_list:
-        data1.append(_['nickName'])
+    if channel_list:
+        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

+ 3 - 0
urls.py

@@ -35,6 +35,9 @@ urls = [
 
     #
     (r'/order/detail', OrderInfo),  # 获取订单明细
+    (r'/order/game', OrderInfoGame),  # 获取订单游戏
+    (r'/order/agent_name', OrderInfoAgent),  # 获取渠道
+
 
     # 外部接口
     (r'/api/get_yangguang_data', YgApiHandler),  # 阳光订单回调接口