OrderHandler.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 OrderInfo(BaseHandler):
  8. def post(self):
  9. # 0.通过公众号-----需要表进行join
  10. # 0.5需要是否自然量
  11. # 显示----需要多一个订单时间
  12. # 1.通过订单号获取
  13. # 通过渠道
  14. # 1.通过玩家id
  15. # 1.通过玩家账号
  16. # 1.通过角色名称
  17. # 1.通过操作系统
  18. if not self._au:
  19. self.write_fail(msg='auth error')
  20. else:
  21. args = self.get_args()
  22. user_id = args.get('user_id')
  23. # 渠道表
  24. channel = args.get("channel")
  25. pitcher = args.get("pitcher")
  26. # role 表
  27. role_name = args.get("role_name")
  28. start = args.get("start", self.thisday)
  29. end = args.get("end")
  30. user_start = args.get("user_start")
  31. user_end = args.get("user_end")
  32. order_id = args.get('order_id')
  33. member_id = args.get('member_id')
  34. page = args.get("page",1)
  35. page_size = args.get("page_size",20)
  36. order_by = args.get("order_by", 'a.create_time ')
  37. order_arg = args.get("order", 'desc')
  38. data, total, total_data = self.get_order_info(user_id, channel, pitcher, role_name, start, end,
  39. user_end, user_start, order_id, member_id, page,
  40. page_size, order_arg, order_by)
  41. if args.get("download"):
  42. self.write_download(str(int(time.time())), data)
  43. else:
  44. self.write_json(data=data, total=total, total_data=total_data)
  45. def get_order_info(self, user_id, channel, pitcher, role_name, start, end,
  46. user_end, user_start, order_id, member_id, page, page_size, order_arg, order_by):
  47. db = MysqlUtils()
  48. if user_id in super_auth():
  49. op = ''
  50. else:
  51. if len(UserAuthUtils.get_auth_channel(user_id)) == 0:
  52. return None, None, None
  53. elif len(UserAuthUtils.get_auth_channel(user_id)) == 1:
  54. op = f" and channel = '{UserAuthUtils.get_auth_channel(user_id)[0]}'"
  55. else:
  56. op = f" and channel in {str(UserAuthUtils.get_auth_channel(user_id))}"
  57. op1 = f" and pitcher ='{pitcher}' " if pitcher else ''
  58. op2 = f" and channel='{channel}'" if channel else ''
  59. op3 = f" and from_unixtime(a.create_time) >='{start}' " if start else ''
  60. op4 = f" and from_unixtime(a.create_time) <='{end}' " if end else ''
  61. op5 = f" and CONVERT (g.role_name USING utf8)='{role_name}' " if role_name else ''
  62. op6 = f" and from_unixtime(d.create_time) >='{user_start}' " if user_start else ''
  63. op7 = f" and from_unixtime(d.create_time) <='{user_end}' " if user_end else ''
  64. op8 = f" and a.order_id='{order_id}'" if order_id else ''
  65. op9 = f" and a.mem_id='{member_id}'" if member_id else ''
  66. op15 = f" order by {order_by} {order_arg}" if order_by and order_arg else ''
  67. sql = f"""select a.order_id ,h.pitcher,if(a.agent_id =21,'客服渠道',if(a.agent_id=0,'自然流量',c.wx_name)) as channel,
  68. if(a.create_time is not null ,CONVERT(from_unixtime(a.create_time),char(20)),null) order_time,
  69. if(d.create_time is not null,CONVERT(from_unixtime(d.create_time),char(20)),null) user_create_time,
  70. d.id as user_id,e.name as user_name ,a.amount ,a.real_amount ,g.server_name ,
  71. CONVERT (g.role_name USING utf8) as role_name,a.payway ,a.status ,a.mem_id
  72. from db_mp.h_pay a
  73. left join
  74. (select b.agent_id as agent_id,b.advertiser_conf_id from
  75. (select agent_id,max(update_time) as update_time
  76. from db_mp.mp_conf_agent mmc
  77. group by agent_id ) a
  78. left join db_mp.mp_conf_agent b on a.agent_id=b.agent_id
  79. and a.update_time = b.update_time) b on a.agent_id =b.agent_id
  80. left join db_mp.mp_mp_conf c on b.advertiser_conf_id = c.id
  81. left join db_mp.h_member d on a.mem_id = d.id
  82. left join db_mp.h_game e on a.app_id =e.id
  83. left join db_mp.h_mem_game f on a.id = f.mem_id
  84. left join db_mp.h_mg_role g on g.mg_mem_id = f.id
  85. left join quchen_text.advertiser_vx h on c.wx_name =h.name
  86. where 1=1 and a.status=2 {op} {op1} {op2} {op3} {op4} {op5} {op6} {op7} {op8} {op9}
  87. {op15}
  88. """
  89. # print(sql)
  90. sumsql = f""" select '' as order_id ,'' as pitcher, '' as channel,
  91. '' as order_time,'' as user_create_time,'' as user_id,
  92. '' as user_name,sum(amount) as amount ,'' as real_amount ,'' as server_name ,
  93. '' as mem_id , '' as role_name,'' as payway ,'' as status
  94. from ({sql}) a
  95. """
  96. # print(sumsql)
  97. data, total, total_data = getLimitSumData(db.dm, sql, sumsql, page, page_size)
  98. # print(data)
  99. print(len(data))
  100. return data, total, total_data