From b04ac14e8c03d52dedc98c4d4e4e401081057f90 Mon Sep 17 00:00:00 2001 From: pengtao Date: Fri, 22 Nov 2019 11:26:33 +0800 Subject: [PATCH] fixbug --- daily_report/dreport.py | 57 ++++++++++++++++++++------ daily_report/templates/tap_weekly.html | 31 +++++--------- 2 files changed, 54 insertions(+), 34 deletions(-) diff --git a/daily_report/dreport.py b/daily_report/dreport.py index b0d286e..a64908d 100644 --- a/daily_report/dreport.py +++ b/daily_report/dreport.py @@ -108,7 +108,7 @@ def send_tapweekly(): recipients = ["pengtao@kingsome.cn"] msg = Message(title, sender=sender, recipients=recipients) twr = TapWeeklyReport(day) - data = twr.build() + data = twr.run() #print(data) # data[day] = day msg.subject = f"TAPTAP_{day}_游戏周报" @@ -507,20 +507,48 @@ class TapWeeklyReport: self.db_conn = MysqlBase(**db_conf) self.limit = 20 - # def get_weekly_days(self): - # weekly_days = [] - # for i in range(0, 7): - # current_day = (datetime.datetime.strptime(self.day, '%Y-%m-%d') - datetime.timedelta(days=i)).strftime( - # '%Y-%m-%d') - # weekly_days.append(current_day) - # return weekly_days + self.all_type = {"download": {"name": "热门榜", "row": ["download"]}, "new": {"name": "新品榜", "row": ["download"]}, + "reserve": {"name": "预约榜", "row": ["reserve"]}, "sell": {"name": "热卖榜", "row": ["sell"]}, + "played": {"name": "热玩榜", "row": ["download"]}} + + self.base_head = ["gameid", "title", "order", "min_order", "max_order", "diff_order"] + self.base_end = ["watch", "review", "topic", "score", "tags"] + self.row_cn = {"gameid": "游戏ID", "tile": "游戏名称", "order": "当前排名", "min_order": "最高排名", "max_order": "最低排名", + "diff_order": "排名变动", "download": "下载数", "reserve": "预约数", "sell": "购买数", "watch": "关注数", + "review": "评论数", "topic": "话题", "score": "评分", "tags": "游戏标签"} + + + def struct_data(self, data): + r_data = list + for key in self.all_type.keys(): + try: + data_key = data.get(key, []) + temp = {} + temp["name"] = self.all_type.get(key).get("name") + rows = self.base_head + self.all_type.get(key).get("row") + self.base_end + temp["row_name"] = [] + for k in rows: + temp["row_name"].append(self.row_cn.get(k)) + temp["row_data"] = [] + for line in data_key: + tt = {} + tt['gameid'], tt['title'], tt['order'], tt['min_order'], tt['max_order'], tt['diff_order'], tt[ + 'score'], tt['tags'], tt['watch'], tt['download'], tt['sell'], tt['reserve'], tt['review'], tt[ + 'topic'] = line + for item in tt.keys(): + if item not in rows: + tt.pop(item) + temp["row_data"].append(tt) + except Exception: + log.error(f"struct data with {line} Failed", exc_info=True) + return r_data def build(self): # weekly_day = json.dumps(self.get_weekly_days()).strip('[]') - tap_types = ("new", "download", "reserve", "sell", "played") + # tap_types = ("new", "download", "reserve", "sell", "played") all_data = defaultdict(list) - for tap_type in tap_types: + for tap_type in self.all_type.keys(): sql = f"""select gameid, title as "名称", @@ -540,9 +568,10 @@ class TapWeeklyReport: tap_weekly where catename='{tap_type}' - and date = '{self.day}' + and date = '{self.day}' + and order_posi = 1 order by - `order` limit {self.limit};""" + `diff_order` limit {self.limit};""" data = self.db_conn.query(sql) log.info(f"sql={sql}") @@ -552,7 +581,9 @@ class TapWeeklyReport: def run(self): data = self.build() - print(data) + r_data = self.struct_data(data) + print(r_data) + return r_data def main(): day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') diff --git a/daily_report/templates/tap_weekly.html b/daily_report/templates/tap_weekly.html index f126164..8113a2a 100644 --- a/daily_report/templates/tap_weekly.html +++ b/daily_report/templates/tap_weekly.html @@ -7,42 +7,31 @@

金蚕游戏日报 · OPS

{{ day }}

-{% for key in data.keys() %} +{% for key in data %}
报表类型:{{ key }}报表类型:{{ key.get('name') }}
-

总表

+ + {% for row_name_one in key.get('row_name') %} - - - - - - - - - - - - - - + + {% endfor %} - {% for item in data.get(key) %} - {% for one in item %} + {% for one_data in key.get('row_data') %} + {% for line in one_data %} - {% for one_1 in one %} - + {% for item in one_data %} + {% endfor %} {% endfor %} {% endfor %}
游戏ID游戏名称排名最高排名最低排名排名变动评分游戏标签关注数下载数购买数预约数评论数话题{{ row_name_one }}
{{ one_1 }}{{ item }}