request_deal.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. """
  2. @author: luojunhui
  3. """
  4. class RequestDeal(object):
  5. """
  6. Deal Request from outside
  7. """
  8. def __init__(self, params, mysql_client):
  9. self.start_dt = params['start_date']
  10. self.end_dt = params['end_date']
  11. self.cate = params['cate']
  12. self.topN = params['topN'] if params.get("topN") else 1
  13. self.mysql_client = mysql_client
  14. def response_obj(self, data_list):
  15. """
  16. 处理 return 信息
  17. :param data_list:
  18. :return:
  19. """
  20. result_list = [
  21. {
  22. "video_id": obj[0],
  23. "title": obj[1],
  24. "video_url": obj[2]
  25. } for obj in data_list
  26. ]
  27. response = {
  28. "status": "success",
  29. "cate": self.cate,
  30. "start_date": self.start_dt,
  31. "end_dt": self.end_dt,
  32. "topN": self.topN,
  33. "data": result_list
  34. }
  35. return response
  36. async def deal(self):
  37. """
  38. deal function
  39. :return:
  40. """
  41. if self.cate == "video_return":
  42. return await self.deal_return()
  43. elif self.cate == "video_view":
  44. return await self.deal_view()
  45. elif self.cate == "video_rov":
  46. return await self.deal_rov()
  47. else:
  48. return {"error": "params is not correct"}
  49. async def deal_return(self):
  50. """
  51. return
  52. :return:
  53. """
  54. sql = f"""
  55. select video_id, title, video_url
  56. from top_return_daily
  57. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  58. order by return_ DESC
  59. limit {self.topN}
  60. """
  61. result_list = await self.mysql_client.select(sql)
  62. return self.response_obj(result_list)
  63. async def deal_view(self):
  64. """
  65. view
  66. :return:
  67. """
  68. sql = f"""
  69. select video_id, title, video_url
  70. from top_return_daily
  71. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  72. order by view_ DESC
  73. limit {self.topN}
  74. """
  75. result_list = await self.mysql_client.select(sql)
  76. return self.response_obj(result_list)
  77. async def deal_rov(self):
  78. """
  79. rov
  80. :return:
  81. """
  82. sql = f"""
  83. select video_id, title, video_url
  84. from top_return_daily
  85. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  86. order by rov DESC
  87. limit {self.topN}
  88. """
  89. result_list = await self.mysql_client.select(sql)
  90. return self.response_obj(result_list)