scripts/bi/vas_yoy_flow.py

78 lines
2.4 KiB
Python
Raw Normal View History

2024-05-08 19:33:26 +08:00
import time
2024-05-08 16:33:22 +08:00
from lib.all import *
2024-05-08 17:02:00 +08:00
import datetime
2024-05-08 16:33:22 +08:00
# 流水同比
class S:
def __init__(self):
self.mysql_db_vas = Mysql(
"rm-bp11t1616a1kjvmx5.mysql.rds.aliyuncs.com", 3306, "vas", "root", "Wishpal2024"
)
self.mysql_db_bi = Mysql(
2024-07-22 11:54:48 +08:00
"172.31.37.71", 3306, "bi", "root", "Wishpal@2023"
2024-05-08 16:33:22 +08:00
)
def __del__(self):
self.mysql_db_vas.close()
self.mysql_db_bi.close()
def get_last_ptime(self):
sql = '''select * from vas_yoy_flow order by ptime desc limit 1'''
2024-05-08 16:37:08 +08:00
rows = self.mysql_db_bi.query(sql)
2024-05-08 16:33:22 +08:00
if len(rows) > 0:
2024-05-08 16:43:02 +08:00
dt = rows[0].get("ptime")
2024-05-08 16:53:02 +08:00
return int(dt.timestamp())
2024-05-08 16:43:02 +08:00
return 0
2024-05-08 16:33:22 +08:00
def get_flow(self, st, et):
2024-05-08 16:54:43 +08:00
sql = '''select sum(pay_amount) flow from vas_order where ct>={} and ct<{} and order_status in (1,2);'''.format(st, et)
2024-05-08 16:33:22 +08:00
rows = self.mysql_db_vas.query(sql)
if len(rows) > 0:
return safe_get_int(rows[0], "flow")
return 0
2024-05-08 16:59:35 +08:00
def insert_flow(self, ptime, flow):
2024-05-08 17:02:46 +08:00
sql = '''insert into vas_yoy_flow (ptime, flow) values (%s,%s)'''
return self.mysql_db_bi.exec(sql, (ptime, flow))
2024-05-08 16:59:35 +08:00
2024-05-08 19:33:26 +08:00
def update_day_flow(self, flow):
t = get_today_zero_time()
dt = datetime.datetime.fromtimestamp(t)
formatted_dt = dt.strftime('%Y-%m-%d 00:00:00')
2024-05-08 19:41:59 +08:00
sql_q = "select * from vas_day_flow where pdate='{}'".format(get_time_str_by_ts(t))
2024-05-08 19:37:04 +08:00
rows = self.mysql_db_bi.query(sql_q)
2024-05-08 19:33:26 +08:00
if len(rows) > 0:
2024-05-08 19:46:28 +08:00
sql_u = "update vas_day_flow set flow=%s where pdate=%s"
2024-05-08 19:43:01 +08:00
return self.mysql_db_bi.exec(sql_u, (flow, formatted_dt))
2024-05-08 19:36:18 +08:00
else:
2024-05-08 19:41:59 +08:00
sql_i = "insert into vas_day_flow (pdate, flow) values (%s,%s)"
return self.mysql_db_bi.exec(sql_i, (formatted_dt, flow))
2024-05-08 19:33:26 +08:00
2024-05-08 16:33:22 +08:00
def proc(self):
2024-05-08 17:27:09 +08:00
zero_time = get_today_zero_time()
2024-05-08 16:53:02 +08:00
last_time = self.get_last_ptime()
2024-05-08 17:27:09 +08:00
while last_time <= int(time.time()):
2024-05-08 16:53:02 +08:00
next_time = last_time + 300
2024-05-08 17:44:43 +08:00
if next_time > int(time.time()):
2024-05-08 17:43:08 +08:00
return
2024-05-08 17:01:28 +08:00
2024-05-08 17:44:12 +08:00
flow = self.get_flow(zero_time, next_time)
2024-05-08 17:01:28 +08:00
dt = datetime.datetime.fromtimestamp(next_time)
formatted_dt = dt.strftime('%Y-%m-%d %H:%M:%S')
self.insert_flow(formatted_dt, flow)
2024-05-08 22:43:52 +08:00
# self.update_day_flow(flow)
2024-05-08 16:53:02 +08:00
print(get_time_str_by_ts(next_time), flow)
2024-05-08 16:59:35 +08:00
2024-05-08 16:53:02 +08:00
last_time += 300
time.sleep(0.5)
2024-05-08 16:33:22 +08:00
s = S()
s.proc()