Commit 022014ed authored by xupeng's avatar xupeng

新增财务类型

parent acd77a5f
......@@ -6,7 +6,7 @@
<excludeFolder url="file://$MODULE_DIR$/fs-env" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.8 (financial-system)" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="Python 3.8 (financial_system)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
......
......@@ -91,3 +91,5 @@ class RecoveryTable(BaseModel):
class RecoveryupdateTable(RecoveryTable):
id: int
import math
import threading
from concurrent.futures.thread import ThreadPoolExecutor
from datetime import datetime
import openpyxl
import pandas as pd
from sqlalchemy import and_, func
from fastapi import Depends
from sqlalchemy import func, and_
from app import get_db
from app.api.statement import schemas
from app.api.statement.guild import query_token
from starlette.responses import StreamingResponse
from sqlalchemy.orm import Session
......@@ -15,6 +21,8 @@ from libs.db_link import LinkMysql
from libs.functions import time_str_to_timestamp, get_month_last_month
from libs.orm import QueryAllData
from models.recharge import Recharge, UserWC, GuildWC, FinanceFixLog
from models.menuconfig import Menuconfig
from models.users import User
locka = threading.Lock()
......@@ -48,18 +56,21 @@ class RechargeStatement(object):
# self.once_res=[]
# self.moeny_data=[]
def query_data(self,page,size,order_number,uuid,sid,start_time,end_time,type,reference_type,month_type):
def query_data(self,db,page,size,order_number,uuid,sid,start_time,end_time,type,menu_id,month_type):
query=[]
if order_number:
query.append(f"reference_number={order_number} ")
if uuid:
query.append(f"uuid={uuid} ")
query.append(f"uuid='{uuid}'")
if sid:
query.append(f"sid='{sid}' ")
if type:
query.append(f"type='{type}' ")
if reference_type:
query.append(f"reference_type='{reference_type}'")
if menu_id:
querydata=db.query(Menuconfig).filter(Menuconfig.id.in_(tuple(menu_id)))
reference_data = [QueryAllData.serialization(item,remove={'menu_name','remark','menu_type','create_time','id'}) for item in querydata]
reference_type=tuple([item.get("menu_label") for item in reference_data])
query.append(f"reference_type in {reference_type}")
if month_type==1:
if start_time:
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
......@@ -88,22 +99,22 @@ class RechargeStatement(object):
def statistics_data(self,month_type,query,page,size,now_month):
'''统计'''
if month_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_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}"
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.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}"
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} ORDER BY id desc limit {(int(page) - 1) * size},{size}"
once_res = self.linkmysql.query_mysql(sql)
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')"
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 \
self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") != None else 0
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 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_sql = "SELECT sum(a.b) FROM ("f"SELECT count(*) as b FROM assets_log_{int(now_month[0])} where {(' and '.join(query[0]))} UNION ALL SELECT count(*) FROM assets_log_{int(now_month[1])} where {(' and '.join(query[1]))}) AS a "
count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)")
query1=(' and '.join(query[0]))
query2=(' and '.join(query[1]))
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}"
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)
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 "
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 \
self.linkmysql.query_mysql(money_sql)[0].get("sum(a.b)") != None else 0
return count, once_res, moeny_data
......@@ -120,9 +131,10 @@ class RechargeStatement(object):
if data.order_number:
query.append(f"id={data.order_number} ")
if data.user_id:
query.append(f"uuid={data.user_id} ")
query.append(f"uuid='{data.user_id}' ")
if data.sid:
query.append(f"sid='{data.sid}' ")
if data.month_type==1:
if data.start_time:
query.append(f" create_time >= {time_str_to_timestamp(data.start_time + ' 00:00:00')} ")
......@@ -139,12 +151,12 @@ class RechargeStatement(object):
def data_delcy(self,month_type,query,now_month):
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.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')"
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}"
once_res = self.linkmysql.query_mysql(sql)
else:
query1=(' and '.join(query[0]))
query2=(' and '.join(query[1]))
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')"
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} "
once_res = self.linkmysql.query_mysql(sql)
return once_res
......@@ -179,13 +191,17 @@ class WithdrawStatement(object):
data.append(query)
data.append(query1)
return data
def get_user_withdraw_cash(self,page, size, uuid, status,start_time,end_time,month_type):
def get_user_withdraw_cash(self,db,page, size, uuid, status,start_time,end_time,month_type,menu_id):
query = []
if uuid:
query.append(f" uuid={uuid}")
query.append(f" uuid='{uuid}'")
if status:
query.append(f"status={status} ")
query.append(f"reference_type='userWithdrawal' ")
if menu_id:
querydata=db.query(Menuconfig).filter(Menuconfig.id.in_(tuple(menu_id)))
reference_data = [QueryAllData.serialization(item,remove={'menu_name','remark','menu_type','create_time','id'}) for item in querydata]
reference_type=tuple([item.get("menu_label") for item in reference_data])
query.append(f"reference_type in {reference_type}")
if month_type==1:
if start_time:
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
......@@ -223,14 +239,18 @@ class WithdrawStatement(object):
return count, once_res,moeny_data
def get_guild_withdraw_cash(self,page, size, name, status,start_time,end_time,month_type):
def get_guild_withdraw_cash(self,db,page, size, name, status,start_time,end_time,month_type,menu_id):
"""公会提现"""
query = []
if name:
query.append(f" nickname like '%{name}%' ")
if status:
query.append(f"status={status} ")
query.append(f"reference_type='guildWithdrawal' ")
if menu_id:
querydata=db.query(Menuconfig).filter(Menuconfig.id.in_(tuple(menu_id)))
reference_data = [QueryAllData.serialization(item,remove={'menu_name','remark','menu_type','create_time','id'}) for item in querydata]
reference_type=tuple([item.get("menu_label") for item in reference_data])
query.append(f"reference_type in {reference_type}")
if month_type == 1:
if start_time:
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
......@@ -285,3 +305,68 @@ class FinanceFix(object):
result.append(i)
return result, total[0]['num']
return [], 0
def create_menu(db: Session, menu: schemas.MenuAdd):
try:
db_menu = Menuconfig(menu_name=menu.menu_name, menu_label=menu.menu_label,menu_type=menu.menu_type,create_time=datetime.now(),remark=menu.remark if menu.remark!='' else '')
db.add(db_menu)
db.commit()
db.refresh(db_menu)
except Exception as e:
print(e)
return {}
return db_menu
def get_menu_name(db: Session, menu_name: str):
return db.query(Menuconfig).filter(Menuconfig.menu_name == menu_name).first()
def get_menu_id(db: Session, id: str):
return db.query(Menuconfig).filter(Menuconfig.id == id).first()
def get_menu_update(db: Session,data):
query_data=db.query(Menuconfig).filter(Menuconfig.id == data.id).update({Menuconfig.menu_name: data.menu_name,
Menuconfig.menu_label: data.menu_label,
Menuconfig.menu_type: data.menu_type,
Menuconfig.remark: data.remark,
Menuconfig.create_time:datetime.now()
})
db.commit()
return query_data
def get_menu_delete(db: Session,id):
query_data=db.query(Menuconfig).filter(Menuconfig.id == id).delete()
db.commit()
return query_data
def get_menu_list(db: Session,page,size,menu_name,menu_label,menu_type):
querys=[]
if menu_name:
querys.append(Menuconfig.menu_name.like(f'%{menu_name}%'))
if menu_label:
querys.append(Menuconfig.menu_label == menu_label)
if menu_type:
querys.append(Menuconfig.menu_type == menu_type)
if querys:
querydata = db.query(Menuconfig).filter(*querys).order_by(
Menuconfig.id.desc()).offset((int(page) - 1) * size).limit(size)
data = [QueryAllData.serialization(item) for item in querydata]
else:
querydata = db.query(Menuconfig).filter().order_by(
Menuconfig.id.desc()).offset((int(page) - 1) * size).limit(size)
data = [QueryAllData.serialization(item) for item in querydata]
count = db.query(func.count(Menuconfig.id)).filter().scalar()
return data,count
def get_menu_config(db: Session,menu_type):
querys=[]
if menu_type:
querys.append(Menuconfig.menu_type == menu_type)
querydata = db.query(Menuconfig).filter(*querys).order_by(
Menuconfig.id.desc())
data = [QueryAllData.serialization(item,remove={'create_time','remark'}) for item in querydata]
return data
......@@ -131,3 +131,19 @@ class CreateBill(BaseModel):
# if not v:
# raise ValueError('缺少必传参数remark')
# return v
class MenuAdd(BaseModel):
menu_name: str
menu_label: str
menu_type: int
remark: Optional[str] = None
class MenuEdit(BaseModel):
id: str
menu_name: str
menu_label: str
menu_type: int
remark: Optional[str] = None
......@@ -7,12 +7,12 @@ from app.api.account import schemas as acc_schemas
from app import get_db
from fastapi import Depends, APIRouter, File, Request
from sqlalchemy.orm import Session
from app.api.statement.crud import RechargeStatement, WithdrawStatement
from app.api.statement.crud import RechargeStatement, WithdrawStatement, get_menu_list, get_menu_config
from app.api.statement.guild import GuildSet, paymentset_guild_data, outon_account_data, accout_list_data, \
query_uuid_or_user_number, account_money, transfer_money, transfer_query
from app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList, UserNumber, CreateBill
from libs.img_code import new_upload_file, random_number
from libs.result_format import HttpResultResponse
from libs.result_format import HttpResultResponse, HttpMessage
from libs.token_verify import login_required
from models.recharge import Fitransferlog
from models.account import Account
......@@ -21,9 +21,9 @@ router = APIRouter()
@router.get("/recharge/list")
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)):
def statement_recharge_list(db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,order_number: Optional[str] = "",uuid: Optional[str] = "",sid: Optional[str]="",start_time:Optional[str]='',end_time:Optional[str]="",types:Optional[str]="",menu_id:Optional[str]="",month_type:Optional[int]=""):
"""充值报表列表"""
total,statement_list,money= RechargeStatement().query_data(page,size,order_number,uuid,sid,start_time,end_time,types,reference_type,month_type)
total,statement_list,money= RechargeStatement().query_data(db,page,size,order_number,uuid,sid,start_time,end_time,types,menu_id,month_type)
return HttpResultResponse(total=total,count=float(money),data=statement_list)
......@@ -36,21 +36,21 @@ def statement_derive_excel(data: schemas.StatementList, request: Request, db: Se
@router.get("/userWithdrawal/list")
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)):
def user_withdrawal_list(db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,uuid:Optional[str]='',status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",month_type:Optional[int]="",menu_id:Optional[str]="",token=Depends(login_required)):
"""用户提现列表"""
total,statement_list,money = WithdrawStatement(). get_user_withdraw_cash(page,size,uuid,status,start_time,end_time,month_type)
total,statement_list,money = WithdrawStatement(). get_user_withdraw_cash(db,page,size,uuid,status,start_time,end_time,month_type,menu_id)
return HttpResultResponse(total=total, count=float(money), data=statement_list)
@router.get("/guildWithdrawal/list")
def guild_withdrawal_list(page: Optional[int] = 0, size: Optional[int] = 10,guild_id:Optional[int]='',status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="", month_type:Optional[int]="",token=Depends(login_required)):
def guild_withdrawal_list(db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,guild_id:Optional[int]='',status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="", month_type:Optional[int]="",menu_id:Optional[str]="",token=Depends(login_required)):
"""公会提现列表 暂无"""
total,statement_list,money= WithdrawStatement(). get_guild_withdraw_cash(page,size,guild_id,status,start_time,end_time,month_type)
total,statement_list,money= WithdrawStatement(). get_guild_withdraw_cash(db,page,size,guild_id,status,start_time,end_time,month_type,menu_id)
return HttpResultResponse(total=total, count=float(money), data=statement_list)
@router.get("/guild/settlement")
def guild_settlement_list(page: Optional[int] = 0, size: Optional[int] = 10,status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",guild_id:Optional[str]="",token=Depends(login_required)):
def guild_settlement_list(page: Optional[int] = 1, size: Optional[int] = 10,status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",guild_id:Optional[str]="",token=Depends(login_required)):
"""公会结算"""
guild_list, total = GuildSet().get_guild_data(page, size,status,start_time,end_time,guild_id)
return HttpResultResponse(total=total, data=guild_list)
......@@ -188,3 +188,48 @@ def recovery_fix(data: acc_schemas.RecoveryupdateTable, token=Depends(login_requ
if res:
return HttpResultResponse(code=500, msg=res)
return HttpResultResponse()
@router.post("/menu/add")
def menu_add(data: schemas.MenuAdd, db: Session = Depends(get_db),token=Depends(login_required)):
"""新增财务菜单配置"""
db_user = crud.get_menu_name(db,menu_name=data.menu_name)
if db_user:
return HttpResultResponse(code=400, msg=HttpMessage.TYPE_NAME)
res = crud.create_menu(db=db,menu=data)
if not res:
return HttpResultResponse(code=500, msg=HttpMessage.LOSE)
return HttpResultResponse(data=res.id)
@router.get("/menu/list")
def menu_list(db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,menu_name: Optional[str] = "",menu_type: Optional[int] = "",menu_label: Optional[str] = "",token=Depends(login_required)):
"""菜单配置列表"""
menu_list,total = get_menu_list(db,page,size,menu_name,menu_label,menu_type)
return HttpResultResponse(total=total, data=menu_list)
@router.post("/menu/edit")
def menu_edit(data: schemas.MenuEdit,db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,menu_name: Optional[str] = "",menu_type: Optional[int] = "",menu_label: Optional[str] = "",token=Depends(login_required)):
"""修改配置列表"""
db_menu = crud.get_menu_id(db, id=data.id)
if db_menu:
db_menu = crud.get_menu_update(db,data)
else:
return HttpResultResponse(code=400, msg=HttpMessage.MENU_NOT_EXIST)
return HttpResultResponse(data=db_menu)
@router.delete("/menu/delete")
def menu_delte(id: Optional[int] = '',db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,menu_name: Optional[str] = "",menu_type: Optional[int] = "",menu_label: Optional[str] = "",token=Depends(login_required)):
"""删除菜单配置"""
crud.get_menu_delete(db,id)
return HttpResultResponse(code=200, msg=HttpMessage.SUCCESS)
@router.get("/menu/config")
def menu_list(db: Session = Depends(get_db),menu_type: Optional[int] = ""):
"""菜单配置下拉"""
menu_list = get_menu_config(db,menu_type)
return HttpResultResponse(data=menu_list)
\ No newline at end of file
......@@ -34,7 +34,7 @@ def create_access_token(data: dict, expires_delta: Optional[timedelta] = None):
expire = datetime.utcnow() + expires_delta
else:
# 否则的话,就默认用15分钟
expire = datetime.utcnow() + timedelta(minutes=60)
expire = datetime.utcnow() + timedelta(minutes=15)
to_encode.update({'exp': expire})
# 编码,至此 JWT tokens诞生
encoded_jwt = jwt.encode(to_encode, env.SECRET_KEY, algorithm=env.ALGORITHM)
......
......@@ -59,6 +59,7 @@ class QueryAllData:
self.db.session.commit()
return self
def direct_update_(self):
"""直接更新"""
self.db.session.commit()
......
......@@ -10,6 +10,7 @@ class HttpMessage(object):
SUCCESS = "操作成功"
USER_EXIST = "用户已存在"
USER_NOT_EXIST = "用户不存在"
MENU_NOT_EXIST = "菜单不存在"
LOGIN_SUCCESS = "登录成功"
ROLE_EXIST = "角色已存在"
......@@ -17,6 +18,7 @@ class HttpMessage(object):
ACCOUNT_EXIST = "账号已存在"
TYPE_EXIST = "类目标识已存在"
TYPE_NAME ='类型已存在'
DELETE_LOSE = '删除失败'
LOSE = '操作失败'
......@@ -39,7 +41,6 @@ class HttpResultResponse(Response):
'msg': msg if msg else HttpMessage.SUCCESS,
}
result_dict = {**result_dict, **kwargs}
print(result_dict)
super().__init__(
content=json.dumps(result_dict, cls=DecimalEncoder),
media_type="application/json",
......
import datetime
import json
import time
from asyncio.log import logger
from jose.exceptions import JWEError, ExpiredSignatureError
from sqlalchemy.orm import Session
from fastapi import Depends, HTTPException, status
from fastapi import Depends, HTTPException, status, FastAPI
from fastapi.security import OAuth2PasswordBearer
from jose import jwt, JWTError
from werkzeug import Request
from app import get_db
from app.api.role.crud import get_id_to_authority
from app.api.users import crud
from app.api.users.login_verification import get_user
from app.api.users.login_verification import get_user, create_access_token
from core.config.env import env
from libs.functions import md5
......@@ -35,6 +38,8 @@ def auth_token(token: str = Depends(oauth2_scheme)):
return ''
def get_current_user(db: Session, token: str = Depends(oauth2_scheme)):
"""
获取当前用户信息,实际上是一个解密token的过程
......@@ -76,8 +81,6 @@ def judgeToken(token):
user_data = get_user(db, username=payload.get("username"))
old_password = md5(payload["password"])
if old_password == user_data.hashed_password:
print(md5(payload["password"]))
print(user_data.hashed_password)
return True
else:
print("token 身份错误")
......
......@@ -28,13 +28,13 @@ app.add_middleware(
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
hs = request.headers
token=hs.get("authorization").replace('Bearer','').replace(' ','')
token=hs.get("authorization")
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])
payload = jwt.decode(token.replace('Bearer','').replace(' ',''), 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时间
......
from core.storage.db import engine
from models import users, roles, recharge, account, margin, guild, export
from models import users, roles, recharge, account, margin, guild, export,menuconfig
# 映射模型表
users.Base.metadata.create_all(bind=engine)
......@@ -9,3 +9,4 @@ account.Base.metadata.create_all(bind=engine)
margin.Base.metadata.create_all(bind=engine)
guild.Base.metadata.create_all(bind=engine)
export.Base.metadata.create_all(bind=engine)
menuconfig.Base.metadata.create_all(bind=engine)
from sqlalchemy import Column, Integer, String, DateTime, Text
from core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin
class Menuconfig(Base, SerializerMixin):
__tablename__ = "menuconfig"
id = Column(Integer, primary_key=True, index=True)
menu_name = Column(String(100), unique=True, index=True, comment="菜单类型名")
menu_label= Column(String(100), unique=True, index=True, comment="菜单类型别名")
menu_type = Column(Integer, comment="1是充值 2是消费")
remark = Column(Text, comment="备注")
create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '财务菜单配置表'}
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