Commit 87fd5d37 authored by xupeng's avatar xupeng

公会打款

parent 87ad6664
...@@ -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">
......
...@@ -10,7 +10,7 @@ from core.config.env import env ...@@ -10,7 +10,7 @@ from core.config.env import env
from libs.business import TYPE_NAME from libs.business import TYPE_NAME
from libs.db_link import LinkMysql from libs.db_link import LinkMysql
from libs.functions import wrapper_out, get_now_timestamp, uuid, get_before_timestamp, time_str_to_timestamp, \ 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 libs.orm import QueryAllData
from models import account as models from models import account as models
from models.account import AccountFinance, AccountFinanceDetails, AccountType from models.account import AccountFinance, AccountFinanceDetails, AccountType
......
...@@ -113,7 +113,6 @@ class RechargeStatement(object): ...@@ -113,7 +113,6 @@ class RechargeStatement(object):
count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}" count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}"
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") 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}" 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) once_res = self.linkmysql.query_mysql(sql)
money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query}" 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 \ moeny_data = self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") if \
...@@ -243,12 +242,10 @@ class WithdrawStatement(object): ...@@ -243,12 +242,10 @@ class WithdrawStatement(object):
def dispose_user(self, month_type, query, page, size, now_month): def dispose_user(self, month_type, query, page, size, now_month):
if month_type == 1: if month_type == 1:
count_sql = f"SELECT count(*) FROM assets_log_{now_month} where {query}" 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(*)") 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) once_res = self.linkmysql.query_mysql(sql)
money_sql = f"SELECT sum(amount) FROM assets_log_{now_month} where {query} " 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 \ 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 self.linkmysql.query_mysql(money_sql)[0].get("sum(amount)") != None else 0
else: else:
...@@ -256,7 +253,7 @@ class WithdrawStatement(object): ...@@ -256,7 +253,7 @@ class WithdrawStatement(object):
count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)") count = self.linkmysql.query_mysql(count_sql)[0].get("sum(a.b)")
query1 = (' and '.join(query[0])) query1 = (' and '.join(query[0]))
query2 = (' and '.join(query[1])) 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) 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 " 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 \ 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 ...@@ -12,7 +12,7 @@ from libs.functions import get_now_timestamp, get_now_datetime, search, get_orde
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
from models.guild import Guild from models.guild import Guild, GuildSettlementLog
from models.account import Account from models.account import Account
from models.users import V2User from models.users import V2User
from models.guild import Guild from models.guild import Guild
...@@ -75,7 +75,7 @@ class GuildSet(object): ...@@ -75,7 +75,7 @@ class GuildSet(object):
# 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,status,start_time,end_time,guild_id): def get_guild_data(self,db, page, size,status,start_time,end_time,guild_id):
query = [] query = []
if start_time: if start_time:
query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ") query.append(f" create_time >= {time_str_to_timestamp(start_time + ' 00:00:00')} ")
...@@ -85,19 +85,15 @@ class GuildSet(object): ...@@ -85,19 +85,15 @@ class GuildSet(object):
query.append(f"guild_id={guild_id} ") query.append(f"guild_id={guild_id} ")
if status: if status:
query.append(f"status={status} ") query.append(f"status={status} ")
if query==[]: if query:
count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id' querydata = db.query(GuildSettlementLog).filter(*query).order_by(
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数 GuildSettlementLog.id.desc()).offset((int(page) - 1) * size).limit(size)
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) # 提现总数
else: 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') querydata = db.query(GuildSettlementLog).filter().order_by(
print(query) GuildSettlementLog.id.desc()).offset((int(page) - 1) * size).limit(size)
count_sql = f'SELECT count(*) FROM `guild_settlement_log` as t inner join guild as g on g.id=t.guild_id where {query}' data = [QueryAllData.serialization(item, remove={'create_time', 'remark'}) for item in querydata]
count = self.linkmysql.query_mysql(count_sql)[0].get("count(*)") # 总条数 count = db.query(func.count(GuildSettlementLog.id)).filter().scalar()
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} ' return data, count
statement_list = self.linkmysql.query_mysql(sql) # 提现总数
return statement_list, count
def update_guild_info(self, data): def update_guild_info(self, data):
"""公会结算修改""" """公会结算修改"""
...@@ -518,3 +514,15 @@ def transfer_query(data): ...@@ -518,3 +514,15 @@ def transfer_query(data):
params['timestamp'] = 0 params['timestamp'] = 0
search(params=params,method=method) search(params=params,method=method)
return 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 fastapi import HTTPException
from typing import Optional from typing import Optional
from pydantic import BaseModel, validator from pydantic import BaseModel, validator
...@@ -149,3 +151,18 @@ class MenuEdit(BaseModel): ...@@ -149,3 +151,18 @@ class MenuEdit(BaseModel):
menu_label: str menu_label: str
menu_type: int menu_type: int
remark: Optional[str] = None 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 ...@@ -9,7 +9,7 @@ from fastapi import Depends, APIRouter, File, Request
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.api.statement.crud import RechargeStatement, WithdrawStatement, get_menu_list, get_menu_config 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, \ 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 app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList, UserNumber, CreateBill
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, HttpMessage from libs.result_format import HttpResultResponse, HttpMessage
...@@ -56,9 +56,9 @@ def guild_withdrawal_list(request:Request,db: Session = Depends(get_db),page: Op ...@@ -56,9 +56,9 @@ def guild_withdrawal_list(request:Request,db: Session = Depends(get_db),page: Op
@router.get("/guild/settlement") @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) return HttpResultResponse(total=total, data=guild_list)
...@@ -141,11 +141,11 @@ def account_transfer_money(data: CreateBill, request: Request, ...@@ -141,11 +141,11 @@ def account_transfer_money(data: CreateBill, request: Request,
return HttpResultResponse() return HttpResultResponse()
@router.post("/guild/update") # @router.post("/guild/update")
def guild_update_list(data: schemas.GuildUpdate, token=Depends(login_required)): # def guild_update_list(data: schemas.GuildUpdate, token=Depends(login_required)):
"""公会结算""" # """公会结算"""
GuildSet().update_guild_info(data) # GuildSet().update_guild_info(data)
return HttpResultResponse() # return HttpResultResponse()
@router.get("/finance/fix") @router.get("/finance/fix")
...@@ -247,4 +247,11 @@ def menu_delte(id: Optional[int] = '',db: Session = Depends(get_db),page: Option ...@@ -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] = ""): def menu_list(db: Session = Depends(get_db),menu_type: Optional[int] = ""):
"""菜单配置下拉""" """菜单配置下拉"""
menu_list = get_menu_config(db,menu_type) menu_list = get_menu_config(db,menu_type)
return HttpResultResponse(data=menu_list) return HttpResultResponse(data=menu_list)
\ No newline at end of file
@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 core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin from sqlalchemy_serializer import SerializerMixin
...@@ -130,3 +131,24 @@ class GuildPledgeRecord(Base, SerializerMixin): ...@@ -130,3 +131,24 @@ class GuildPledgeRecord(Base, SerializerMixin):
margin = Column(Float, default=0.00, comment="保证金(元)") margin = Column(Float, default=0.00, comment="保证金(元)")
__table_args__ = {'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