Commit b6bcf951 authored by xianyang's avatar xianyang

优化公会账户

parent 83bb14de
...@@ -407,6 +407,9 @@ class AccountStatistics(object): ...@@ -407,6 +407,9 @@ class AccountStatistics(object):
total_list = [] total_list = []
yw_condition = self.public_query() yw_condition = self.public_query()
month, last_month, before_last_month = get_last_month() month, last_month, before_last_month = get_last_month()
if self.unique == 'guild_account':
data, total = self.guild_calculation()
return data, total, 0
if self.unique == "user_account": if self.unique == "user_account":
if self.user_id: if self.user_id:
user_sql = f"select uuid from v2_user where user_id={self.user_id}" user_sql = f"select uuid from v2_user where user_id={self.user_id}"
...@@ -452,12 +455,19 @@ class AccountStatistics(object): ...@@ -452,12 +455,19 @@ class AccountStatistics(object):
else: else:
return res return res
def guild_calculation(self):
start_time = time_str_to_timestamp(self.start_time + ' 00:00:00')
end_time = time_str_to_timestamp(self.end_time + ' 23:59:59')
sql = f"select guild_id,initial_money,income,outcome,create_time from v3_guild_account_detail_copy where create_time>={start_time} and create_time<{end_time}"
mysql_data = LinkMysql(env.DB_3YV2).query_mysql(sql)
return mysql_data[int(self.page - 1) * self.size: self.page * self.size], len(mysql_data)
def delete_specify_field(data): def delete_specify_field(data):
res_list = [] res_list = []
for i in data: for i in data:
structure = { structure = {
"order_number": i["order_number"], "reference_number": i["reference_number"],
"type": '出账' if i["type"] == 0 else '入账', "type": '出账' if i["type"] == 0 else '入账',
"reference_type": i["reference_type"], "reference_type": i["reference_type"],
"amount": round(float(i["amount"]), 3), "amount": round(float(i["amount"]), 3),
...@@ -470,10 +480,11 @@ def delete_specify_field(data): ...@@ -470,10 +480,11 @@ def delete_specify_field(data):
class SpecificAccountQuery(object): class SpecificAccountQuery(object):
"""账户用户,背包,公会第四层查询""" """账户用户,背包,公会第四层查询"""
def __init__(self, page, size, uuid, time, type, reference_type, unique_tag): def __init__(self, page, size, uuid, time, type, reference_type, unique_tag, guild_id):
self.page = page self.page = page
self.size = size self.size = size
self.uuid = uuid self.uuid = uuid
self.guild_id = guild_id
self.start_time = time self.start_time = time
self.end_time = time self.end_time = time
self._type = type self._type = type
...@@ -482,13 +493,18 @@ class SpecificAccountQuery(object): ...@@ -482,13 +493,18 @@ class SpecificAccountQuery(object):
self.total_list = [] self.total_list = []
def condition_query(self, date, cond_list): def condition_query(self, date, cond_list):
sql = f"select uuid,type,cast(amount as decimal(20,6))/1000 as amount,reference_type,reference_number,order_number,create_time,amount_type from {date} WHERE {' and '.join(cond_list)} ORDER BY create_time DESC" sql = f"select uuid,type,cast(amount as decimal(20,6))/1000 as amount,reference_type,reference_number,order_number,create_time,amount_type from {date} WHERE {' and '.join(cond_list)} ORDER BY create_time DESC"
result = LinkMysql(env.DB_HISTORY).query_mysql(sql) result = LinkMysql(env.DB_HISTORY).query_mysql(sql)
return result return result
def business_logic(self): def business_logic(self):
condition = [] condition = []
if self.unique_tag == 'guild_account':
guild_sql = f"select uuid from guild where id={self.guild_id}"
guild_data = LinkMysql(env.DB_3YV2).query_mysql(guild_sql)
if not guild_data:
return [], 0, 0
self.uuid = guild_data[0]['uuid']
condition.append(f" uuid='{self.uuid}'") condition.append(f" uuid='{self.uuid}'")
condition.append(f" create_time >= {time_str_to_timestamp(self.start_time + ' 00:00:00')}") condition.append(f" create_time >= {time_str_to_timestamp(self.start_time + ' 00:00:00')}")
end_time = time_str_to_timestamp(self.end_time + ' 00:00:00') + 86400 # 结束时间那天包含在内,固小于第二天凌晨 end_time = time_str_to_timestamp(self.end_time + ' 00:00:00') + 86400 # 结束时间那天包含在内,固小于第二天凌晨
......
...@@ -108,15 +108,17 @@ def finance_info_excel(data: schemas.FinanceDetails, request: Request, ...@@ -108,15 +108,17 @@ def finance_info_excel(data: schemas.FinanceDetails, request: Request,
def finance_fourth_info(page: int, def finance_fourth_info(page: int,
size: int, size: int,
uuid: Optional[str] = "", uuid: Optional[str] = "",
guild_id: Optional[str] = "", # 针对公会账户,没有uuid,传公会id过来,再查uuid
time: Optional[str] = "", time: Optional[str] = "",
type: Optional[int] = None, type: Optional[int] = None,
reference_type: Optional[str] = "", reference_type: Optional[str] = "",
unique_tag: Optional[str] = "", unique_tag: Optional[str] = "",
token=Depends(login_required)): token=Depends(login_required)):
"""账户财务明细 第四层""" """账户财务明细 第四层"""
if not all([uuid, time, unique_tag]): if not all([time, unique_tag]):
return HttpResultResponse(code=500, msg="缺少必传参数") return HttpResultResponse(code=500, msg="缺少必传参数")
res, total, count = SpecificAccountQuery(page, size, uuid, time, type, reference_type, unique_tag).business_logic() res, total, count = SpecificAccountQuery(page, size, uuid, time, type, reference_type, unique_tag,
guild_id).business_logic()
return HttpResultResponse(total=total, data=res, count=count) return HttpResultResponse(total=total, data=res, count=count)
......
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