""" @author: luojunhui """ class RequestDeal(object): """ Deal Request from outside """ def __init__(self, params, mysql_client): self.start_dt = params['start_date'] self.end_dt = params['end_date'] self.cate = params['cate'] self.topN = params['topN'] if params.get("topN") else 1 self.mysql_client = mysql_client def response_obj(self, data_list): """ 处理 return 信息 :param data_list: :return: """ result_list = [ { "video_id": obj[0], "title": obj[1], "video_url": obj[2] } for obj in data_list ] response = { "status": "success", "cate": self.cate, "start_date": self.start_dt, "end_dt": self.end_dt, "topN": self.topN, "data": result_list } return response async def deal(self): """ deal function :return: """ if self.cate == "video_return": return await self.deal_return() elif self.cate == "video_view": return await self.deal_view() elif self.cate == "video_rov": return await self.deal_rov() else: return {"error": "params is not correct"} async def deal_return(self): """ return :return: """ sql = f""" select video_id, title, video_url from top_return_daily where dt >= '{self.start_dt}' and dt < '{self.end_dt}' order by return_ DESC limit {self.topN} """ result_list = await self.mysql_client.select(sql) return self.response_obj(result_list) async def deal_view(self): """ view :return: """ sql = f""" select video_id, title, video_url from top_return_daily where dt >= '{self.start_dt}' and dt < '{self.end_dt}' order by view_ DESC limit {self.topN} """ result_list = await self.mysql_client.select(sql) return self.response_obj(result_list) async def deal_rov(self): """ rov :return: """ sql = f""" select video_id, title, video_url from top_return_daily where dt >= '{self.start_dt}' and dt < '{self.end_dt}' order by rov DESC limit {self.topN} """ result_list = await self.mysql_client.select(sql) return self.response_obj(result_list)