OrderHandler.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. from handlers.HandlerBase import BaseHandler
  2. import time
  3. from model.DataBaseUtils import *
  4. from model.CommonUtils import *
  5. from model import UserAuthUtils
  6. from model.UserAuthUtils import super_auth
  7. class OrderInfoGame(BaseHandler):
  8. def get(self):
  9. if not self._au:
  10. self.write_fail(msg='auth error')
  11. else:
  12. db = MysqlUtils()
  13. sql = f'''
  14. select id,name from db_mp.h_game
  15. '''
  16. data = db.quchen_text.getData_json(sql)
  17. self.write_json(data=data)
  18. class OrderInfoAgent(BaseHandler):
  19. def post(self):
  20. if not self._au:
  21. self.write_fail(msg='auth error')
  22. else:
  23. args = self.get_args()
  24. user_id = args.get('user_id')
  25. db = MysqlUtils()
  26. if user_id in super_auth():
  27. op = ''
  28. else:
  29. if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
  30. return None, None, None
  31. elif len(UserAuthUtils.get_auth_channel(user_id)) == 1:
  32. op = f" and c.wx_name = '{UserAuthUtils.get_auth_channel(user_id)[0]}'"
  33. else:
  34. op = f" and c.wx_name in {str(UserAuthUtils.get_auth_channel(user_id))}"
  35. sql = f'''
  36. select row_number() over() as id,
  37. d.user_nicename as agent_name
  38. from quchen_text.advertiser_vx a
  39. left join db_mp.mp_mp_conf b on a.name =b.wx_name
  40. left join db_mp.mp_conf_agent c on b.id = c.advertiser_conf_id
  41. left join db_mp.h_user d on c.agent_id = d.id
  42. where d.user_nicename is not null
  43. {op}
  44. group by d.user_nicename
  45. '''
  46. data = db.quchen_text.getData_json(sql)
  47. self.write_json(data=data)
  48. class OrderInfo(BaseHandler):
  49. def post(self):
  50. if not self._au:
  51. self.write_fail(msg='auth error')
  52. else:
  53. args = self.get_args()
  54. user_id = args.get('user_id')
  55. # 渠道表
  56. channel = args.get("channel")
  57. pitcher = args.get("pitcher")
  58. # role 表
  59. role_name = args.get("role_name")
  60. start = args.get("start", self.thisday)
  61. end = args.get("end")
  62. user_start = args.get("user_start")
  63. user_end = args.get("user_end")
  64. order_id = args.get('order_id')
  65. member_id = args.get('member_id')
  66. status = (args.get('status'))
  67. game = (args.get('game'))
  68. agent_name = (args.get('agent_name'))
  69. page = args.get("page", 1)
  70. page_size = args.get("page_size", 20)
  71. order_by = args.get("order_by", 'order_date')
  72. order_ = args.get("order", 'desc')
  73. data, total, total_data = self.get_order_info(user_id, channel, pitcher, role_name, start, end,
  74. user_end, user_start, order_id, member_id, status,
  75. game, agent_name,
  76. page, page_size, order_, order_by)
  77. if args.get("download"):
  78. self.write_download(str(int(time.time())), data)
  79. else:
  80. self.write_json(data=data, total=total, total_data=total_data)
  81. def get_order_info(self, user_id, channel, pitcher, role_name, start, end,
  82. user_end, user_start, order_id, member_id, status,
  83. game, agent_name,
  84. page, page_size, order_, order_by):
  85. db = MysqlUtils()
  86. if user_id in super_auth():
  87. op = ''
  88. else:
  89. if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
  90. return None, None, None
  91. elif len(UserAuthUtils.get_auth_channel(user_id)) == 1:
  92. op = f" and c.wx_name = '{UserAuthUtils.get_auth_channel(user_id)[0]}'"
  93. else:
  94. op = f" and c.wx_name in {str(UserAuthUtils.get_auth_channel(user_id))}"
  95. op1 = f" and h.pitcher ='{pitcher}' " if pitcher else ''
  96. op2 = f" and c.wx_name='{channel}'" if channel else ''
  97. op3 = f" and from_unixtime(a.create_time) >='{start}' " if start else ''
  98. op4 = f" and from_unixtime(a.create_time) <='{end}' " if end else ''
  99. op5 = f" and CONVERT (g.role_name USING utf8)='{role_name}' " if role_name else ''
  100. op6 = f" and from_unixtime(d.create_time) >='{user_start}' " if user_start else ''
  101. op7 = f" and from_unixtime(d.create_time) <='{user_end}' " if user_end else ''
  102. op8 = f" and a.order_id='{order_id}'" if order_id else ''
  103. op9 = f" and a.mem_id='{member_id}'" if member_id else ''
  104. if status:
  105. op10 = f" and a.status=2 " if int(status) == 2 else ' and a.status!=2 '
  106. else:
  107. op10 = ''
  108. op11 = f" and e.name='{game}'" if game else ''
  109. op12 = f" and q.user_nicename='{agent_name}'" if agent_name else ''
  110. # 选项:order_date:订单时间,user_date:用户时间,amount:金额,game:游戏名字,payway:支付方式,agent_name:渠道
  111. if order_by == 'agent_name':
  112. order_by = 'q.user_nicename'
  113. elif order_by == 'user_date':
  114. order_by = 'd.create_time'
  115. elif order_by == 'amount':
  116. order_by = 'amount'
  117. elif order_by == 'game':
  118. order_by = 'e.name'
  119. elif order_by == 'payway':
  120. order_by = 'a.payway'
  121. else:
  122. order_by = 'a.create_time'
  123. op15 = f" order by {order_by} {order_}" if order_by and order_ else ''
  124. sql = f"""select row_number() over() as id,a.order_id ,h.pitcher,
  125. if(a.agent_id =21,'客服渠道',if(a.agent_id=0,'自然流量',q.user_nicename)) as agent_name,
  126. if(a.agent_id =21,'客服渠道',if(a.agent_id=0,'自然流量',c.wx_name)) as channel,
  127. if(a.create_time is not null ,CONVERT(from_unixtime(a.create_time),char(20)),null) order_time,
  128. if(d.create_time is not null,CONVERT(from_unixtime(d.create_time),char(20)),null) user_create_time,
  129. d.id as user_id,e.name as game ,a.amount ,a.real_amount ,g.server_name ,
  130. CONVERT (g.role_name USING utf8) as role_name,a.payway ,if(a.status!=2,1,2 ) status ,a.mem_id
  131. from db_mp.h_pay a
  132. left join
  133. (select b.agent_id as agent_id,b.advertiser_conf_id from
  134. (select agent_id,max(update_time) as update_time
  135. from db_mp.mp_conf_agent mmc
  136. group by agent_id ) a
  137. left join db_mp.mp_conf_agent b on a.agent_id=b.agent_id
  138. and a.update_time = b.update_time) b on a.agent_id =b.agent_id
  139. left join db_mp.mp_mp_conf c on b.advertiser_conf_id = c.id
  140. left join db_mp.h_member d on a.mem_id = d.id
  141. left join db_mp.h_game e on a.app_id =e.id
  142. left join db_mp.h_mem_game f on a.id = f.mem_id
  143. left join db_mp.h_mg_role g on g.mg_mem_id = f.id
  144. left join quchen_text.advertiser_vx h on c.wx_name =h.name
  145. left join db_mp.h_user q on a.agent_id =q.id
  146. where 1=1 {op} {op1} {op2} {op3} {op4} {op5}
  147. {op6} {op7} {op8} {op9} {op10}
  148. {op11} {op12}
  149. {op15}
  150. """
  151. sumsql = f""" select '' as id,'' as order_id ,'' as pitcher,'' as agent_name, '' as channel,
  152. '' as order_time,'' as user_create_time,'' as user_id,
  153. '' as game,sum(amount) as amount ,'' as real_amount ,'' as server_name,
  154. '' as mem_id , '' as role_name,'' as payway ,'' as status
  155. from ({sql}) a
  156. """
  157. # print(sumsql)
  158. data, total, total_data = getLimitSumData(db.dm, sql, sumsql, page, page_size)
  159. print(len(data))
  160. return data, total, total_data