Commit f0925b50 authored by xianyang's avatar xianyang

报表-转账,财务优化

parent 885f6a7f
......@@ -39,3 +39,11 @@ class FinanceInfo(PublicModel):
class FinanceDetails(PublicModel):
type: Optional[int] = 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
from sqlalchemy import and_, func
from sqlalchemy.orm import Session
from libs.functions import get_now_timestamp, get_now_datetime
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()
......@@ -71,8 +76,7 @@ class GuildSet(object):
db.commit()
def paymentset_guild_data(db: Session,dbname,params):
def paymentset_guild_data(db: Session, dbname, params):
paymentset_filters = []
if params.get("id"):
paymentset_filters.append(dbname.guild_id == params.get("guild_id"))
......@@ -88,20 +92,28 @@ def paymentset_guild_data(db: Session,dbname,params):
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
querydata, count = QueryAllData(db, dbname, params, paymentset_filters).query_data()
data = [QueryAllData.serialization(item) 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 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 = []
if params.get("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"):
accout_filters.append(dbname.cont == params.get("cont"))
if params.get("money"):
......@@ -114,6 +126,76 @@ def accout_list_data(db:Session,dbname,params):
accout_filters.append(dbname.create_time >= params.get("start_time"))
if 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]
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):
class StatementCreate(StatementBase):
nickname: str
recharge_amount: float
recharge_channel: str
......@@ -19,7 +18,7 @@ class StatementCreate(StatementBase):
class StatementList(BaseModel):
page: Optional[int] = None
size: Optional[int] = None
start_time: Optional[str] = ""
start_time: Optional[str] = ""
end_time: Optional[str] = ""
order_number: Optional[str] = ""
user_id: Optional[str] = ""
......@@ -37,7 +36,7 @@ class Statement(StatementBase):
class UserWithdrawalList(BaseModel):
page: Optional[int] = None
size: Optional[int] = None
start_time: Optional[str] = ""
start_time: Optional[str] = ""
end_time: Optional[str] = ""
status: Optional[int] = None
user_id: Optional[int] = None
......@@ -46,59 +45,73 @@ class UserWithdrawalList(BaseModel):
class GuildWithdrawalList(BaseModel):
page: int
size: int
start_time: str =None
end_time: str=None
status: int=None
guild_id: int=None
start_time: str = None
end_time: str = None
status: int = None
guild_id: int = None
class PaymentWithdrawalList(BaseModel):
page:int =None
size:int =None
start_time: str =None
end_time: str=None
status: int=None
guild_id: int=None
page: int = None
size: int = None
start_time: str = None
end_time: str = None
status: int = None
guild_id: int = None
@validator('start_time')
def validate_start_time(cls, val):
if val !='':
if val != '':
return val
@validator('end_time')
def validate_end_time(cls, val):
if val !='':
if val != '':
return val
@validator('status')
def validate_status(cls, val):
if val !='':
if val != '':
return val
@validator('guild_id')
def validate_guild_id(cls, val):
if val !='':
if val != '':
return val
class PaymentAdd(BaseModel):
uuid:str
money:int
cont:str
url:str
def __str__(self):
return "uuid:%s, money:%s" % (str(self.uuid), self.money)
uuid: str
money: int
cont: str
url: str
def __str__(self):
return "uuid:%s, money:%s" % (str(self.uuid), self.money)
class PaymentAccountlList(PaymentWithdrawalList):
uuid : int=None
uuid: int = None
transfer_id: int = None
dst_id: int = None
class GuildUpdate(BaseModel):
id: 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 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 import get_db
from fastapi import Depends, APIRouter, File
from fastapi import Depends, APIRouter, File, Request
from sqlalchemy.orm import Session
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.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList
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
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
from models.recharge import Paymentlog, Fiaccount
from models.recharge import Paymentlog, Fiaccount, Fitransferlog
router = APIRouter()
......@@ -49,7 +50,6 @@ def guild_settlement_list(data: schemas.GuildWithdrawalList, db: Session = Depen
return HttpResultResponse(total=total, data=guild_list)
@router.post("/guild/payment")
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')
async def uploadFile(a_file: bytes = File(...)):
a_content = a_file
image_name=random_number()
cos_path =new_upload_file(a_content,image_name)
image_name = random_number()
cos_path = new_upload_file(a_content,image_name)
return HttpResultResponse(data=cos_path)
@router.post("/payment/add")
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.commit()
db.refresh(dataPayment)
......@@ -76,7 +76,6 @@ def guild_payment_list(data:PaymentAdd,db: Session = Depends(get_db)):
return HttpResultResponse(data='')
@router.get("/onaccount")
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)
@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)
@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")
......@@ -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)):
"""账户修复报表"""
res, num = crud.FinanceFix.get_finance_fix_data(db, data)
return HttpResultResponse(total=num, data=res)
\ No newline at end of file
return HttpResultResponse(total=num, data=res)
@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 time
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):
......
import datetime
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):
'''
查询所有
'''
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
class QueryAllData:
def query_filter(self):
'''
单个查询
'''
pass
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 set_attrs(self, attrs_dict):
"""批量更新模型的字段数据
"""
for key, value in attrs_dict.items():
setattr(self, key, value)
return self
def query_data(self):
'''
查询所有
'''
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 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
def query_filter(self):
'''
单个查询
'''
pass
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 sqlalchemy_serializer import SerializerMixin
......@@ -84,53 +84,55 @@ class Settlement(Base, SerializerMixin):
__table_args__ = {'comment': '公会结算表'}
class Paymentlog(Base,SerializerMixin):
class Paymentlog(Base, SerializerMixin):
"""打款记录"""
__tablename__ = "payment_log"
id = Column(Integer, primary_key=True, index=True)
cont=Column(String(255),comment="打款备注")
money=Column(DECIMAL(10,2),comment="打款金额",default='0.00')
url=Column(String(255),comment="凭证图片",default='0')
uuid=Column(String(255),comment="出账账户")
cont = Column(String(255), comment="打款备注")
money = Column(DECIMAL(10, 2), comment="打款金额", default='0.00')
url = Column(String(255), comment="凭证图片", default='0')
uuid = Column(String(255), comment="出账账户")
create_time = Column(DateTime, comment="打款时间")
__table_args__ = {'comment': '打款记录表'}
class Fiaccount(Base,SerializerMixin):
class Fiaccount(Base, SerializerMixin):
'''
账户列表
账户
'''
__tablename__ = "fi_account"
id = Column(Integer, primary_key=True, index=True)
name=Column(String(100),comment="账户名称")
unique_tag=Column(String(100),comment="唯一标记")
beneficiary=Column(String(100),comment="受益人")
description=Column(String(100),comment="描述信息")
uuid=Column(String(60),comment="用户id",index=True)
create_time=Column(Integer,comment="创建时间")
config_key=Column(String(150),comment="配置key,和api接口约定好的标识")
income=Column(Text,comment="入账")
output=Column(Text,comment="出账")
operator=Column(String(255),comment="")
operator_id=Column(Integer,comment="操作id")
class Fitransferlog(Base,SerializerMixin):
name = Column(String(100), comment="账户名称")
unique_tag = Column(String(100), comment="唯一标记")
beneficiary = Column(String(100), comment="受益人")
description = Column(String(100), comment="描述信息")
uuid = Column(String(60), comment="用户id", index=True)
create_time = Column(Integer, comment="创建时间")
config_key = Column(String(150), comment="配置key,和api接口约定好的标识")
income = Column(Text, comment="入账")
output = Column(Text, comment="出账")
operator = Column(String(255), comment="")
operator_id = Column(Integer, comment="操作id")
class Fitransferlog(Base, SerializerMixin):
'''
账户列表
转账列表, 商量说存id
'''
__tablename__ = "fi_transfer_log"
id = Column(Integer,primary_key=True, index=True)
amount=Column(DECIMAL(20,6),comment="转入金额")
dst_name=Column(String(100),comment="转出账户")
create_time=Column(Integer,comment="创建时间")
dst_uuid=Column(String(60),comment="转出账户")
transfer_uuid=Column(String(60),comment="转入账户")
user_id=Column(Integer,comment="用户id")
remarks=Column(String(255),comment="转账备注")
operator=Column(String(255),comment="操作员")
operator_id=Column(String(255),comment="操作员id")
id = Column(Integer, primary_key=True, index=True)
amount = Column(DECIMAL(20, 6), comment="转入金额")
dst_id = Column(Integer, comment="转出账户id")
create_time = Column(Integer, comment="创建时间")
transfer_id = Column(Integer, comment="转入账户id")
type = Column(Integer, comment="转账类型(0:对企业,1:对个人)")
nick_name = Column(String(100), comment="用户昵称")
remark = Column(String(255), comment="转账备注")
transfer_type = Column(String(255), comment="转账类型")
operator = Column(String(255), comment="操作员")
__table_args__ = {'comment': '转账信息表'}
class FinanceFixLog(Base, SerializerMixin):
......@@ -139,11 +141,10 @@ class FinanceFixLog(Base, SerializerMixin):
id = Column(Integer, primary_key=True, index=True)
type = Column(Integer, comment="0系统账户1私有账户")
money = Column(Float, comment="修复金额")
unique_tag = Column(String(128), comment="唯一标识")
amount_type = Column(String(128), comment="账户类型")
remark = Column(String(255), comment="备注")
operator = Column(String(255), comment="操作员(每笔转账都要记录一下)")
operator_id = Column(Integer, comment="操作员id(可能设计到改了名字,记id比较好)")
operator = Column(String(255), comment="操作员")
account_id = Column(Integer, comment="账户id")
create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '财务修复日志'}
......@@ -33,3 +33,47 @@ class Authority(Base):
create_time = Column(DateTime, 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