This commit is contained in:
root 2019-11-21 10:24:25 +08:00
parent 1f96372e33
commit 5ce41d5644

View File

@ -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'