Commit 41ca6def authored by xianyang's avatar xianyang

公会结算接口

parent b0310bf0
import math
import threading
import pandas as pd
from sqlalchemy import and_, func
from sqlalchemy.orm import Session
from models.recharge import Settlement
locka = threading.Lock()
class GuildSet(object):
def __init__(self):
self.settlement_list = []
def dispose_guild_data(self, db, num):
guild_list = []
locka.acquire()
once_res = db.query(Settlement).filter().offset(num * 10).limit(10).all()
locka.release()
for i in once_res:
info_dict = i.to_dict()
guild_list.append(info_dict)
self.settlement_list += guild_list
def query_guild_data(self, db):
msg_count = db.query(func.count(Settlement.id)).scalar()
num = math.ceil(msg_count / 10)
# 创建线程
ths = []
for x in range(num):
ths.append(threading.Thread(target=self.dispose_guild_data, args=[db, x]))
for y in range(num):
ths[y].start()
for z in range(num):
ths[z].join()
return self.settlement_list
def get_guild_data(self, db: Session, param):
"""公会结算"""
is_guild_filters = []
if param.guild_id:
is_guild_filters.append(Settlement.guild_id == param.guild_id)
if param.status or param.status == 0:
is_guild_filters.append(Settlement.status == param.status)
if param.start_time:
is_guild_filters.append(Settlement.update_time >= param.start_time)
if param.end_time:
is_guild_filters.append(Settlement.update_time <= param.end_time)
# 判断有无条件
try:
if len(is_guild_filters) > 0:
get_user_orm_sql = db.query(Settlement).filter(and_(*is_guild_filters))
condition_data = db.execute(get_user_orm_sql).fetchall()
guild_info = [i[0].to_dict() for i in condition_data]
else:
guild_info = self.query_guild_data(db)
except Exception as e:
print(e)
return [], 0
# 判断是列表还是导出接口
guild_info.reverse()
if guild_info:
return guild_info[(int(param.page) - 1) * param.size:param.size * param.page], len(guild_info)
return [], 0
......@@ -3,6 +3,7 @@ from app import get_db
from fastapi import Depends, APIRouter
from sqlalchemy.orm import Session
from app.api.statement.crud import RechargeStatement, WithdrawStatement
from app.api.statement.guild import GuildSet
from libs.result_format import HttpResultResponse
router = APIRouter()
......@@ -35,3 +36,9 @@ def guild_withdrawal_list(data: schemas.GuildWithdrawalList, db: Session = Depen
guild_list, total, money, final_money = WithdrawStatement().get_guild_withdraw_cash(db, data)
return HttpResultResponse(total=total, count=float(money), actual_count=final_money, data=guild_list)
@router.post("/guild/settlement")
def guild_settlement_list(data: schemas.GuildWithdrawalList, db: Session = Depends(get_db)):
"""公会结算"""
guild_list, total = GuildSet().get_guild_data(db, data)
return HttpResultResponse(total=total, data=guild_list)
......@@ -61,4 +61,16 @@ class GuildWC(Base, SerializerMixin):
class Settlement(Base, SerializerMixin):
"""公会结算"""
pass
__tablename__ = "guild_settlement"
id = Column(Integer, primary_key=True, index=True)
guild_id = Column(Integer, comment="公会ID")
guild_name = Column(String(255), comment="公会名称")
is_calculate = Column(String(10), comment="是否结算")
is_settlement = Column(String(10), comment="是否结款")
status = Column(Integer, comment="状态,0待结算,1待结款,2已完成")
all_money = Column(Float, comment="应结款")
account = Column(String(255), comment="账号")
bank_name = Column(String(255), comment="开户行名称")
bank_no = Column(String(255), comment="户头名称")
create_time = Column(DateTime, 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