Commit ffec9a5d authored by xianyang's avatar xianyang

充值报表增加字段,用户和公会提现增加导出功能

parent db9598e3
...@@ -12,6 +12,7 @@ from starlette.responses import StreamingResponse ...@@ -12,6 +12,7 @@ from starlette.responses import StreamingResponse
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.api.export import crud from app.api.export import crud
from core.config.env import env from core.config.env import env
from libs import functions
from libs.db_link import LinkMysql from libs.db_link import LinkMysql
from libs.functions import time_str_to_timestamp, timestamp_to_time_str, get_month_last_month, get_date_list from libs.functions import time_str_to_timestamp, timestamp_to_time_str, get_month_last_month, get_date_list
from libs.log_utils import Logger from libs.log_utils import Logger
...@@ -614,3 +615,35 @@ def get_menu_config(db: Session, menu_type): ...@@ -614,3 +615,35 @@ def get_menu_config(db: Session, menu_type):
Menuconfig.id.desc()) Menuconfig.id.desc())
data = [QueryAllData.serialization(item, remove={'create_time', 'remark'}) for item in querydata] data = [QueryAllData.serialization(item, remove={'create_time', 'remark'}) for item in querydata]
return data return data
def user_data_handle(data):
"""用户提现数据处理"""
for_mat = []
for i in data:
ting = {}
ting['reference_number'] = i.get('reference_number')
ting['money'] = i.get('money')
ting['reference_type'] = i.get('reference_type')
ting['uuid'] = i.get('uuid')
ting['amount_type'] = i.get('amount_type')
ting['payment_time'] = i.get('payment_time')
for_mat.append(ting)
return for_mat
def guild_data_handle(data):
"""公会提现数据处理"""
guild_mat = []
for i in data:
mat = {}
w_time = functions.timestamp_to_time_str(i.get('withdrawal_time'))
mat['withdrawal_time'] = w_time if w_time else ''
mat['payment_time'] = i.get('payment_time')
mat['guild_id'] = i.get('guild_id')
mat['guild_name'] = i.get('guild_name')
mat['money'] = i.get('money')
mat['dec_money'] = i.get('dec_money')
mat['finalMoney'] = i.get('finalMoney')
guild_mat.append(mat)
return guild_mat
...@@ -273,4 +273,49 @@ def guild_add(data: schemas.GuildAddLog, db: Session = Depends(get_db)): ...@@ -273,4 +273,49 @@ def guild_add(data: schemas.GuildAddLog, db: Session = Depends(get_db)):
def guild_modify(db: Session = Depends(get_db)): def guild_modify(db: Session = Depends(get_db)):
"""公会结算同步""" """公会结算同步"""
code, data = GuildSettlementmodify(db) code, data = GuildSettlementmodify(db)
return HttpResultResponse(code=code, msg=HttpMessage.SUCCESS) return HttpResultResponse(code=code, msg=HttpMessage.SUCCESS)
\ No newline at end of file
@router.get("/userWithdrawal/excel")
def user_withdrawal_excel(request: Request,
db: Session = Depends(get_db),
page: Optional[int] = 1,
size: Optional[int] = 9999999,
uuid: Optional[str] = '',
status: Optional[int] = '',
start_time: Optional[str] = '',
end_time: Optional[str] = "",
month_type: Optional[int] = "",
token=Depends(login_required)):
"""用户提现列表导出"""
query_params = request.query_params
menu_id = query_params.getlist("menu_id[]")
header_list = request.get("headers")
to, statement_list, mo, re = WithdrawStatement().get_user_withdraw_cash(db, page, size, uuid, status, start_time,
end_time, month_type, menu_id)
field_list = ["订单号", "提现金额", "业务类型", "uuid", "账户类型", "提现时间"]
res_data = crud.user_data_handle(statement_list)
url = TableToFile(db, res_data, "用户提现", header_list, field_list).main_method()
return HttpResultResponse(data=url)
@router.get("/guildWithdrawal/excel")
def guild_withdrawal_excel(request: Request,
db: Session = Depends(get_db),
page: Optional[int] = 1,
size: Optional[int] = 9999999,
guild_id: Optional[int] = '',
status: Optional[int] = '',
start_time: Optional[str] = '',
end_time: Optional[str] = "",
month_type: Optional[int] = "",
token=Depends(login_required)):
"""公会提现导出"""
query_params = request.query_params
menu_id=query_params.getlist("menu_id[]")
header_list = request.get("headers")
res = WithdrawStatement().get_guild_withdraw_cash(db,page,size,guild_id,status,start_time,end_time,month_type,menu_id)
field_list = ["提现时间", "处理时间", "公会ID", "公会名称", "提现金额", "扣除金额", "实际到账金额"]
res_data = crud.guild_data_handle(res[1])
url = TableToFile(db, res_data, "公会提现", header_list, field_list).main_method()
return HttpResultResponse(data=url)
...@@ -258,18 +258,21 @@ class TableToFile(object): ...@@ -258,18 +258,21 @@ class TableToFile(object):
write_data = bk.to_dict(orient='records') write_data = bk.to_dict(orient='records')
with pd.ExcelWriter(f'static/{self.name}.xlsx') as writer: with pd.ExcelWriter(f'static/{self.name}.xlsx') as writer:
# bk.to_excel(writer, sheet_name='Sheet1', index=False) # bk.to_excel(writer, sheet_name='Sheet1', index=False)
threads = [] if len(self.data) < 500:
rows_per_thread = math.ceil(len(write_data) / 5) bk.to_excel(writer, sheet_name='sheet', index=False)
for i in range(5): else:
sheet_name = 'sheet' + str(i + 1) threads = []
threads.append(threading.Thread(target=self.thread_task, rows_per_thread = math.ceil(len(write_data) / 5)
args=[bk.iloc[i * rows_per_thread: rows_per_thread * (i+1)], writer, sheet_name])) for i in range(5):
# 启动线程 sheet_name = 'sheet' + str(i + 1)
for y in threads: threads.append(threading.Thread(target=self.thread_task,
y.start() args=[bk.iloc[i * rows_per_thread: rows_per_thread * (i+1)], writer, sheet_name]))
# 等待所有线程完成 # 启动线程
for z in threads: for y in threads:
z.join() y.start()
# 等待所有线程完成
for z in threads:
z.join()
SITE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SITE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
LinkMonitor().upload_block(f'{SITE_ROOT}/static/{self.name}.xlsx', self.name, 'finance/') LinkMonitor().upload_block(f'{SITE_ROOT}/static/{self.name}.xlsx', self.name, 'finance/')
# 记录导出 # 记录导出
...@@ -278,5 +281,6 @@ class TableToFile(object): ...@@ -278,5 +281,6 @@ class TableToFile(object):
Logger().logger.info(f'导出异常:{str(e)}') Logger().logger.info(f'导出异常:{str(e)}')
params["status"] = 2 params["status"] = 2
crud.create_export_data(self.db, params, user) crud.create_export_data(self.db, params, user)
return None
return f"https://{env.TX_BUCKET}.cos.ap-guangzhou.myqcloud.com/finance/{self.name}.xlsx" return f"https://{env.TX_BUCKET}.cos.ap-guangzhou.myqcloud.com/finance/{self.name}.xlsx"
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