Commit f0925b50 authored by xianyang's avatar xianyang

报表-转账,财务优化

parent 885f6a7f
...@@ -39,3 +39,11 @@ class FinanceInfo(PublicModel): ...@@ -39,3 +39,11 @@ class FinanceInfo(PublicModel):
class FinanceDetails(PublicModel): class FinanceDetails(PublicModel):
type: Optional[int] = None type: Optional[int] = None
gift_type: Optional[str] = None gift_type: Optional[str] = None
class FixTable(BaseModel):
type: int
account_id: int
money: float
amount_type: str
remark: str
...@@ -3,8 +3,13 @@ import threading ...@@ -3,8 +3,13 @@ import threading
from sqlalchemy import and_, func from sqlalchemy import and_, func
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from libs.functions import get_now_timestamp, get_now_datetime
from libs.orm import QueryAllData from libs.orm import QueryAllData
from models.recharge import Settlement from libs.token_verify import get_current_user
from models.recharge import Settlement, Fitransferlog, FinanceFixLog
from models.users import V2User
from models.guild import Guild
from models.account import Account
locka = threading.Lock() locka = threading.Lock()
...@@ -71,8 +76,7 @@ class GuildSet(object): ...@@ -71,8 +76,7 @@ class GuildSet(object):
db.commit() db.commit()
def paymentset_guild_data(db: Session, dbname, params):
def paymentset_guild_data(db: Session,dbname,params):
paymentset_filters = [] paymentset_filters = []
if params.get("id"): if params.get("id"):
paymentset_filters.append(dbname.guild_id == params.get("guild_id")) paymentset_filters.append(dbname.guild_id == params.get("guild_id"))
...@@ -88,20 +92,28 @@ def paymentset_guild_data(db: Session,dbname,params): ...@@ -88,20 +92,28 @@ def paymentset_guild_data(db: Session,dbname,params):
paymentset_filters.append(dbname.create_time >= params.get("start_time")) paymentset_filters.append(dbname.create_time >= params.get("start_time"))
if params.get("end_time"): if params.get("end_time"):
paymentset_filters.append(dbname.create_time <= params.get("end_time")) paymentset_filters.append(dbname.create_time <= params.get("end_time"))
querydata,count=QueryAllData(db,dbname,params,paymentset_filters).query_data() querydata, count = QueryAllData(db, dbname, params, paymentset_filters).query_data()
data=[QueryAllData.serialization(item) for item in querydata] data = [QueryAllData.serialization(item) for item in querydata]
return data,count return data, count
def outon_account_data(db: Session, dbname, params):
querydata, count = QueryAllData(db, dbname, params, None).query_data()
data = [QueryAllData.serialization(item,
remove={'operator', 'unique_tag', 'create_time', 'beneficiary', 'description',
'create_time', 'config_key', 'income', 'output', 'operator_id'}) for item
in querydata]
return data, count
def outon_account_data(db: Session,dbname,params):
querydata,count=QueryAllData(db,dbname,params,None).query_data()
data=[QueryAllData.serialization(item,remove={'operator','unique_tag','create_time','beneficiary','description','create_time','config_key','income','output','operator_id'}) for item in querydata]
return data,count
def accout_list_data(db:Session,dbname,params): def accout_list_data(db: Session, dbname, params):
accout_filters = [] accout_filters = []
if params.get("id"): if params.get("id"):
accout_filters.append(dbname.guild_id == params.get("guild_id")) accout_filters.append(dbname.guild_id == params.get("guild_id"))
if params.get("transfer_id"):
accout_filters.append(dbname.transfer_id == params.get("transfer_id"))
if params.get("dst_id"):
accout_filters.append(dbname.dst_id == params.get("dst_id"))
if params.get("cont"): if params.get("cont"):
accout_filters.append(dbname.cont == params.get("cont")) accout_filters.append(dbname.cont == params.get("cont"))
if params.get("money"): if params.get("money"):
...@@ -114,6 +126,76 @@ def accout_list_data(db:Session,dbname,params): ...@@ -114,6 +126,76 @@ def accout_list_data(db:Session,dbname,params):
accout_filters.append(dbname.create_time >= params.get("start_time")) accout_filters.append(dbname.create_time >= params.get("start_time"))
if params.get("end_time"): if params.get("end_time"):
accout_filters.append(dbname.create_time <= params.get("end_time")) accout_filters.append(dbname.create_time <= params.get("end_time"))
querydata, count = QueryAllData(db, dbname, params,accout_filters).query_data() querydata, count = QueryAllData(db, dbname, params, accout_filters).query_data()
data = [QueryAllData.serialization(item) for item in querydata] data = [QueryAllData.serialization(item) for item in querydata]
return data, count return data, count
def query_uuid_or_user_number(db: Session, param):
"""查询uuid和user_number"""
if param.uuid:
user = db.query(V2User).filter(V2User.uuid == param.uuid).first()
if not user:
guild = db.query(Guild).filter(Guild.uuid == param.uuid).first()
if not guild:
return {}
return {"nick_name": "(公会)" + guild.guild_name, "user_number": guild.id}
return {"nick_name": user.nick_name, "user_number": user.user_id}
if param.user_number:
user = db.query(V2User).filter(V2User.user_number == param.user_number).first()
return {"nick_name": user.nick_name, "user_id": user.user_id, "uuid": user.uuid}
def account_money(db: Session, param):
"""查询账户余额"""
account = db.query(Account).filter(Account.id == param.id).first()
if not account:
return 0
return account.consumable if account.consumable else 0
def query_token(db, h_list):
"""获取请求头token"""
token = ''
for k, v in dict(h_list).items():
key = k.decode('utf-8')
if key == 'authorization':
tokens = v.decode('utf-8')
_, token = tokens.split(' ')
break
# 通过token获取用户信息
user_info = get_current_user(db=db, token=token)
return user_info
def transfer_money(db: Session, param, h_list):
"""转账"""
user = query_token(db, h_list)
try:
present = Fitransferlog(dst_id=param.dst_id, amount=param.amount, type=param.type,
transfer_id=param.transfer_id, nick_name=param.nick_name, remark=param.remark,
operator=user.get("username"), transfer_type=param.transfer_type,
create_time=get_now_timestamp())
db.add(present)
db.commit()
db.refresh(present)
except Exception as e:
print(e)
return {}
return present
def create_fix_table(db: Session, param, h_list):
"""增加修复报表"""
user = query_token(db, h_list)
try:
present = FinanceFixLog(type=param.type, account_id=param.account_id, money=param.money,
remark=param.remark, operator=user.get("username"), amount_type=param.amount_type,
create_time=get_now_datetime())
db.add(present)
db.commit()
db.refresh(present)
except Exception as e:
print(e)
return {}
return present
...@@ -9,7 +9,6 @@ class StatementBase(BaseModel): ...@@ -9,7 +9,6 @@ class StatementBase(BaseModel):
class StatementCreate(StatementBase): class StatementCreate(StatementBase):
nickname: str nickname: str
recharge_amount: float recharge_amount: float
recharge_channel: str recharge_channel: str
...@@ -19,7 +18,7 @@ class StatementCreate(StatementBase): ...@@ -19,7 +18,7 @@ class StatementCreate(StatementBase):
class StatementList(BaseModel): class StatementList(BaseModel):
page: Optional[int] = None page: Optional[int] = None
size: Optional[int] = None size: Optional[int] = None
start_time: Optional[str] = "" start_time: Optional[str] = ""
end_time: Optional[str] = "" end_time: Optional[str] = ""
order_number: Optional[str] = "" order_number: Optional[str] = ""
user_id: Optional[str] = "" user_id: Optional[str] = ""
...@@ -37,7 +36,7 @@ class Statement(StatementBase): ...@@ -37,7 +36,7 @@ class Statement(StatementBase):
class UserWithdrawalList(BaseModel): class UserWithdrawalList(BaseModel):
page: Optional[int] = None page: Optional[int] = None
size: Optional[int] = None size: Optional[int] = None
start_time: Optional[str] = "" start_time: Optional[str] = ""
end_time: Optional[str] = "" end_time: Optional[str] = ""
status: Optional[int] = None status: Optional[int] = None
user_id: Optional[int] = None user_id: Optional[int] = None
...@@ -46,59 +45,73 @@ class UserWithdrawalList(BaseModel): ...@@ -46,59 +45,73 @@ class UserWithdrawalList(BaseModel):
class GuildWithdrawalList(BaseModel): class GuildWithdrawalList(BaseModel):
page: int page: int
size: int size: int
start_time: str =None start_time: str = None
end_time: str=None end_time: str = None
status: int=None status: int = None
guild_id: int=None guild_id: int = None
class PaymentWithdrawalList(BaseModel): class PaymentWithdrawalList(BaseModel):
page:int =None page: int = None
size:int =None size: int = None
start_time: str =None start_time: str = None
end_time: str=None end_time: str = None
status: int=None status: int = None
guild_id: int=None guild_id: int = None
@validator('start_time') @validator('start_time')
def validate_start_time(cls, val): def validate_start_time(cls, val):
if val !='': if val != '':
return val return val
@validator('end_time') @validator('end_time')
def validate_end_time(cls, val): def validate_end_time(cls, val):
if val !='': if val != '':
return val return val
@validator('status') @validator('status')
def validate_status(cls, val): def validate_status(cls, val):
if val !='': if val != '':
return val return val
@validator('guild_id') @validator('guild_id')
def validate_guild_id(cls, val): def validate_guild_id(cls, val):
if val !='': if val != '':
return val return val
class PaymentAdd(BaseModel): class PaymentAdd(BaseModel):
uuid:str uuid: str
money:int money: int
cont:str cont: str
url:str url: str
def __str__(self):
return "uuid:%s, money:%s" % (str(self.uuid), self.money)
def __str__(self):
return "uuid:%s, money:%s" % (str(self.uuid), self.money)
class PaymentAccountlList(PaymentWithdrawalList): class PaymentAccountlList(PaymentWithdrawalList):
uuid: int = None
uuid : int=None transfer_id: int = None
dst_id: int = None
class GuildUpdate(BaseModel): class GuildUpdate(BaseModel):
id: int id: int
status: int status: int
class UserNumber(BaseModel):
id: Optional[int] = None
uuid: Optional[str] = ""
user_number: Optional[int] = None
class CreateBill(BaseModel):
dst_id: int
amount: float
transfer_id: int
remark: str
type: int
nick_name: Optional[str] = ""
transfer_type: Optional[str] = ""
from datetime import datetime from datetime import datetime
from app.api.statement import crud, schemas from app.api.statement import crud, schemas, guild
from app.api.account import schemas as acc_schemas from app.api.account import schemas as acc_schemas
from app import get_db from app import get_db
from fastapi import Depends, APIRouter, File 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 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, \
from app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList query_uuid_or_user_number, account_money, transfer_money
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 from libs.result_format import HttpResultResponse
from models.recharge import Paymentlog, Fiaccount from models.recharge import Paymentlog, Fiaccount, Fitransferlog
router = APIRouter() router = APIRouter()
...@@ -49,7 +50,6 @@ def guild_settlement_list(data: schemas.GuildWithdrawalList, db: Session = Depen ...@@ -49,7 +50,6 @@ def guild_settlement_list(data: schemas.GuildWithdrawalList, db: Session = Depen
return HttpResultResponse(total=total, data=guild_list) return HttpResultResponse(total=total, data=guild_list)
@router.post("/guild/payment") @router.post("/guild/payment")
def guild_payment_list(data:PaymentWithdrawalList,db: Session = Depends(get_db)): def guild_payment_list(data:PaymentWithdrawalList,db: Session = Depends(get_db)):
"""打款记录""" """打款记录"""
...@@ -60,15 +60,15 @@ def guild_payment_list(data:PaymentWithdrawalList,db: Session = Depends(get_db)) ...@@ -60,15 +60,15 @@ def guild_payment_list(data:PaymentWithdrawalList,db: Session = Depends(get_db))
@router.post('/upload') @router.post('/upload')
async def uploadFile(a_file: bytes = File(...)): async def uploadFile(a_file: bytes = File(...)):
a_content = a_file a_content = a_file
image_name=random_number() image_name = random_number()
cos_path =new_upload_file(a_content,image_name) cos_path = new_upload_file(a_content,image_name)
return HttpResultResponse(data=cos_path) return HttpResultResponse(data=cos_path)
@router.post("/payment/add") @router.post("/payment/add")
def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)): def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)):
"""提交打款""" """提交打款"""
dataPayment=Paymentlog(uuid=data.uuid,money=data.money,cont=data.cont,url=data.url,create_time=datetime.now()) dataPayment = Paymentlog(uuid=data.uuid,money=data.money,cont=data.cont,url=data.url,create_time=datetime.now())
db.add(dataPayment) db.add(dataPayment)
db.commit() db.commit()
db.refresh(dataPayment) db.refresh(dataPayment)
...@@ -76,7 +76,6 @@ def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)): ...@@ -76,7 +76,6 @@ def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)):
return HttpResultResponse(data='') return HttpResultResponse(data='')
@router.get("/onaccount") @router.get("/onaccount")
def outon_account(db: Session = Depends(get_db)): def outon_account(db: Session = Depends(get_db)):
"""转出和转入账户人员列表""" """转出和转入账户人员列表"""
...@@ -84,15 +83,33 @@ def outon_account(db: Session = Depends(get_db)): ...@@ -84,15 +83,33 @@ def outon_account(db: Session = Depends(get_db)):
return HttpResultResponse(total=total, data=account_list) return HttpResultResponse(total=total, data=account_list)
@router.post("/transferlist") @router.post("/transferlist")
def outon_account(data:PaymentAccountlList,db: Session = Depends(get_db)): def outon_account(data: PaymentAccountlList, db: Session = Depends(get_db)):
"""转账列表""" """转账列表"""
account_list, total = accout_list_data(db, Fiaccount,data.dict(exclude_none=True)) account_list, total = accout_list_data(db, Fitransferlog, data.dict(exclude_none=True))
return HttpResultResponse(total=total, data=account_list) return HttpResultResponse(total=total, data=account_list)
@router.post("/query/consumable")
def query_account_money(data: UserNumber, db: Session = Depends(get_db)):
"""查询账户余额"""
consumable = account_money(db, data)
return HttpResultResponse(data=int(consumable))
@router.post("/query/uuid")
def query_uuid_account(data: UserNumber, db: Session = Depends(get_db)):
"""uuid user_number查询"""
user_info = query_uuid_or_user_number(db, data)
return HttpResultResponse(data=user_info)
@router.post("/transfer/money")
def account_transfer_money(data: CreateBill, request: Request, db: Session = Depends(get_db)):
"""账户转账"""
header_list = request.get("headers")
res_info = transfer_money(db, data, header_list)
return HttpResultResponse(data=res_info.id)
@router.post("/guild/update") @router.post("/guild/update")
...@@ -106,4 +123,12 @@ def guild_update_list(data: schemas.GuildUpdate, db: Session = Depends(get_db)): ...@@ -106,4 +123,12 @@ def guild_update_list(data: schemas.GuildUpdate, db: Session = Depends(get_db)):
def finance_fix(data: acc_schemas.PublicModel, db: Session = Depends(get_db)): def finance_fix(data: acc_schemas.PublicModel, db: Session = Depends(get_db)):
"""账户修复报表""" """账户修复报表"""
res, num = crud.FinanceFix.get_finance_fix_data(db, data) res, num = crud.FinanceFix.get_finance_fix_data(db, data)
return HttpResultResponse(total=num, data=res) return HttpResultResponse(total=num, data=res)
\ No newline at end of file
@router.post("/submit/fixTable")
def finance_fix(data: acc_schemas.FixTable, request: Request, db: Session = Depends(get_db)):
"""新增修复报表"""
header_list = request.get("headers")
res = guild.create_fix_table(db, data, header_list)
return HttpResultResponse(data=res.id)
import hashlib import hashlib
import time
import uuid as u import uuid as u
from datetime import datetime
def get_now_timestamp():
"""
获取现在时间
return int eg:1667664000
"""
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
time_array = time.strptime(now_time, "%Y-%m-%d %H:%M:%S")
return int(time.mktime(time_array))
def get_now_datetime():
"""
获取现在时间
return int eg:1667664000
"""
return datetime.now().strftime('%Y-%m-%d %H:%M:%S')
def md5(s): def md5(s):
......
import datetime import datetime
from sqlalchemy import and_, func from sqlalchemy import and_, func
_privacy_fields={''} _privacy_fields = {''}
class QueryAllData:
def __init__(self,db,dbname,params,params_list):
'''
初始化参数
'''
self.db=db
self.dbname=dbname
self.page=params.get("page",1)
self.limit =params.get("size",10)
self.params=params
self.params_list=params_list
def query_data(self): class QueryAllData:
'''
查询所有
'''
print(self.params_list)
if self.params=={}:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).all()
elif self.params_list==None:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all()
else:
queryData = self.db.query(self.dbname).filter(and_(*self.params_list)).order_by(self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
return queryData,count
def query_filter(self): def __init__(self, db, dbname, params, params_list):
''' '''
单个查询 初始化参数
''' '''
pass self.db = db
self.dbname = dbname
self.page = params.get("page", 1)
self.limit = params.get("size", 10)
self.params = params
self.params_list = params_list
def set_attrs(self, attrs_dict): def query_data(self):
"""批量更新模型的字段数据 '''
""" 查询所有
for key, value in attrs_dict.items(): '''
setattr(self, key, value) if self.params == {}:
return self queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).all()
elif self.params_list == None:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).offset(
(int(self.page) - 1) * self.limit).limit(self.limit).all()
else:
queryData = self.db.query(self.dbname).filter(and_(*self.params_list)).order_by(
self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
return queryData, count
def serialization(self,funcs: list = None,remove: set = None,increase: set =None) -> dict: def query_filter(self):
"""序列化指定字段 '''
:return: dict({'field_name': field_value}) 单个查询
""" '''
if funcs is None: pass
funcs = list()
if remove is None:
remove = set()
if increase is None:
increase = set()
result = dict()
fields = set(name.name for name in self.__table__._columns)
fields = fields - remove # 需要被隐藏的字段
fields = fields | increase # 取消被隐藏的字段
for column in fields:
value = getattr(self, column)
if isinstance(value, datetime.datetime):
value = value.strftime('%Y-%m-%d %H:%M:%S')
result[column] = value
if funcs:
for func in funcs:
func, args, kwargs = func
getattr(self, func)(result, *args, **kwargs)
return result
def set_attrs(self, attrs_dict):
"""批量更新模型的字段数据
"""
for key, value in attrs_dict.items():
setattr(self, key, value)
return self
def serialization(self, funcs: list = None, remove: set = None, increase: set = None) -> dict:
"""序列化指定字段
:return: dict({'field_name': field_value})
"""
if funcs is None:
funcs = list()
if remove is None:
remove = set()
if increase is None:
increase = set()
result = dict()
fields = set(name.name for name in self.__table__._columns)
fields = fields - remove # 需要被隐藏的字段
fields = fields | increase # 取消被隐藏的字段
for column in fields:
value = getattr(self, column)
if isinstance(value, datetime.datetime):
value = value.strftime('%Y-%m-%d %H:%M:%S')
result[column] = value
if funcs:
for func in funcs:
func, args, kwargs = func
getattr(self, func)(result, *args, **kwargs)
return result
from sqlalchemy import Column, Integer, String, Text, DateTime, Float
from core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin
class Guild(Base, SerializerMixin):
"""公会表"""
__tablename__ = "guild"
id = Column(Integer, primary_key=True, index=True)
merchants_id = Column(Integer, comment="招商id")
guild_name = Column(String(255), default='', comment="公会名称")
guild_per = Column(String(10), comment="公会比例")
guild_card = Column(String(255), comment="身份证号码")
parentid = Column(Integer, default=0, comment="父级ID")
parentids = Column(String(150), comment="父级类别")
merchants_per = Column(Integer, default=0, comment="招商比例")
current = Column(Integer, default=0)
guild_level = Column(Integer, default=1)
user_id = Column(Integer, comment="公会所有人id")
anchor_default_per = Column(String(10), default='0', comment="主播默认比例")
user_default_per = Column(String(10), default='0', comment="分享者默认比例,两者比例不能超过公会比例")
anchor_max_per = Column(String(10))
user_max_per = Column(String(10))
anchor_min_per = Column(String(10))
redbox_sta = Column(Integer, default=0, comment='是否开启红包0否1是')
redbox_per = Column(String(10), default=0, comment='红包收续费百分比')
user_min_per = Column(String(10))
remark = Column(Text, comment="公会简介")
status = Column(Integer, default=0, comment="-1:结算状态 0,有效,1无效 2:待审核 3:驳回")
contacts = Column(String(255), comment="联系人")
mobile = Column(String(255), comment="联系电话")
total = Column(Float, default=0.00, comment="公会收益计算(人民币)")
genuine_pearl = Column(Float, default=0.00, comment="珍珠数")
frost_genuine_pearl = Column(Float, default=0.00, comment="冻结珍珠数(真)[当前用于幸运礼物奖励]")
fake_frost_genuine_pearl = Column(Float, default=0.00, comment="冻结珍珠数(假)[当前用于幸运礼物奖励]")
rand_genuine_pearl = Column(Float, default=0.00, comment="冗余珍珠数[当前用户幸运礼物奖励]")
merchants_pearl = Column(Float, default=0.00, comment="招商珍珠数")
type = Column(Integer, default=1, comment="1:普通公会 2.普通招商公会 3.签约公会 4.签约招商公会")
quality = Column(Integer, default=1, comment="1:个人 2:公司")
company_name = Column(String(255), comment="公司名称")
company_juridical_person = Column(String(150), comment="法人")
guild_level_id = Column(Integer, default=0, comment="公会等级")
guild_generalize = Column(Float, default=0.00, comment="公会推广收益")
status_time = Column(Integer, comment="被禁用时间")
weixin = Column(String(50), comment="微信号")
business_license = Column(String(255), comment="营业执照")
audit_time = Column(Integer, default=0, comment="审核时间")
audit_remark = Column(String(255), comment="驳回原因")
guild_no = Column(String(30), comment="工会账号")
guildPwd = Column(String(100), default='', comment="密码")
guildPwdStr = Column(String(30), default='', comment="密码明文")
guild_no_switch = Column(Integer, default=1, comment="是否启用公会充值账号权限: 1:开启 2: 关闭")
guild_no_limit = Column(String(100), comment="公会账号配置(json): 键名:startHour、endHour、singleLimit、dayLimit")
guildMobile = Column(String(100), default='', comment="充值账号绑定的手机号")
today_redbox_num = Column(Integer, default=-1, comment="每日红包数量")
today_redbox_money = Column(Integer, default=-1, comment="每日红包总量")
month_redbox_money = Column(Integer, default=-1, comment="每月红包总量")
idcard_face = Column(String(255))
idcard_back = Column(String(255))
pay_status = Column(Integer, default=1, comment="公会用余额充值钻石权限0关闭1开启")
today_guild_pay_start = Column(Integer, default=-1, comment="公会充值开放开始时间")
today_guild_pay_end = Column(Integer, default=-1, comment="公会充值开放结束时间")
guild_today_pay_balance = Column(Integer, default=-1, comment="公户充值每日钻石数")
guild_month_pay_balance = Column(Integer, default=-1, comment="公会充值每月钻石数")
today_guild_pay_charge = Column(Integer, default=-1, comment="公会充值手续费")
pay_pwd = Column(String(255), comment="交易密码")
pay_phone = Column(String(20), default='0', comment="交易密码手机号")
pay_see_sta = Column(Integer, default=0, comment="是否查看协议")
see_money_sta = Column(Integer, default=1, comment="0不可看1可看")
is_ban = Column(Integer, default=0, comment="工会是否被后台封禁 0:正常 1:被封禁")
is_disband = Column(Integer, default=0, comment="公会是否被解散,0 没有 1 被解散")
bindnum = Column(Integer, default=0, comment="公会可绑定人数")
last_keyword = Column(String(255), default='', comment="上一次查询的朱贝号")
over_limit_ratio = Column(String(10), default=-1, comment="超出充值钻石比")
investment_ids = Column(String(20), default='', comment="公会招商权限,1:普通,2:普通招商,3:签约,4:签约招商")
last_login_time = Column(Integer, default=0, comment="上次登录时间")
margin = Column(Float, default=0.00, comment="公会保证金")
attract_investment_money = Column(Float, default=0.00, comment="招商收益不计入直播收益")
balance = Column(Float, default=0.000, comment="钻石余额")
pay_margin = Column(Integer, default=0, comment="是否缴纳过保证金,0:没有 1:有")
is_lucky_gift = Column(Integer, default=1, comment="幸运礼物是否开启,1为开启,0为未开启")
is_binding = Column(Integer, default=1, comment="默认开启绑定,,1为开启,0为未开启")
first_jurisdiction = Column(Integer, default=0, comment="手动修改为最高优先1 幸运 2 绑定 4 充值 8 手续费 16 提现方式 32分享者绑定")
uuid = Column(String(100), default=0)
bind_authority = Column(Integer, default=1, comment="公会分享者绑定权限")
exchange_pearl_authority = Column(Integer, default=1, comment="公会分兑换珍珠权限")
pick_pearl_authority = Column(Integer, default=1, comment="公会分拾取珍珠权限")
withdrawal_time = Column(Integer, default=0, comment="提现时间,目前是具体的天数,0-7")
settlement_time = Column(Integer, default=24, comment="钻石结算周期小时")
idcard_sc = Column(String(255), default=24, comment="手持身份证")
business_license_sc = Column(String(255), comment="手持营业执照")
videoaddress = Column(String(255), comment="承诺视频地址")
make_up_the_difference = Column(Integer, default=0, comment="1开启,默认0关闭")
source = Column(Integer, default=0, comment="新增公会来源:0-公会后台,1-总后台")
v2_user_id = Column(Integer, default=0, comment="主播创建自由公会用户id")
ice_gift = Column(Integer, default=0, comment="是否可以自由解除冻结幸运礼物,0:不能 1:可以")
ty_school = Column(Integer, default=0, comment="是否为天颜培训机构公司(0-否,1-是)")
pledge_pearl = Column(Float, default=0.00, comment="质押金(元)")
user_pledge_pearl = Column(Float, default=0.00, comment="用户可提现的质押金(元)")
pledge_rate = Column(Float, default=0.00, comment="质押金比例")
ice_uuid = Column(String(100), default='', comment="冻结账户uuid")
is_open_user_frozen = Column(Integer, default=2, comment="是否开通财务冻结账户 1为开通 2为没有开通")
partner = Column(Integer, default=0, comment="合作方,0为平台,1为上级")
settlement = Column(Integer, default=0, comment="是否已结算")
rescind = Column(Integer, default=0, comment="0未解约,1解约")
update_time = Column(Integer, default=0, comment="修改时间")
can_do_trans = Column(Integer, default=1, comment="1,不能转账 2,可以转账")
trans_fee = Column(Float, comment="转账手续费,单精度")
master_user_number = Column(Integer, comment="公会长朱贝号")
package_group_id = Column(Integer, default=0, comment="包分组id")
investment_switch = Column(Integer, default=0, comment="1:开启 0关闭 ,招商管理权限开关")
operation_pwd = Column(String(255), default=0, comment="操作密码")
__table_args__ = {'comment': '公会表'}
from sqlalchemy import Column, Integer, String, Float, DateTime,DECIMAL,Text from sqlalchemy import Column, Integer, String, Float, DateTime, DECIMAL, Text
from core.storage.db import Base from core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin from sqlalchemy_serializer import SerializerMixin
...@@ -84,53 +84,55 @@ class Settlement(Base, SerializerMixin): ...@@ -84,53 +84,55 @@ class Settlement(Base, SerializerMixin):
__table_args__ = {'comment': '公会结算表'} __table_args__ = {'comment': '公会结算表'}
class Paymentlog(Base,SerializerMixin): class Paymentlog(Base, SerializerMixin):
"""打款记录""" """打款记录"""
__tablename__ = "payment_log" __tablename__ = "payment_log"
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
cont=Column(String(255),comment="打款备注") cont = Column(String(255), comment="打款备注")
money=Column(DECIMAL(10,2),comment="打款金额",default='0.00') money = Column(DECIMAL(10, 2), comment="打款金额", default='0.00')
url=Column(String(255),comment="凭证图片",default='0') url = Column(String(255), comment="凭证图片", default='0')
uuid=Column(String(255),comment="出账账户") uuid = Column(String(255), comment="出账账户")
create_time = Column(DateTime, comment="打款时间") create_time = Column(DateTime, comment="打款时间")
__table_args__ = {'comment': '打款记录表'} __table_args__ = {'comment': '打款记录表'}
class Fiaccount(Base,SerializerMixin): class Fiaccount(Base, SerializerMixin):
''' '''
账户列表 账户
''' '''
__tablename__ = "fi_account" __tablename__ = "fi_account"
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
name=Column(String(100),comment="账户名称") name = Column(String(100), comment="账户名称")
unique_tag=Column(String(100),comment="唯一标记") unique_tag = Column(String(100), comment="唯一标记")
beneficiary=Column(String(100),comment="受益人") beneficiary = Column(String(100), comment="受益人")
description=Column(String(100),comment="描述信息") description = Column(String(100), comment="描述信息")
uuid=Column(String(60),comment="用户id",index=True) uuid = Column(String(60), comment="用户id", index=True)
create_time=Column(Integer,comment="创建时间") create_time = Column(Integer, comment="创建时间")
config_key=Column(String(150),comment="配置key,和api接口约定好的标识") config_key = Column(String(150), comment="配置key,和api接口约定好的标识")
income=Column(Text,comment="入账") income = Column(Text, comment="入账")
output=Column(Text,comment="出账") output = Column(Text, comment="出账")
operator=Column(String(255),comment="") operator = Column(String(255), comment="")
operator_id=Column(Integer,comment="操作id") operator_id = Column(Integer, comment="操作id")
class Fitransferlog(Base,SerializerMixin): class Fitransferlog(Base, SerializerMixin):
''' '''
账户列表 转账列表, 商量说存id
''' '''
__tablename__ = "fi_transfer_log" __tablename__ = "fi_transfer_log"
id = Column(Integer,primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
amount=Column(DECIMAL(20,6),comment="转入金额") amount = Column(DECIMAL(20, 6), comment="转入金额")
dst_name=Column(String(100),comment="转出账户") dst_id = Column(Integer, comment="转出账户id")
create_time=Column(Integer,comment="创建时间") create_time = Column(Integer, comment="创建时间")
dst_uuid=Column(String(60),comment="转出账户") transfer_id = Column(Integer, comment="转入账户id")
transfer_uuid=Column(String(60),comment="转入账户") type = Column(Integer, comment="转账类型(0:对企业,1:对个人)")
user_id=Column(Integer,comment="用户id") nick_name = Column(String(100), comment="用户昵称")
remarks=Column(String(255),comment="转账备注") remark = Column(String(255), comment="转账备注")
operator=Column(String(255),comment="操作员") transfer_type = Column(String(255), comment="转账类型")
operator_id=Column(String(255),comment="操作员id") operator = Column(String(255), comment="操作员")
__table_args__ = {'comment': '转账信息表'}
class FinanceFixLog(Base, SerializerMixin): class FinanceFixLog(Base, SerializerMixin):
...@@ -139,11 +141,10 @@ class FinanceFixLog(Base, SerializerMixin): ...@@ -139,11 +141,10 @@ class FinanceFixLog(Base, SerializerMixin):
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
type = Column(Integer, comment="0系统账户1私有账户") type = Column(Integer, comment="0系统账户1私有账户")
money = Column(Float, comment="修复金额") money = Column(Float, comment="修复金额")
unique_tag = Column(String(128), comment="唯一标识")
amount_type = Column(String(128), comment="账户类型") amount_type = Column(String(128), comment="账户类型")
remark = Column(String(255), comment="备注") remark = Column(String(255), comment="备注")
operator = Column(String(255), comment="操作员(每笔转账都要记录一下)") operator = Column(String(255), comment="操作员")
operator_id = Column(Integer, comment="操作员id(可能设计到改了名字,记id比较好)") account_id = Column(Integer, comment="账户id")
create_time = Column(DateTime, comment="创建时间") create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '财务修复日志'} __table_args__ = {'comment': '财务修复日志'}
...@@ -33,3 +33,47 @@ class Authority(Base): ...@@ -33,3 +33,47 @@ class Authority(Base):
create_time = Column(DateTime, comment="创建时间") create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '菜单权限表'} __table_args__ = {'comment': '菜单权限表'}
class V2User(Base, SerializerMixin):
__tablename__ = "v2_user"
user_id = Column(Integer, primary_key=True, index=True)
nick_name = Column(String(255), comment="昵称")
user_number = Column(Integer, comment="用户靓号")
mobile = Column(String(45), comment="用户手机号")
user_name = Column(String(30), comment="帐号")
password = Column(String(32), comment="密码")
register_time = Column(Integer, comment="注册时间")
last_login_time = Column(Integer, default=0, comment="最后登录时间[时间戳]")
last_login_device = Column(String(64), default='', comment="最后登录设备")
last_login_ip = Column(Integer, default=0, comment="最后登录ip[长整形]")
heade_portrait = Column(String(255), default='', comment="头像[不存oss前缀]")
is_no_play = Column(Integer, default=0, comment="是否禁播(0可以播,1禁播)")
is_achor = Column(Integer, default=0, comment="是否是主播,0不是,1是线上,2是线下,3未知")
parent_id = Column(Integer, default=0, comment="上级用户ID(分享者父ID)")
user_status = Column(Integer, default=0, comment="用户注销状态:-2注销 -1:禁用 0正常")
anchor_level = Column(Integer, default=1, comment="主播等级")
user_level = Column(Integer, default=1, comment="活跃值等级(原用户等级)")
wealth_level = Column(Integer, default=0, comment="财富等级")
is_pk = Column(Integer, default=0, comment="是否在pk中")
is_showing = Column(Integer, default=0, comment="主播是否正在直播(1在直播,0不在直播)")
third_user_id = Column(String(50), default=0, comment="第三方用户id")
user_type = Column(Integer, default=0, comment="用户类型(0:普通用户,9:机器人,6:客服,8:运营,7:代理,11水军[在分销商统计,主播统计中会排除这些人的统计])")
mac = Column(String(255), default='', comment="设备的mac")
channel_name = Column(String(100), default='', comment="渠道")
version = Column(String(50), default='', comment="注册版本号")
show_title = Column(String(100), default='', comment="开播标题")
upload_cover = Column(String(255), default='', comment="主播封面[去除OSS前缀]")
agent_addtime = Column(Integer, default=0, comment="添加代理时间")
withdraw_state = Column(Integer, default=0, comment="禁止提现状态0可以1不可以")
show_background = Column(String(200), comment="直播间背景图")
uuid = Column(String(100), default=0, comment="UUID")
reg_source = Column(String(100), comment="冗余包名")
show_wish_status = Column(Integer, default=0, comment="冗余包名")
wish_status = Column(Integer, default=0, comment="直播间心愿任务状态(0:关闭,1:开启)")
titleid = Column(Integer, comment="称号id")
update_time = Column(DateTime, comment="修改时间")
task_level = Column(Integer, default=0, 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