diff --git a/daily_report/dreport.py b/daily_report/dreport.py index 09461c0..e45d565 100644 --- a/daily_report/dreport.py +++ b/daily_report/dreport.py @@ -11,6 +11,12 @@ from ops.plog import define_logger import logging import datetime import requests +from ops.mmysql import MysqlBase +import json + +db_conf = {'user': 'mytga', 'pswd': 'gzVwh4HGR68G', 'host': '10.10.3.5', 'db': 'external_data'} + + define_logger("/data/logs/ops/daily_report.log") import pdb @@ -28,7 +34,7 @@ app.config['MAIL_PASSWORD'] = 'bX8cfBAyj9MBqH22' mail = Mail(app) # recipients_mini = ["pengtao@kingsome.cn", "tangwenjing@kingsome.cn"] -recipients_mini = ["pengtao@kingsome.cn", "tangwenjing@kingsome.cn", "yuexin@kingsome.cn", "yuetao@kingsome.cn"] +recipients_mini = ["pengtao@kingsome.cn", "tangwenjing@kingsome.cn", "yuexin@kingsome.cn", "yuetao@kingsome.cn"] # recipients_2001 = ["pengtao@kingsome.cn", "chenliang@kingsome.cn"] @@ -95,6 +101,29 @@ def send_dailyreport(): return jsonify("get Data Failed!") +@app.route('/send-tapweekly') +def send_tapweekly(): + title = "TAP周报" + day = request.args.get('day') + recipients = ["pengtao@kingsome.cn"] + msg = Message(title, sender=sender, recipients=recipients) + twr = TapWeeklyReport(day) + data = twr.build() + print(data) + # data[day] = day + msg.subject = f"TAPTAP_{day}_游戏周报" + if data: + msg.html = render_template('tap_weekly.html', data=data, day=day) + + thread = Thread(target=send_async_email, args=[app, msg]) + thread.start() + + return jsonify("邮件发送成功") + else: + return jsonify("get Data Failed!") + + + class Report: def __init__(self, day, project): self.day = day @@ -450,7 +479,7 @@ class Report: mp = MpInterface() fromappids = mp.get_fromappid_cn(args['gameid'], args['channelid']) - # log.info(f"1={fromappids} 2={ss_input_fromappids} 3={ss_output_fromappids}") + log.info(f"1={fromappids} 2={ss_input_fromappids} 3={ss_output_fromappids}") if fromappids and ss_input_fromappids: for item in ss_input_fromappids: args['fromappid'] = item @@ -466,10 +495,55 @@ class Report: args['fromappid_cn'] = fromappids.get(item.split('_success')[0], None) or item temp['output'].append(self.get_output_fromappid(**args)) data.append(temp) - log.info(f"1={data} ") + return data + + +class TapWeeklyReport: + def __init__(self, day): + self.day = day + 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 + + + def build(self): + weekly_day = json.dumps(self.get_weekly_days()).strip('[]') + tap_types = ("new", "download", "reserve", "sell", "played") + all_data = defaultdict(list) + for tap_type in tap_types: + sql = f"""select + gameid, + title, + min(`order`), sum(diff_order), sum(diff_watch), sum(diff_download), sum(diff_topic), score + from + taptap_collect + where + catename='{tap_type}' + and date in ({weekly_day}) + group by + gameid + order by + sum(diff_order) desc limit {self.limit};""" + + data = self.db_conn.query(sql) + if data: + all_data[tap_type].append(data) # print(f"{tap_type}\t{data}") + return all_data + + def run(self): + data = self.build() + print(data) + def main(): day = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') project = 'mini_games'