Commit 1494f661 authored by xianyang's avatar xianyang

报表-修复报表优化

parent f0925b50
......@@ -45,5 +45,5 @@ class FixTable(BaseModel):
type: int
account_id: int
money: float
amount_type: str
amount_type: str = ""
remark: str
......@@ -9,6 +9,7 @@ from starlette.responses import StreamingResponse
from sqlalchemy.orm import Session
from libs.functions import wrapper_out
from libs.orm import QueryAllData
from models.recharge import Recharge, UserWC, GuildWC, FinanceFixLog
locka = threading.Lock()
......@@ -215,9 +216,17 @@ class WithdrawStatement(object):
class FinanceFix(object):
@staticmethod
@wrapper_out()
def get_finance_fix_data(db: Session, data):
"""财务修复"""
total = db.query(func.count(FinanceFixLog.id)).scalar()
output = db.query(FinanceFixLog).limit(data.page * data.size).offset((data.page - 1) * data.size).all()
return [i.to_dict() for i in output], total
# total = db.query(func.count(FinanceFixLog.id)).scalar()
# output = db.query(FinanceFixLog).order_by(FinanceFixLog.id.desc()).offset((data.page - 1) *
# data.size).limit(data.size).all()
# return [i.to_dict() for i in output], total
finance_filters = []
if data.get("start_time"):
finance_filters.append(FinanceFixLog.create_time >= data.get("start_time") + " 00:00:00")
if data.get("end_time"):
finance_filters.append(FinanceFixLog.create_time <= data.get("end_time") + " 23:59:59")
querydata, count = QueryAllData(db, FinanceFixLog, data, finance_filters).query_data()
data = [QueryAllData.serialization(item) for item in querydata]
return data, count
......@@ -123,9 +123,9 @@ def accout_list_data(db: Session, dbname, params):
if params.get("uuid"):
accout_filters.append(dbname.uuid == params.get("uuid"))
if params.get("start_time"):
accout_filters.append(dbname.create_time >= params.get("start_time"))
accout_filters.append(dbname.create_time >= params.get("start_time") + " 00:00:00")
if params.get("end_time"):
accout_filters.append(dbname.create_time <= params.get("end_time"))
accout_filters.append(dbname.create_time <= params.get("end_time") + " 23:59:59")
querydata, count = QueryAllData(db, dbname, params, accout_filters).query_data()
data = [QueryAllData.serialization(item) for item in querydata]
return data, count
......@@ -139,8 +139,8 @@ def query_uuid_or_user_number(db: Session, param):
guild = db.query(Guild).filter(Guild.uuid == param.uuid).first()
if not guild:
return {}
return {"nick_name": "(公会)" + guild.guild_name, "user_number": guild.id}
return {"nick_name": user.nick_name, "user_number": user.user_id}
return {"nick_name": "(公会)" + guild.guild_name, "user_number": guild.id, "is_guild": 1}
return {"nick_name": user.nick_name, "user_number": user.user_id, "is_guild": 0}
if param.user_number:
user = db.query(V2User).filter(V2User.user_number == param.user_number).first()
return {"nick_name": user.nick_name, "user_id": user.user_id, "uuid": user.uuid}
......@@ -188,6 +188,8 @@ def transfer_money(db: Session, param, h_list):
def create_fix_table(db: Session, param, h_list):
"""增加修复报表"""
user = query_token(db, h_list)
if param.type == 0:
param.amount_type = 'consumable'
try:
present = FinanceFixLog(type=param.type, account_id=param.account_id, money=param.money,
remark=param.remark, operator=user.get("username"), amount_type=param.amount_type,
......
......@@ -122,7 +122,7 @@ def guild_update_list(data: schemas.GuildUpdate, db: Session = Depends(get_db)):
@router.post("/finance/fix")
def finance_fix(data: acc_schemas.PublicModel, db: Session = Depends(get_db)):
"""账户修复报表"""
res, num = crud.FinanceFix.get_finance_fix_data(db, data)
res, num = crud.FinanceFix.get_finance_fix_data(db, data.dict(exclude_none=True))
return HttpResultResponse(total=num, data=res)
......
......@@ -23,13 +23,15 @@ class QueryAllData:
'''
if self.params == {}:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
elif self.params_list == None:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).offset(
(int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
else:
queryData = self.db.query(self.dbname).filter(and_(*self.params_list)).order_by(
self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
count = self.db.query(func.count(self.dbname.id)).filter(and_(*self.params_list)).scalar()
return queryData, count
def query_filter(self):
......
......@@ -108,7 +108,7 @@ class Fiaccount(Base, SerializerMixin):
beneficiary = Column(String(100), comment="受益人")
description = Column(String(100), comment="描述信息")
uuid = Column(String(60), comment="用户id", index=True)
create_time = Column(Integer, comment="创建时间")
create_time = Column(DateTime, comment="创建时间")
config_key = Column(String(150), comment="配置key,和api接口约定好的标识")
income = Column(Text, comment="入账")
output = Column(Text, 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