Commit 75f59aba authored by xupeng's avatar xupeng

导出修改

parent 2de2d5e4
import math
import threading
from concurrent.futures.thread import ThreadPoolExecutor
import openpyxl
import pandas as pd
from sqlalchemy import and_, func
from app.api.statement.guild import query_token
......@@ -49,14 +49,14 @@ class RechargeStatement(object):
def query_data(self,page,size,order_number,user_id,sid,start_time,end_time):
query=[]
if start_time:
query.append(f" current >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
query.append(f" lastupdate >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
if end_time:
query.append(f" lastupdate < {time_str_to_timestamp(end_time + ' 23:59:59')} ")
if order_number:
query.append(f"id={order_number} ")
elif user_id:
if user_id:
query.append(f"user_id={user_id} ")
elif sid:
if sid:
query.append(f"sid='{sid}' ")
if query==[]:
count_sql=f"SELECT count(*) FROM `orders` as d inner join v2_user as u on d.userid=u.user_id where status=1"
......@@ -67,9 +67,8 @@ class RechargeStatement(object):
moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(d.balanceadd)") if \
self.linkmysql.query_mysql(money_sql)[0].get("sum(d.balanceadd)") != None else 0
else:
query = ' and '.join(query)
query = ' and '.join(query).replace('lastupdate','d.lastupdate').replace('current','d.current')
count_sql=f"SELECT count(*) FROM `orders` as d inner join v2_user as u on d.userid=u.user_id where status=1 and {query}"
print(count_sql)
count=self.linkmysql.query_mysql(count_sql)[0].get("count(*)")
sql =f'SELECT d.id as order_number,d.userid as user_id,u.user_number,u.nick_name,d.money,d.paychannel as pay_channel,d.sid,d.current,FROM_UNIXTIME(d.payment_time,"%Y-%c-%d %h:%i:%s") as payment_time,FROM_UNIXTIME(d.lastupdate,"%Y-%c-%d %h:%i:%s") as last_update FROM `orders` as d inner join v2_user as u on d.userid=u.user_id where status=1 and {query} ORDER BY id desc limit {(int(page) - 1) * size},{size}'
once_res=self.linkmysql.query_mysql(sql)
......@@ -94,43 +93,63 @@ class RechargeStatement(object):
# ths[z].join()
# return self.derive_list
def get_statements(self, db: Session, param, sp=None):
"""列表"""
not_null_filters = []
if param.order_number:
not_null_filters.append(Recharge.order_number == param.order_number)
if param.user_id:
not_null_filters.append(Recharge.user_id == param.user_id)
if param.sid:
not_null_filters.append(Recharge.sid.like(f'%{param.sid}%'))
if param.pay_channel:
not_null_filters.append(Recharge.pay_channel.like(f'%{param.pay_channel}%'))
if param.start_time:
not_null_filters.append(Recharge.current >= param.start_time)
if param.end_time:
not_null_filters.append(Recharge.current <= param.end_time)
# 判断有无条件
try:
if len(not_null_filters) > 0:
get_user_orm_sql = db.query(Recharge).filter(and_(*not_null_filters))
condition_data = db.execute(get_user_orm_sql).fetchall()
serializer_info = [i[0].to_dict() for i in condition_data]
serializer_info.reverse()
else:
serializer_info = self.query_all_data(db)
except Exception as e:
print(e)
return [], 0, 0 if sp else []
# 判断是列表还是导出接口
if sp:
if serializer_info:
total = len(serializer_info)
df = pd.DataFrame(serializer_info)
count = df['money'].apply(lambda x: x).sum()
return serializer_info[(int(param.page) - 1) * param.size:param.size * param.page], total, count
return [], 0, 0
# def get_statements(self, db: Session, param, sp=None):
# """列表"""
# not_null_filters = []
# if param.order_number:
# not_null_filters.append(Recharge.order_number == param.order_number)
# if param.user_id:
# not_null_filters.append(Recharge.user_id == param.user_id)
# if param.sid:
# not_null_filters.append(Recharge.sid.like(f'%{param.sid}%'))
# if param.pay_channel:
# not_null_filters.append(Recharge.pay_channel.like(f'%{param.pay_channel}%'))
# if param.start_time:
# not_null_filters.append(Recharge.current >= param.start_time)
# if param.end_time:
# not_null_filters.append(Recharge.current <= param.end_time)
# # 判断有无条件
# try:
# if len(not_null_filters) > 0:
# get_user_orm_sql = db.query(Recharge).filter(and_(*not_null_filters))
# condition_data = db.execute(get_user_orm_sql).fetchall()
# serializer_info = [i[0].to_dict() for i in condition_data]
# serializer_info.reverse()
# else:
# serializer_info = self.query_all_data(db)
# except Exception as e:
# print(e)
# return [], 0, 0 if sp else []
# # 判断是列表还是导出接口
# if sp:
# if serializer_info:
# total = len(serializer_info)
# df = pd.DataFrame(serializer_info)
# count = df['money'].apply(lambda x: x).sum()
# return serializer_info[(int(param.page) - 1) * param.size:param.size * param.page], total, count
# return [], 0, 0
# else:
# return serializer_info
def get_statements(self,data):
query = []
if data.start_time:
query.append(f" lastupdate >= {time_str_to_timestamp(data.start_time + ' 00:00:00')} ")
if data.end_time:
query.append(f" lastupdate < {time_str_to_timestamp(data.end_time + ' 23:59:59')} ")
if data.order_number:
query.append(f"id={data.order_number} ")
elif data.user_id:
query.append(f"user_id={data.user_id} ")
elif data.sid:
query.append(f"sid='{data.sid}' ")
if query == []:
sql = f'SELECT d.id as order_number,d.userid as user_id,u.user_number,u.nick_name,d.money,d.paychannel as pay_channel,d.sid,d.current,FROM_UNIXTIME(d.payment_time,"%Y-%c-%d %h:%i:%s") as payment_time,FROM_UNIXTIME(d.lastupdate,"%Y-%c-%d %h:%i:%s") as last_update FROM `orders` as d inner join v2_user as u on d.userid=u.user_id where status=1 ORDER BY id desc'
once_res = self.linkmysql.query_mysql(sql)
else:
return serializer_info
query = ' and '.join(query)
sql = f'SELECT d.id as order_number,d.userid as user_id,u.user_number,u.nick_name,d.money,d.paychannel as pay_channel,d.sid,d.current,FROM_UNIXTIME(d.payment_time,"%Y-%c-%d %h:%i:%s") as payment_time,FROM_UNIXTIME(d.lastupdate,"%Y-%c-%d %h:%i:%s") as last_update FROM `orders` as d inner join v2_user as u on d.userid=u.user_id where status=1 and {query} ORDER BY id desc'
once_res = self.linkmysql.query_mysql(sql)
return once_res
class WithdrawStatement(object):
......
......@@ -386,10 +386,6 @@ def transfer_query(data):
'''
调用
'''
print(data)
print(data.cont)
payment_sql = f"insert into payment_log(cont,money,url,uuid) values({data.cont},{data.money},{data.url},{data.uuid})"
print(payment_sql)
payment_sql=f"insert into payment_log(cont,money,url,uuid) values('{data.cont}','{data.money}','{data.url}','{data.uuid}')"
LinkMysql(env.DB_3YV2).excete_mysql(payment_sql)
params = {}
......@@ -398,8 +394,8 @@ def transfer_query(data):
params['dst_uuid'] = data.uuid
params['ip'] = get_ip()
params['dst_amount_type'] = 'Payment'
params['amount'] = 'consumable'
params['fee'] = data.money * -1
params['amount'] = 1
params['fee'] = data.money *-1 if data.money<0 else data.money
params['reference_number'] = get_order()
params['reference_type'] = 'finance_admin_fix'
params['reference_info'] = []
......@@ -409,11 +405,11 @@ def transfer_query(data):
params['dst_uuid'] = data.uuid
params['ip'] = get_ip()
params['dst_amount_type'] = 'Payment'
params['amount'] = 'consumable'
params['fee'] = data.money * -1
params['amount'] = 1
params['fee'] = data.money *-1 if data.money<0 else data.money
params['reference_number'] = get_order()
params['reference_type'] = 'finance_admin_fix'
params['reference_info'] = []
params['timestamp'] = 0
response =search(params=params,method=method)
print(response.text)
search(params=params,method=method)
return
......@@ -31,7 +31,7 @@ def statement_recharge_list(page: Optional[int] = 0, size: Optional[int] = 10,or
def statement_derive_excel(data: schemas.StatementList, request: Request, db: Session = Depends(get_db)):
"""充值报表导出 需要修改"""
header_list = request.get("headers")
statement_list = RechargeStatement().get_statements(db, data)
statement_list = RechargeStatement().get_statements(data)
return crud.data_to_file(db, statement_list, "充值报表", header_list)
......@@ -77,7 +77,7 @@ async def uploadFile(a_file: bytes = File(...),token=Depends(login_required),):
def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)):
"""提交打款"""
transfer_query(data)
return HttpResultResponse(data='')
return HttpResultResponse(code=200,data='')
@router.get("/onaccount")
......
......@@ -63,7 +63,6 @@ class Env(BaseSettings):
# DB_HISTORY = "3yakj_v2"
# guild_url=""
oss_url='http://oss.3yakj.com/application_static_data'
clear_url="http://192.168.4.124:8002"
CLEARING_CENTER_URL: str = 'http://106.55.103.148:6464/'
......
......@@ -88,7 +88,7 @@ def search(params, method):
:param params: 传入参数
:param method: 传入方法
"""
url = env.clear_url
url = env.CLEARING_CENTER_URL
header = {
"RPC-METHOD": method,
"RPC-ID": '159',
......@@ -99,7 +99,7 @@ def search(params, method):
if response.status_code != 200:
return {"status": 0}
text = json.loads(response.text)
return {"status": 1, 'data': text.get('result')}
return {"status": 1, 'data': text.get('data').get("result")}
def get_ip():
......
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