Commit b112f1db authored by xianyang's avatar xianyang

第二版提交优化

parent 132000c6
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<excludeFolder url="file://$MODULE_DIR$/fs-env" /> <excludeFolder url="file://$MODULE_DIR$/fs-env" />
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </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" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="PyDocumentationSettings"> <component name="PyDocumentationSettings">
......
from typing import Optional from typing import Optional
from fastapi import Depends, APIRouter, Request, Query from fastapi import Depends, APIRouter, Request, Query
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app import get_db from app import get_db
...@@ -64,7 +63,7 @@ def finance_info_excel(data: schemas.FinanceInfo, request: Request, ...@@ -64,7 +63,7 @@ def finance_info_excel(data: schemas.FinanceInfo, request: Request,
token=Depends(login_required), db: Session = Depends(get_db)): token=Depends(login_required), db: Session = Depends(get_db)):
"""账户财务信息导出""" """账户财务信息导出"""
headers = request.get("headers") 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) return statement_crud.data_to_file(db, statement_list, "财务信息", headers)
...@@ -87,7 +86,7 @@ def finance_info_excel(data: schemas.FinanceDetails, request: Request, ...@@ -87,7 +86,7 @@ def finance_info_excel(data: schemas.FinanceDetails, request: Request,
token=Depends(login_required), db: Session = Depends(get_db)): token=Depends(login_required), db: Session = Depends(get_db)):
"""账户财务详情导出""" """账户财务详情导出"""
headers = request.get("headers") 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) return statement_crud.data_to_file(db, statement_list, "财务明细", headers)
......
import datetime
import json
import math import math
import socket import socket
import threading import threading
import requests
from sqlalchemy import and_, func
from concurrent.futures.thread import ThreadPoolExecutor from concurrent.futures.thread import ThreadPoolExecutor
from sqlalchemy import and_, func, engine from sqlalchemy import and_, func, engine
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from core.config.env import env from core.config.env import env
from libs.db_link import LinkMysql 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.orm import QueryAllData
from libs.token_verify import get_current_user from libs.token_verify import get_current_user
from models.recharge import Settlement, Fitransferlog, FinanceFixLog, Account_log, Paymentlog from models.recharge import Settlement, Fitransferlog, FinanceFixLog, Account_log, Paymentlog
...@@ -29,6 +23,7 @@ class GuildSet(object): ...@@ -29,6 +23,7 @@ class GuildSet(object):
def __init__(self): def __init__(self):
self.settlement_list = [] self.settlement_list = []
self.linkmysql = LinkMysql(env.MysqlDB) self.linkmysql = LinkMysql(env.MysqlDB)
def dispose_guild_data(self, db, num): def dispose_guild_data(self, db, num):
guild_list = [] guild_list = []
locka.acquire() locka.acquire()
...@@ -39,92 +34,71 @@ class GuildSet(object): ...@@ -39,92 +34,71 @@ class GuildSet(object):
guild_list.append(info_dict) guild_list.append(info_dict)
self.settlement_list += guild_list self.settlement_list += guild_list
# def query_guild_data(self, db): def query_guild_data(self, db):
# msg_count = db.query(func.count(Settlement.id)).scalar() msg_count = db.query(func.count(Settlement.id)).scalar()
# num = math.ceil(msg_count / 10) num = math.ceil(msg_count / 10)
# # 创建线程 # 创建线程
# ths = [] ths = []
# for x in range(num): for x in range(num):
# ths.append(threading.Thread(target=self.dispose_guild_data, args=[db, x])) ths.append(threading.Thread(target=self.dispose_guild_data, args=[db, x]))
# for y in range(num): for y in range(num):
# ths[y].start() ths[y].start()
# for z in range(num): for z in range(num):
# ths[z].join() ths[z].join()
# return self.settlement_list return self.settlement_list
def get_guild_data(self, db: Session, param): # def get_guild_data(self, db: Session, param):
"""公会结算""" # """公会结算"""
is_guild_filters = [] # is_guild_filters = []
if param.guild_id: # if param.guild_id:
is_guild_filters.append(Settlement.guild_id == param.guild_id) # is_guild_filters.append(Settlement.guild_id == param.guild_id)
if param.status or param.status == 0: # if param.status or param.status == 0:
is_guild_filters.append(Settlement.status == param.status) # is_guild_filters.append(Settlement.status == param.status)
if param.start_time: # if param.start_time:
is_guild_filters.append(Settlement.create_time >= param.start_time) # is_guild_filters.append(Settlement.create_time >= param.start_time)
if param.end_time: # if param.end_time:
is_guild_filters.append(Settlement.create_time <= param.end_time) # is_guild_filters.append(Settlement.create_time <= param.end_time)
# 判断有无条件 # # 判断有无条件
try: # try:
if len(is_guild_filters) > 0: # if len(is_guild_filters) > 0:
get_user_orm_sql = db.query(Settlement).filter(and_(*is_guild_filters)) # get_user_orm_sql = db.query(Settlement).filter(and_(*is_guild_filters))
condition_data = db.execute(get_user_orm_sql).fetchall() # condition_data = db.execute(get_user_orm_sql).fetchall()
guild_info = [i[0].to_dict() for i in condition_data] # guild_info = [i[0].to_dict() for i in condition_data]
else: # else:
guild_info = self.query_guild_data(db) # guild_info = self.query_guild_data(db)
except Exception as e: # except Exception as e:
return [], 0 # return [], 0
# 判断是列表还是导出接口 # # 判断是列表还是导出接口
guild_info.reverse() # guild_info.reverse()
if guild_info: # if guild_info:
return guild_info[(int(param.page) - 1) * param.size:param.size * param.page], len(guild_info) # return guild_info[(int(param.page) - 1) * param.size:param.size * param.page], len(guild_info)
return [], 0 # 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' def get_guild_data(self, page, size):
# count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数 count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id'
# 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)}' count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数
# statement_list = self.linkmysql.query_mysql(sql) # 提现总数 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)}'
# return statement_list, count statement_list = self.linkmysql.query_mysql(sql) # 提现总数
return statement_list, count
def update_guild_info(self,data):
def update_guild_info(self, data):
"""公会结算修改""" """公会结算修改"""
id =data.get("id") id = data.get("id")
guild_sql =f"SELECT count(*) FROM `guild_settlement_log` where id={id})" guild_sql = f"SELECT count(*) FROM `guild_settlement_log` where id={id})"
guild_data = self.linkmysql.query_mysql(guild_sql) guild_data = self.linkmysql.query_mysql(guild_sql)
if guild_data: if guild_data:
status=1 if data.get("status")==0 else 2 status = 1 if data.get("status") == 0 else 2
guild_sql=f"UPDATE guild_settlement_log set status={status} where id={id}" guild_sql = f"UPDATE guild_settlement_log set status={status} where id={id}"
self.linkmysql.excete_mysql(guild_sql) self.linkmysql.excete_mysql(guild_sql)
def paymentset_guild_data(page, size):
# 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):
count_sql = f"SELECT count(*) FROM `payment_log`" count_sql = f"SELECT count(*) FROM `payment_log`"
paymentset_sql = LinkMysql(env.MysqlDB).query_mysql(count_sql) paymentset_sql = LinkMysql(env.MysqlDB).query_mysql(count_sql)
total=paymentset_sql[0].get("count(*)") 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)} " 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) payment_list = LinkMysql(env.MysqlDB).query_mysql(list_sql)
list=[] list = []
for item in range(len(payment_list)): for item in range(len(payment_list)):
payment_list[item]['url'] = env.oss_url + payment_list[item].get("url") payment_list[item]['url'] = env.oss_url + payment_list[item].get("url")
items = payment_list[item] items = payment_list[item]
...@@ -132,8 +106,6 @@ def paymentset_guild_data(page,size): ...@@ -132,8 +106,6 @@ def paymentset_guild_data(page,size):
return list, total return list, total
def outon_account_data(db: Session, dbname, params): def outon_account_data(db: Session, dbname, params):
querydata, count = QueryAllData(db, dbname, params, None).query_data() querydata, count = QueryAllData(db, dbname, params, None).query_data()
data = [QueryAllData.serialization(item, data = [QueryAllData.serialization(item,
...@@ -390,22 +362,22 @@ def transfer_query(data): ...@@ -390,22 +362,22 @@ def transfer_query(data):
''' '''
print(data) print(data)
print(data.cont) 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) print(payment_sql)
LinkMysql(env.MysqlDB).excete_mysql(payment_sql) LinkMysql(env.MysqlDB).excete_mysql(payment_sql)
params={} params = {}
if data.money>0: if data.money > 0:
method='Server.BaseExecute.Increase' method = 'Server.BaseExecute.Increase'
params['dst_uuid']=data.uuid params['dst_uuid'] = data.uuid
params['ip']=get_ip() params['ip'] = get_ip()
params['dst_amount_type']='Payment' params['dst_amount_type'] = 'Payment'
params['amount']='consumable' params['amount'] = 'consumable'
params['fee']=data.money*-1 params['fee'] = data.money * -1
params['reference_number']=get_order() params['reference_number'] = get_order()
params['reference_type']='finance_admin_fix' params['reference_type'] = 'finance_admin_fix'
params['reference_info']=[] params['reference_info'] = []
params['timestamp']=0 params['timestamp'] = 0
else: else:
method='Server.BaseExecute.Reduce' method = 'Server.BaseExecute.Reduce'
response =search(params=data,method=method) response = search(params=data, method=method)
print(response.text) print(response.text)
...@@ -11,12 +11,10 @@ from app.api.statement.crud import RechargeStatement, WithdrawStatement ...@@ -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, \ 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 query_uuid_or_user_number, account_money, transfer_money, transfer_query
from app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList, UserNumber, CreateBill 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.img_code import new_upload_file, random_number
from libs.result_format import HttpResultResponse from libs.result_format import HttpResultResponse
from libs.token_verify import login_required 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 from models.account import Account
router = APIRouter() router = APIRouter()
...@@ -51,9 +49,10 @@ def user_withdrawal_list(page: Optional[int] = 0, size: Optional[int] = 10,token ...@@ -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) 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) return HttpResultResponse(total=total, count=float(money), actual_count=final_money, data=statement_list)
#http://fiance-rys.3yakj.com/Guild/settlement #http://fiance-rys.3yakj.com/Guild/settlement
@router.get("/guildWithdrawal/list") @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) 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) 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 ...@@ -62,7 +61,7 @@ def guild_withdrawal_list(page: Optional[int] = 1, size: Optional[int] = 10,toke
@router.get("/guild/settlement") @router.get("/guild/settlement")
def guild_settlement_list(page: Optional[int] = 1, size: Optional[int] = 10,token=Depends(login_required)): 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) 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