Commit effdc312 authored by xianyang's avatar xianyang

Merge branch 'develop/xp' into development

# Conflicts:
#	libs/functions.py
parents c59d6a49 acd77a5f
...@@ -11,7 +11,7 @@ router = APIRouter() ...@@ -11,7 +11,7 @@ router = APIRouter()
@router.post("/create") @router.post("/create")
def create_account(data: schemas.AccountCreate, token=Depends(login_required)): def create_account(data: schemas.AccountCreate,token=Depends(login_required)):
"""添加账户""" """添加账户"""
db_info = crud.get_account(data.name) db_info = crud.get_account(data.name)
if db_info: if db_info:
......
...@@ -3,7 +3,6 @@ from fastapi import HTTPException, status ...@@ -3,7 +3,6 @@ from fastapi import HTTPException, status
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy import func from sqlalchemy import func
from app.api.role import schemas from app.api.role import schemas
from libs.functions import wrapper_out
from models import roles as models from models import roles as models
......
...@@ -53,12 +53,12 @@ class RechargeStatement(object): ...@@ -53,12 +53,12 @@ class RechargeStatement(object):
# self.once_res=[] # self.once_res=[]
# self.moeny_data=[] # self.moeny_data=[]
def query_data(self,page,size,order_number,user_id,sid,start_time,end_time,type,reference_type,month_type): def query_data(self,page,size,order_number,uuid,sid,start_time,end_time,type,reference_type,month_type):
query=[] query=[]
if order_number: if order_number:
query.append(f"id={order_number} ") query.append(f"reference_number={order_number} ")
if user_id: if uuid:
query.append(f"user_id={user_id} ") query.append(f"uuid={uuid} ")
if sid: if sid:
query.append(f"sid='{sid}' ") query.append(f"sid='{sid}' ")
if type: if type:
...@@ -93,23 +93,22 @@ class RechargeStatement(object): ...@@ -93,23 +93,22 @@ class RechargeStatement(object):
def statistics_data(self,month_type,query,page,size,now_month): def statistics_data(self,month_type,query,page,size,now_month):
'''统计''' '''统计'''
if month_type==1: if month_type==1:
count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query} and type=1" count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount')"
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)")
sql = f'SELECT id,a.uuid,a.amount,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.amount_type,a.reference_number FROM assets_log_{now_month} as a where type=1 and {query} ORDER BY id desc limit {(int(page) - 1) * size},{size}' sql = f"SELECT id,a.uuid,a.amount,FROM_UNIXTIME(a.create_time,'%Y-%c-%d %h:%i:%s') as payment_time,a.reference_type,a.reference_number FROM assets_log_{now_month} as a where {query} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') ORDER BY id desc limit {(int(page) - 1) * size},{size}"
once_res = self.linkmysql.query_mysql(sql) once_res = self.linkmysql.query_mysql(sql)
money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query} and type=1" money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount')"
moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") if \ moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") if \
self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") != None else 0 self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") != None else 0
else: else:
count_sql = "SELECT sum(a.b) FROM ("f"SELECT count(*) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} and type=1 UNION ALL SELECT count(*) FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} and type=1 ) AS a " count_sql = "SELECT sum(a.b) FROM ("f"SELECT count(*) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') UNION ALL SELECT count(*) FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount')) AS a "
count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)") count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)")
query1=(' and '.join(query[0])) query1=(' and '.join(query[0]))
query2=(' and '.join(query[1])) query2=(' and '.join(query[1]))
sql = f'SELECT id,uuid,amount,FROM_UNIXTIME(create_time,"%Y-%c-%d %h:%i:%s") as payment_time,amount_type,reference_number FROM assets_log_{int(now_month[0])} where {query1} and type=1 UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,"%Y-%c-%d %h:%i:%s") as payment_time,amount_type,reference_number FROM assets_log_{int(now_month[1])} where {query2} and type=1 ORDER BY id desc limit {(int(page) - 1) * size},{size}' sql = f"SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,reference_number FROM assets_log_{int(now_month[0])} where {query1} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,reference_number FROM assets_log_{int(now_month[1])} where {query2} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') ORDER BY id desc limit {(int(page) - 1) * size},{size}"
print(sql)
once_res = self.linkmysql.query_mysql(sql) once_res = self.linkmysql.query_mysql(sql)
money_sql = f"SELECT sum(a.b) FROM ("f"SELECT sum(amount) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} and type=1 UNION ALL SELECT sum(amount)FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} and type=1 ) AS a " money_sql = f"SELECT sum(a.b) FROM ("f"SELECT sum(amount) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') UNION ALL SELECT sum(amount)FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount') ) AS a "
moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") if \ moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") if \
self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") != None else 0 self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") != None else 0
return count, once_res, moeny_data return count, once_res, moeny_data
...@@ -123,15 +122,11 @@ class RechargeStatement(object): ...@@ -123,15 +122,11 @@ class RechargeStatement(object):
def get_statements(self,data): def get_statements(self,data):
query = [] 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: if data.order_number:
query.append(f"id={data.order_number} ") query.append(f"id={data.order_number} ")
elif data.user_id: if data.user_id:
query.append(f"user_id={data.user_id} ") query.append(f"uuid={data.user_id} ")
elif data.sid: if data.sid:
query.append(f"sid='{data.sid}' ") query.append(f"sid='{data.sid}' ")
if data.month_type==1: if data.month_type==1:
if data.start_time: if data.start_time:
...@@ -140,21 +135,21 @@ class RechargeStatement(object): ...@@ -140,21 +135,21 @@ class RechargeStatement(object):
query.append(f" create_time < {time_str_to_timestamp(data.end_time + ' 23:59:59')} ") query.append(f" create_time < {time_str_to_timestamp(data.end_time + ' 23:59:59')} ")
query = ' and '.join(query) query = ' and '.join(query)
now_month = get_month_last_month(data.month_type) now_month = get_month_last_month(data.month_type)
count,once_res,moeny_data=self.data_delcy(data.month_type,query,now_month[1]) once_res=self.data_delcy(data.month_type,query,now_month[1])
else: else:
query_data=self.query_add_time(data.start_time,data.end_time) query_data=self.query_add_time(data.start_time,data.end_time)
now_month = get_month_last_month(data.month_type) now_month = get_month_last_month(data.month_type)
count, once_res, moeny_data = self.data_delcy(data.month_type, query_data,now_month) once_res = self.data_delcy(data.month_type, query_data,now_month)
return once_res return once_res
def data_delcy(self,month_type,query,now_month): def data_delcy(self,month_type,query,now_month):
if month_type==1: if month_type==1:
sql = f'SELECT a.uuid,a.amount,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.amount_type,a.order_number FROM assets_log_{now_month} as a where type=1 and {query}' sql = f"SELECT a.uuid,a.amount,FROM_UNIXTIME(a.create_time,'%Y-%c-%d %h:%i:%s') as payment_time,a.reference_type,a.order_number FROM assets_log_{now_month} as a where {query} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount')"
once_res = self.linkmysql.query_mysql(sql) once_res = self.linkmysql.query_mysql(sql)
else: else:
query1=(' and '.join(query[0])) query1=(' and '.join(query[0]))
query2=(' and '.join(query[1])) query2=(' and '.join(query[1]))
sql = f'SELECT id,uuid,amount,FROM_UNIXTIME(create_time,"%Y-%c-%d %h:%i:%s") as payment_time,amount_type,order_number FROM assets_log_{int(now_month[0])} where {query1} UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,"%Y-%c-%d %h:%i:%s") as payment_time,amount_type,order_number FROM assets_log_{int(now_month[1])} where {query2}' sql = f"SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,order_number FROM assets_log_{int(now_month[0])} where {query1} UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,order_number FROM assets_log_{int(now_month[1])} where {query2} and reference_type in('picture_scroll_recharge','relic_recharge','userRecharge','pay_discount')"
once_res = self.linkmysql.query_mysql(sql) once_res = self.linkmysql.query_mysql(sql)
return once_res return once_res
...@@ -189,10 +184,10 @@ class WithdrawStatement(object): ...@@ -189,10 +184,10 @@ class WithdrawStatement(object):
data.append(query) data.append(query)
data.append(query1) data.append(query1)
return data return data
def get_user_withdraw_cash(self,page, size, name, status,start_time,end_time,month_type): def get_user_withdraw_cash(self,page, size, uuid, status,start_time,end_time,month_type):
query = [] query = []
if name: if uuid:
query.append(f" nickname like '%{name}%' ") query.append(f" uuid={uuid}")
if status: if status:
query.append(f"status={status} ") query.append(f"status={status} ")
query.append(f"reference_type='userWithdrawal' ") query.append(f"reference_type='userWithdrawal' ")
...@@ -215,7 +210,7 @@ class WithdrawStatement(object): ...@@ -215,7 +210,7 @@ class WithdrawStatement(object):
if month_type == 1: if month_type == 1:
count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}" count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}"
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)")
sql = f'SELECT uuid,a.reference_type,a.reference_number,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.amount_type FROM assets_log_{now_month} as a where {query} ORDER BY id desc limit {(int(page) - 1) * size},{size}' sql = f'SELECT uuid,a.reference_type,a.reference_number,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.reference_type FROM assets_log_{now_month} as a where {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)
money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query} " money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query} "
moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") if \ moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") if \
...@@ -225,7 +220,7 @@ class WithdrawStatement(object): ...@@ -225,7 +220,7 @@ class WithdrawStatement(object):
count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)") count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)")
query1 = (' and '.join(query[0])) query1 = (' and '.join(query[0]))
query2 = (' and '.join(query[1])) query2 = (' and '.join(query[1]))
sql = f"SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,amount_type,reference_number FROM assets_log_{int(now_month[0])} where {query1} UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,amount_type,reference_number FROM assets_log_{int(now_month[1])} where {query2} ORDER BY id desc limit {(int(page) - 1) * size},{size}" sql = f"SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,reference_number FROM assets_log_{int(now_month[0])} where {query1} UNION ALL SELECT id,uuid,amount,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as payment_time,reference_type,reference_number FROM assets_log_{int(now_month[1])} where {query2} ORDER BY id desc limit {(int(page) - 1) * size},{size}"
once_res = self.linkmysql.query_mysql(sql) once_res = self.linkmysql.query_mysql(sql)
money_sql = f"SELECT sum(a.b) FROM ("f"SELECT sum(amount) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} UNION ALL SELECT sum(amount)FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} ) AS a " money_sql = f"SELECT sum(a.b) FROM ("f"SELECT sum(amount) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} UNION ALL SELECT sum(amount)FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))} ) AS a "
moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") if \ moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") if \
......
...@@ -21,9 +21,9 @@ router = APIRouter() ...@@ -21,9 +21,9 @@ router = APIRouter()
@router.get("/recharge/list") @router.get("/recharge/list")
def statement_recharge_list(page: Optional[int] = 0, size: Optional[int] = 10,order_number: Optional[str] = "",user_id: Optional[int] = "",sid: Optional[str]="",start_time:Optional[str]='',end_time:Optional[str]="",types:Optional[str]="",reference_type:Optional[str]="",month_type:Optional[int]="",token=Depends(login_required)): def statement_recharge_list(page: Optional[int] = 0, size: Optional[int] = 10,order_number: Optional[str] = "",uuid: Optional[int] = "",sid: Optional[str]="",start_time:Optional[str]='',end_time:Optional[str]="",types:Optional[str]="",reference_type:Optional[str]="",month_type:Optional[int]="",token=Depends(login_required)):
"""充值报表列表""" """充值报表列表"""
total,statement_list,money= RechargeStatement().query_data(page,size,order_number,user_id,sid,start_time,end_time,types,reference_type,month_type) total,statement_list,money= RechargeStatement().query_data(page,size,order_number,uuid,sid,start_time,end_time,types,reference_type,month_type)
return HttpResultResponse(total=total,count=float(money),data=statement_list) return HttpResultResponse(total=total,count=float(money),data=statement_list)
...@@ -36,9 +36,9 @@ def statement_derive_excel(data: schemas.StatementList, request: Request, db: Se ...@@ -36,9 +36,9 @@ def statement_derive_excel(data: schemas.StatementList, request: Request, db: Se
@router.get("/userWithdrawal/list") @router.get("/userWithdrawal/list")
def user_withdrawal_list(page: Optional[int] = 0, size: Optional[int] = 10,name:Optional[str]='',status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",month_type:Optional[int]="",token=Depends(login_required)): def user_withdrawal_list(page: Optional[int] = 0, size: Optional[int] = 10,uuid:Optional[int]='',status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",month_type:Optional[int]="",token=Depends(login_required)):
"""用户提现列表""" """用户提现列表"""
total,statement_list,money = WithdrawStatement(). get_user_withdraw_cash(page,size,name,status,start_time,end_time,month_type) total,statement_list,money = WithdrawStatement(). get_user_withdraw_cash(page,size,uuid,status,start_time,end_time,month_type)
return HttpResultResponse(total=total, count=float(money), data=statement_list) return HttpResultResponse(total=total, count=float(money), data=statement_list)
......
...@@ -85,9 +85,7 @@ def wrapper_out(): ...@@ -85,9 +85,7 @@ def wrapper_out():
param.size = param.size if param.size else 10 param.size = param.size if param.size else 10
ret = func(db, param) ret = func(db, param)
return ret return ret
return inner return inner
return wrapper return wrapper
...@@ -117,9 +115,16 @@ def get_ip(): ...@@ -117,9 +115,16 @@ def get_ip():
def get_month_last_month(month_type): def get_month_last_month(month_type):
last_month = 0 last_month=0
if month_type == 2: if month_type==2:
month_date = datetime.now().date() - relativedelta(months=1) month_date = datetime.now().date() - relativedelta(months=1)
last_month = month_date.strftime("%Y%m") last_month = month_date.strftime("%Y%m")
now_month = datetime.now().strftime("%Y%m") now_month =datetime.now().strftime("%Y%m")
return last_month, now_month return last_month,now_month
def time_format(utc_timestamp: int):
days = (utc_timestamp + 3600 * 8) % 86400
hours = int(days / 3600)
time_str = hours
return time_str
\ No newline at end of file
import time
from datetime import timedelta, datetime
import uvicorn import uvicorn
from fastapi import FastAPI from fastapi import FastAPI, Depends
from jose import jwt
from app.api.api_v1 import api_router from app.api.api_v1 import api_router
from starlette.middleware.cors import CORSMiddleware from starlette.middleware.cors import CORSMiddleware
from fastapi import Request
from core.config.env import env
from core.dependencies.auth_dependen import create_access_token
from libs.functions import time_format
from libs.token_verify import oauth2_scheme
app = FastAPI() app = FastAPI()
...@@ -15,6 +25,21 @@ app.add_middleware( ...@@ -15,6 +25,21 @@ app.add_middleware(
allow_methods=['*'], # 设置允许跨域的http方法,比如 get、post、put等。 allow_methods=['*'], # 设置允许跨域的http方法,比如 get、post、put等。
allow_headers=['*']) # 允许跨域的headers,可以用来鉴别来源等作用。 allow_headers=['*']) # 允许跨域的headers,可以用来鉴别来源等作用。
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
hs = request.headers
token=hs.get("authorization").replace('Bearer','').replace(' ','')
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
if token:
payload = jwt.decode(token, env.SECRET_KEY, algorithms=[env.ALGORITHM])
timestamp=payload.get("exp")
access_token_expires = timedelta(hours=time_format(timestamp))
create_access_token({'username':payload.get("xup"),'password':payload.get("password")},expires_delta=access_token_expires) #更新token时间
return response
app.include_router(api_router, prefix="/api") # 路由 app.include_router(api_router, prefix="/api") # 路由
......
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