Commit 75f59aba authored by xupeng's avatar xupeng

导出修改

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