Commit cc07efec authored by xianyang's avatar xianyang

优化用户提现列表字段

parent eefc649a
...@@ -253,25 +253,66 @@ class WithdrawStatement(object): ...@@ -253,25 +253,66 @@ class WithdrawStatement(object):
"""提现报表""" """提现报表"""
def __init__(self): def __init__(self):
self.derive_user_list = []
self.linkmysql = LinkMysql(env.DB_HISTORY) self.linkmysql = LinkMysql(env.DB_HISTORY)
self.derive_guild_list = []
def thread_to_data(self, db, num):
user_list = []
locka.acquire()
once_res = db.query(UserWC).filter().offset(num * 10).limit(10).all()
locka.release()
for i in once_res:
info_dict = i.to_dict()
user_list.append(info_dict)
self.derive_user_list += user_list
def query_add_time(self,query,start_time, end_time): def query_add_time(self,query,start_time, end_time):
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ") query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
query.append(f" create_time < {time_str_to_timestamp(end_time + ' 23:59:59')} ") query.append(f" create_time < {time_str_to_timestamp(end_time + ' 23:59:59')} ")
return query return query
def user_data_structure(self, user_data, st_time, en_time):
if not user_data:
return user_data
Logger().logger.info("通过assets_log业务数据查用户uuid")
user_uuid_list = []
for user in user_data:
if user['uuid'] not in user_uuid_list:
user_uuid_list.append(user['uuid'])
if len(user_uuid_list) == 1:
user_uuid_list.append(datetime.now().strftime('%Y%m%d%H%M%S'))
Logger().logger.info("用户uuid查用户id")
u_sql = f"select user_id,uuid from v2_user where uuid in{tuple(user_uuid_list)}"
user_id_info = LinkMysql(env.DB_3YV2).query_mysql(u_sql)
user_ids = []
user_uuid_id = {}
user_id_uuid = {}
for i in user_id_info:
user_ids.append(i['user_id'])
user_uuid_id[i['uuid']] = i['user_id']
user_id_uuid[i['user_id']] = i['uuid']
if len(user_ids) == 1:
user_ids.append(datetime.now().strftime('%Y%m%d%H%M%S'))
Logger().logger.info("用户id查用户所属公会")
condition = []
if st_time:
condition.append(f" t.update_time>={time_str_to_timestamp(st_time + ' 00:00:00')}")
if en_time:
condition.append(f" t.update_time<{time_str_to_timestamp(en_time + ' 23:59:59')}")
if condition:
gu_sql = f"select t.userid,t.usernumber,t.nickname,t.current,t.update_time,t.money,t.final_money,g.guild_name from tixian_order as t LEFT JOIN guild as g on t.guild_id=g.id where t.userid in{tuple(user_ids)} and {(' and '.join(condition))}"
else:
gu_sql = f"select t.userid,t.usernumber,t.nickname,t.current,t.update_time,t.money,t.final_money,g.guild_name from tixian_order as t LEFT JOIN guild as g on t.guild_id=g.id where t.userid in{tuple(user_ids)}"
guild_user_info = LinkMysql(env.DB_3YV2).query_mysql(gu_sql)
user_to_guild = {}
for ug in guild_user_info:
ug['uuid'] = user_id_uuid[ug['userid']]
user_to_guild[ug['userid']] = ug.get('guild_name','')
Logger().logger.info("拼接数据!!!!")
for us in user_data:
for tx in guild_user_info:
amount = Decimal(us['amount']).quantize(Decimal("0.00"))
if tx['uuid'] == us['uuid'] and int(amount) == tx['money']:
user_id = user_uuid_id.get(us['uuid'])
us['guild_name'] = user_to_guild.get(user_id)
us['dec_money'] = tx['money'] * 0.05
us['withdrawal_time'] = time_str_to_timestamp(str(tx['current']))
us['update_time'] = tx['update_time']
us['final_money'] = Decimal(tx['final_money']).quantize(Decimal("0.00"))
us['usernumber'] = tx['usernumber']
us['nickname'] = tx['nickname']
us['money'] = tx['money']
return user_data
def get_user_withdraw_cash(self, db, page, size, uuid, status, start_time, end_time, month_type, menu_id): def get_user_withdraw_cash(self, db, page, size, uuid, status, start_time, end_time, month_type, menu_id):
query = [] query = []
if uuid: if uuid:
...@@ -312,7 +353,8 @@ class WithdrawStatement(object): ...@@ -312,7 +353,8 @@ class WithdrawStatement(object):
query_data = self.query_add_time(query,start_time, end_time) query_data = self.query_add_time(query,start_time, end_time)
now_month = get_month_last_month(month_type,start_time,end_time) now_month = get_month_last_month(month_type,start_time,end_time)
count, once_res, moeny_data,reality_moeny = self.dispose_user(month_type, query_data, page, size, now_month) count, once_res, moeny_data,reality_moeny = self.dispose_user(month_type, query_data, page, size, now_month)
return count, once_res, moeny_data/1000,reality_moeny/1000 res_user_data = self.user_data_structure(once_res, start_time, end_time)
return count, res_user_data, moeny_data/1000,reality_moeny/1000
def dispose_user(self, month_type, query, page, size, now_month): def dispose_user(self, month_type, query, page, size, now_month):
if month_type == 1: if month_type == 1:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment