Commit 87fd5d37 authored by xupeng's avatar xupeng

公会打款

parent 87ad6664
......@@ -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">
......
......@@ -10,7 +10,7 @@ from core.config.env import env
from libs.business import TYPE_NAME
from libs.db_link import LinkMysql
from libs.functions import wrapper_out, get_now_timestamp, uuid, get_before_timestamp, time_str_to_timestamp, \
get_yesterday_timestamp, search
get_yesterday_timestamp, search, get_last_month
from libs.orm import QueryAllData
from models import account as models
from models.account import AccountFinance, AccountFinanceDetails, AccountType
......
......@@ -113,7 +113,6 @@ class RechargeStatement(object):
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} ORDER BY id desc limit {(int(page) - 1) * size},{size}"
print(sql)
once_res = self.linkmysql.query_mysql(sql)
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 \
......@@ -243,12 +242,10 @@ class WithdrawStatement(object):
def dispose_user(self, month_type, query, page, size, now_month):
if month_type == 1:
count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}"
print(count_sql)
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)")
sql = f'SELECT uuid,a.reference_type,a.reference_number,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.reference_type FROM assets_log_{now_month} as a where {query} ORDER BY id desc limit {(int(page) - 1) * size},{size}'
sql = f'SELECT uuid,a.reference_type,a.reference_number,FROM_UNIXTIME(a.create_time,"%Y-%c-%d %h:%i:%s") as payment_time,a.amount_type 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} "
print(money_sql)
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:
......@@ -256,7 +253,7 @@ class WithdrawStatement(object):
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} 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}"
sql = f"SELECT id,uuid,amount,amount_type 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,amount_type 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]))} 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 \
......
......@@ -12,7 +12,7 @@ from libs.functions import get_now_timestamp, get_now_datetime, search, get_orde
from libs.orm import QueryAllData
from libs.token_verify import get_current_user
from models.recharge import Settlement, Fitransferlog, FinanceFixLog, Account_log, Paymentlog
from models.guild import Guild
from models.guild import Guild, GuildSettlementLog
from models.account import Account
from models.users import V2User
from models.guild import Guild
......@@ -75,7 +75,7 @@ class GuildSet(object):
# 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,status,start_time,end_time,guild_id):
def get_guild_data(self,db, page, size,status,start_time,end_time,guild_id):
query = []
if start_time:
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
......@@ -85,19 +85,15 @@ class GuildSet(object):
query.append(f"guild_id={guild_id} ")
if status:
query.append(f"status={status} ")
if query==[]:
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 {(int(page) - 1) * page},{size} '
statement_list = self.linkmysql.query_mysql(sql) # 提现总数
if query:
querydata = db.query(GuildSettlementLog).filter(*query).order_by(
GuildSettlementLog.id.desc()).offset((int(page) - 1) * size).limit(size)
else:
query = ' and '.join(query).replace('create_time','t.create_time').replace('update_time','t.update_time').replace('status','t.status').replace('guild_id','t.guild_id')
print(query)
count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id where {query}'
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 where {query} ORDER BY t.id limit {(int(page) - 1) * page},{size} '
statement_list = self.linkmysql.query_mysql(sql) # 提现总数
return statement_list, count
querydata = db.query(GuildSettlementLog).filter().order_by(
GuildSettlementLog.id.desc()).offset((int(page) - 1) * size).limit(size)
data = [QueryAllData.serialization(item, remove={'create_time', 'remark'}) for item in querydata]
count = db.query(func.count(GuildSettlementLog.id)).filter().scalar()
return data, count
def update_guild_info(self, data):
"""公会结算修改"""
......@@ -518,3 +514,15 @@ def transfer_query(data):
params['timestamp'] = 0
search(params=params,method=method)
return
def GuildSettlementAdd(db,data):
guild_data=db.query(GuildSettlementLog).filter(GuildSettlementLog.work_id == data.id).first()
if guild_data:
transfer_trigger_task()
db_export=db.query(GuildSettlementLog).filter(GuildSettlementLog.work_id == data.id).update({GuildSettlementLog.status: data.status})
else:
db_export = GuildSettlementLog(work_id=data.id, guild_id=data.guild_id, balance=data.balance,
pearl=data.pearl, status=data.status,create_time=data.create_time,update_time=data.update_time,guild_name=data.guild_name,guild_per=data.guild_per,actual_money=data.actual_money,pledge_deposit_money=data.pledge_deposit_money)
db.add(db_export)
db.commit()
from decimal import Decimal
from fastapi import HTTPException
from typing import Optional
from pydantic import BaseModel, validator
......@@ -149,3 +151,18 @@ class MenuEdit(BaseModel):
menu_label: str
menu_type: int
remark: Optional[str] = None
class GuildAddLog(BaseModel):
id: int
guild_id: Optional[int] = None
balance: Optional[str] = None
pearl: Optional[str] = None
status: int
create_time : Optional[int] = None
update_time :Optional[str] = None
guild_name : Optional[int] = None
guild_per : Optional[str] = None
actual_money : Optional[str] = None
pledge_deposit_money : Optional[str] = None
......@@ -9,7 +9,7 @@ from fastapi import Depends, APIRouter, File, Request
from sqlalchemy.orm import Session
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
query_uuid_or_user_number, account_money, transfer_money, transfer_query, GuildSettlementAdd
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, HttpMessage
......@@ -56,9 +56,9 @@ def guild_withdrawal_list(request:Request,db: Session = Depends(get_db),page: Op
@router.get("/guild/settlement")
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)):
def guild_settlement_list(db: Session = Depends(get_db),page: Optional[int] = 1, size: Optional[int] = 10,status:Optional[int]='',start_time:Optional[str]='',end_time:Optional[str]="",guild_id:Optional[str]=""):
"""公会结算"""
guild_list, total = GuildSet().get_guild_data(page, size,status,start_time,end_time,guild_id)
guild_list, total = GuildSet().get_guild_data(db,page, size,status,start_time,end_time,guild_id)
return HttpResultResponse(total=total, data=guild_list)
......@@ -141,11 +141,11 @@ def account_transfer_money(data: CreateBill, request: Request,
return HttpResultResponse()
@router.post("/guild/update")
def guild_update_list(data: schemas.GuildUpdate, token=Depends(login_required)):
"""公会结算"""
GuildSet().update_guild_info(data)
return HttpResultResponse()
# @router.post("/guild/update")
# def guild_update_list(data: schemas.GuildUpdate, token=Depends(login_required)):
# """公会结算"""
# GuildSet().update_guild_info(data)
# return HttpResultResponse()
@router.get("/finance/fix")
......@@ -247,4 +247,11 @@ def menu_delte(id: Optional[int] = '',db: Session = Depends(get_db),page: Option
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
return HttpResultResponse(data=menu_list)
@router.post("/guild/accounts")
def guild_add(data: schemas.GuildAddLog,db: Session = Depends(get_db)):
"""公会结算"""
GuildSettlementAdd(db,data)
return HttpResultResponse(code=200,msg=HttpMessage.SUCCESS)
\ No newline at end of file
from sqlalchemy import Column, Integer, String, Text, DateTime, Float
from sqlalchemy import Column, Integer, String, Text, DateTime, Float,DECIMAL
from core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin
......@@ -130,3 +131,24 @@ class GuildPledgeRecord(Base, SerializerMixin):
margin = Column(Float, default=0.00, comment="保证金(元)")
__table_args__ = {'comment': '公会质押记录表'}
class GuildSettlementLog(Base, SerializerMixin):
"""工会申请结算统计表"""
__tablename__ = 'guild_log'
id = Column(Integer, primary_key=True, index=True)
work_id =Column(Integer, comment="业务id")
guild_id = Column(Integer, comment="公会id")
balance = Column(DECIMAL(15,3),default='0.000',comment="结算时的钻石,RMB单位")
pearl = Column(DECIMAL(15,3),default='0.000', comment="结算时候的珍珠,RMB单位")
status = Column(Integer, comment="0待结算,1待结款,2已完成")
create_time = Column(Integer,default='0',comment="创建时间")
update_time = Column(DateTime,default='0',comment="修改时间")
guild_name = Column(Integer, comment="公会名字")
guild_per = Column(String(122), comment="公会比例")
actual_money = Column(DECIMAL(15,3), default='0.000', comment="实际结款")
pledge_deposit_money = Column(DECIMAL, default='0.000', 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