Commit b112f1db authored by xianyang's avatar xianyang

第二版提交优化

parent 132000c6
......@@ -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">
......
from typing import Optional
from fastapi import Depends, APIRouter, Request, Query
from sqlalchemy.orm import Session
from app import get_db
......@@ -64,7 +63,7 @@ def finance_info_excel(data: schemas.FinanceInfo, request: Request,
token=Depends(login_required), db: Session = Depends(get_db)):
"""账户财务信息导出"""
headers = request.get("headers")
statement_list = crud.get_finance_info(data)
statement_list = crud.get_finance_info(data.unique_tag, data.page, data.size, data.start_time, data.end_time)
return statement_crud.data_to_file(db, statement_list, "财务信息", headers)
......@@ -87,7 +86,7 @@ def finance_info_excel(data: schemas.FinanceDetails, request: Request,
token=Depends(login_required), db: Session = Depends(get_db)):
"""账户财务详情导出"""
headers = request.get("headers")
statement_list = crud.get_finance_details(db, data)
statement_list = crud.get_finance_details(data.page, data.size, data.uuid, data.start_time, data.end_time, data.type, data.gift_type)
return statement_crud.data_to_file(db, statement_list, "财务明细", headers)
......
import datetime
import json
import math
import socket
import threading
import requests
from sqlalchemy import and_, func
from concurrent.futures.thread import ThreadPoolExecutor
from sqlalchemy import and_, func, engine
from sqlalchemy.orm import Session
from core.config.env import env
from libs.db_link import LinkMysql
from libs.functions import get_now_timestamp, get_now_datetime, search, get_order
from libs.functions import get_now_timestamp, get_now_datetime, search, get_order, get_ip
from libs.orm import QueryAllData
from libs.token_verify import get_current_user
from models.recharge import Settlement, Fitransferlog, FinanceFixLog, Account_log, Paymentlog
......@@ -29,6 +23,7 @@ class GuildSet(object):
def __init__(self):
self.settlement_list = []
self.linkmysql = LinkMysql(env.MysqlDB)
def dispose_guild_data(self, db, num):
guild_list = []
locka.acquire()
......@@ -39,92 +34,71 @@ class GuildSet(object):
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.create_time >= param.start_time)
if param.end_time:
is_guild_filters.append(Settlement.create_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:
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
# def get_guild_data(self,page,size):
# count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id'
# count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数
# sql = f'SELECT t.guild_id,b.card_no as account,t.guild_name,IFNULL(t.balance,0) +IFNULL(t.pearl,0) as all_money,FROM_UNIXTIME(t.create_time,"%Y-%c-%d %h:%i:%s") as create_time,t.`status`,b.bank_of_deposit_name as bank_name FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id LEFT JOIN bind_bank as b on b.guild_id=t.guild_id ORDER BY t.id limit {page},{(size)}'
# statement_list = self.linkmysql.query_mysql(sql) # 提现总数
# return statement_list, count
def update_guild_info(self,data):
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.create_time >= param.start_time)
# if param.end_time:
# is_guild_filters.append(Settlement.create_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:
# 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
def get_guild_data(self, page, size):
count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id'
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数
sql = f'SELECT t.guild_id,b.card_no as account,t.guild_name,IFNULL(t.balance,0) +IFNULL(t.pearl,0) as all_money,FROM_UNIXTIME(t.create_time,"%Y-%c-%d %h:%i:%s") as create_time,t.`status`,b.bank_of_deposit_name as bank_name FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id LEFT JOIN bind_bank as b on b.guild_id=t.guild_id ORDER BY t.id limit {page},{(size)}'
statement_list = self.linkmysql.query_mysql(sql) # 提现总数
return statement_list, count
def update_guild_info(self, data):
"""公会结算修改"""
id =data.get("id")
guild_sql =f"SELECT count(*) FROM `guild_settlement_log` where id={id})"
id = data.get("id")
guild_sql = f"SELECT count(*) FROM `guild_settlement_log` where id={id})"
guild_data = self.linkmysql.query_mysql(guild_sql)
if guild_data:
status=1 if data.get("status")==0 else 2
guild_sql=f"UPDATE guild_settlement_log set status={status} where id={id}"
status = 1 if data.get("status") == 0 else 2
guild_sql = f"UPDATE guild_settlement_log set status={status} where id={id}"
self.linkmysql.excete_mysql(guild_sql)
# def paymentset_guild_data(db: Session, dbname, params):
# paymentset_filters = []
# if params.get("id"):
# paymentset_filters.append(dbname.guild_id == params.get("guild_id"))
# if params.get("cont"):
# paymentset_filters.append(dbname.cont == params.get("cont"))
# if params.get("money"):
# paymentset_filters.append(dbname.money == params.get("money"))
# if params.get("url"):
# paymentset_filters.append(dbname.url == params.get("url"))
# if params.get("uuid"):
# paymentset_filters.append(dbname.uuid == params.get("uuid"))
# if params.get("start_time"):
# paymentset_filters.append(dbname.create_time >= params.get("start_time"))
# if params.get("end_time"):
# paymentset_filters.append(dbname.create_time <= params.get("end_time"))
# querydata, count = QueryAllData(db, dbname, params, paymentset_filters).query_data()
# data = [QueryAllData.serialization(item) for item in querydata]
# return data, count
def paymentset_guild_data(page,size):
def paymentset_guild_data(page, size):
count_sql = f"SELECT count(*) FROM `payment_log`"
paymentset_sql = LinkMysql(env.MysqlDB).query_mysql(count_sql)
total=paymentset_sql[0].get("count(*)")
list_sql=f"SELECT money,cont,url,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as create_time FROM `payment_log` ORDER BY id desc limit {page},{(size)} "
total = paymentset_sql[0].get("count(*)")
list_sql = f"SELECT money,cont,url,FROM_UNIXTIME(create_time,'%Y-%c-%d %h:%i:%s') as create_time FROM `payment_log` ORDER BY id desc limit {page},{(size)} "
payment_list = LinkMysql(env.MysqlDB).query_mysql(list_sql)
list=[]
list = []
for item in range(len(payment_list)):
payment_list[item]['url'] = env.oss_url + payment_list[item].get("url")
items = payment_list[item]
......@@ -132,8 +106,6 @@ def paymentset_guild_data(page,size):
return list, total
def outon_account_data(db: Session, dbname, params):
querydata, count = QueryAllData(db, dbname, params, None).query_data()
data = [QueryAllData.serialization(item,
......@@ -390,22 +362,22 @@ 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})"
payment_sql = f"insert into payment_log(cont,money,url,uuid) values({data.cont},{data.money},{data.url},{data.uuid})"
print(payment_sql)
LinkMysql(env.MysqlDB).excete_mysql(payment_sql)
params={}
if data.money>0:
method='Server.BaseExecute.Increase'
params['dst_uuid']=data.uuid
params['ip']=get_ip()
params['dst_amount_type']='Payment'
params['amount']='consumable'
params['fee']=data.money*-1
params['reference_number']=get_order()
params['reference_type']='finance_admin_fix'
params['reference_info']=[]
params['timestamp']=0
params = {}
if data.money > 0:
method = 'Server.BaseExecute.Increase'
params['dst_uuid'] = data.uuid
params['ip'] = get_ip()
params['dst_amount_type'] = 'Payment'
params['amount'] = 'consumable'
params['fee'] = data.money * -1
params['reference_number'] = get_order()
params['reference_type'] = 'finance_admin_fix'
params['reference_info'] = []
params['timestamp'] = 0
else:
method='Server.BaseExecute.Reduce'
response =search(params=data,method=method)
method = 'Server.BaseExecute.Reduce'
response = search(params=data, method=method)
print(response.text)
......@@ -11,12 +11,10 @@ from app.api.statement.crud import RechargeStatement, WithdrawStatement
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 core.config.env import env
from libs.functions import search
from libs.img_code import new_upload_file, random_number
from libs.result_format import HttpResultResponse
from libs.token_verify import login_required
from models.recharge import Paymentlog, Fitransferlog, Account_log
from models.recharge import Fitransferlog
from models.account import Account
router = APIRouter()
......@@ -51,9 +49,10 @@ def user_withdrawal_list(page: Optional[int] = 0, size: Optional[int] = 10,token
statement_list, total, money, final_money = WithdrawStatement().get_user_withdraw_cash(page,size)
return HttpResultResponse(total=total, count=float(money), actual_count=final_money, data=statement_list)
#http://fiance-rys.3yakj.com/Guild/settlement
@router.get("/guildWithdrawal/list")
def guild_withdrawal_list(page: Optional[int] = 1, size: Optional[int] = 10,token=Depends(login_required)):
def guild_withdrawal_list(page: Optional[int] = 1, size: Optional[int] = 10, token=Depends(login_required)):
"""公会提现列表"""
guild_list, total, money, final_money = WithdrawStatement().get_guild_withdraw_cash(page,size)
return HttpResultResponse(total=total, count=float(money), actual_count=final_money, data=guild_list)
......@@ -62,7 +61,7 @@ def guild_withdrawal_list(page: Optional[int] = 1, size: Optional[int] = 10,toke
@router.get("/guild/settlement")
def guild_settlement_list(page: Optional[int] = 1, size: Optional[int] = 10,token=Depends(login_required)):
"""公会结算"""
guild_list, total = GuildSet().get_guild_data(page,size)
guild_list, total = GuildSet().get_guild_data(page, size)
return HttpResultResponse(total=total, data=guild_list)
......
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