Commit 9182d7c4 authored by xianyang's avatar xianyang

账户接口

parent 6dce3032
from datetime import datetime
from fastapi import HTTPException, status
from sqlalchemy.orm import Session
from app.api.account import schemas
from libs.functions import wrapper_out
from models import account as models
def get_account(db: Session, name: str):
"""查询单个"""
return db.query(models.Account).filter(models.Account.name == name).first()
def get_id_to_authority(db: Session, role_id: int):
return db.query(models.Account).filter(models.Account.id == role_id).first()
@wrapper_out()
def get_account_list(db: Session, param):
"""列表"""
result_list = []
if param.name:
query_res = db.query(models.Account).filter(models.Account.name.like(f'%{param.name}%')).\
offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all()
else:
query_res = db.query(models.Account).offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all()
if not query_res:
return []
for i in query_res:
serializer_info = i.to_dict()
if i.income:
income_list = serializer_info.get('income').split(',')
serializer_info['income'] = [int(i) for i in income_list]
else:
serializer_info['income'] = []
if i.output:
output_list = serializer_info.get('output').split(',')
serializer_info['output'] = [int(i) for i in output_list]
else:
serializer_info['output'] = []
result_list.append(serializer_info)
return result_list
def create_account(db: Session, param: schemas.AccountCreate):
"""创建"""
try:
db_account = models.Account(name=param.name, unique_tag=param.unique_tag, config_key=param.config_key,
remark=param.remark, create_time=datetime.now())
db.add(db_account)
db.commit()
db.refresh(db_account)
except Exception as e:
print(e)
return {}
return db_account
def update_account_info(db: Session, old_data):
"""修改"""
if old_data.name:
db.query(models.Account).filter(models.Account.id == old_data.id).update(
{models.Account.name: old_data.name})
if old_data.remark:
db.query(models.Account).filter(models.Account.id == old_data.id).update(
{models.Account.remark: old_data.remark})
if old_data.income:
db.query(models.Account).filter(models.Account.id == old_data.id).update(
{models.Account.income: ','.join(map(str, old_data.income))})
if old_data.output:
db.query(models.Account).filter(models.Account.id == old_data.id).update(
{models.Account.output: ','.join(map(str, old_data.output))})
db.commit()
def get_finance_info(db: Session, role_id: int):
db.query(models.Account).filter(models.Account.id == role_id).delete()
return True
from typing import Optional
from pydantic import BaseModel
class AccountCreate(BaseModel):
name: str
remark: str
unique_tag: str
config_key: str
class AccountList(BaseModel):
name: str
page: Optional[int] = None
size: Optional[int] = None
class AccountUpdate(BaseModel):
id: int
name: str
remark: str
income: list
output: list
from fastapi import Depends, APIRouter
from sqlalchemy.orm import Session
from app import get_db
from app.api.account import schemas, crud
from libs.result_format import HttpResultResponse, HttpMessage
router = APIRouter()
@router.post("/create")
def create_account(data: schemas.AccountCreate, db: Session = Depends(get_db)):
"""添加账户"""
db_info = crud.get_account(db, name=data.name)
if db_info:
return HttpResultResponse(code=400, msg=HttpMessage.ACCOUNT_EXIST)
res = crud.create_account(db=db, param=data)
if not res:
return HttpResultResponse(code=500, msg=res)
return HttpResultResponse(data=res.id)
@router.post("/list")
def user_list(data: schemas.AccountList, db: Session = Depends(get_db)):
"""账户列表"""
result = crud.get_account_list(db, data)
return HttpResultResponse(total=len(result), data=result)
@router.post("/update")
def read_account(data: schemas.AccountUpdate, db: Session = Depends(get_db)):
"""账户修改"""
crud.update_account_info(db, data)
return HttpResultResponse()
@router.post("/finance/info/{aid}")
def finance_information(aid, db: Session = Depends(get_db)):
"""财务信息"""
crud.get_finance_info(db, aid)
return HttpResultResponse()
......@@ -2,8 +2,10 @@ from fastapi import APIRouter
from app.api.users import views as u_view
from app.api.statement import views as s_view
from app.api.role import views as r_view
from app.api.account import views as a_view
api_router = APIRouter()
api_router.include_router(u_view.router, prefix="/users", tags=["users"])
api_router.include_router(s_view.router, prefix="/statement", tags=["statement"])
api_router.include_router(r_view.router, prefix="/role", tags=["role"])
api_router.include_router(a_view.router, prefix="/account", tags=["account"])
from fastapi import Depends, APIRouter
from sqlalchemy.orm import Session
from app import get_db
from app.api.role import crud, schemas
from app.api.role import schemas, crud
from libs.result_format import HttpResultResponse, HttpMessage
router = APIRouter()
......
......@@ -12,6 +12,8 @@ class HttpMessage(object):
ROLE_EXIST = "角色已存在"
NO_DELETE_ROLE = "不能删除已绑定用户的角色!"
ACCOUNT_EXIST = "账号已存在"
class HttpResultResponse(Response):
def __init__(self, code=None, msg=None, **kwargs):
......
import datetime
from sqlalchemy.orm import Session
from fastapi import Depends, APIRouter, HTTPException, status
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
from jose import jwt, JWTError
......
from core.storage.db import engine
from models import users, roles, recharge
from models import users, roles, recharge, account
# 映射模型表
users.Base.metadata.create_all(bind=engine)
roles.Base.metadata.create_all(bind=engine)
recharge.Base.metadata.create_all(bind=engine)
account.Base.metadata.create_all(bind=engine)
from sqlalchemy import Column, Integer, String, Text, DateTime, Index
from core.storage.db import Base
from sqlalchemy_serializer import SerializerMixin
from libs import functions
class Account(Base, SerializerMixin):
"""账户表"""
__tablename__ = "account"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(255), index=True, comment="账户名称")
unique_tag = Column(String(100), unique=True, comment="唯一标记")
beneficiary = Column(String(100), comment="受益人")
remark = Column(String(255), comment="描述")
uuid = Column(String(60), default=functions.uuid(), comment="uuid")
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(可能设计到改了名字,记id比较好)")
create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '财务系统-账号管理'}
......@@ -20,6 +20,8 @@ class Recharge(Base, SerializerMixin):
current = Column(DateTime, comment="回调成功时间")
payment_time = Column(Integer, comment="实际第三方订单支付时间")
__table_args__ = {'comment': '用户充值表'}
class UserWC(Base, SerializerMixin):
"""用户提现"""
......@@ -40,6 +42,8 @@ class UserWC(Base, SerializerMixin):
final_money = Column(String(50), comment="实得收益")
current = Column(DateTime, comment="回调成功时间")
__table_args__ = {'comment': '用户提现表'}
class GuildWC(Base, SerializerMixin):
"""公会提现"""
......@@ -58,6 +62,8 @@ class GuildWC(Base, SerializerMixin):
create_time = Column(DateTime, comment="创建时间")
update_time = Column(DateTime, comment="修改时间")
__table_args__ = {'comment': '公会提现表'}
class Settlement(Base, SerializerMixin):
"""公会结算"""
......@@ -75,4 +81,4 @@ class Settlement(Base, SerializerMixin):
bank_no = Column(String(255), comment="户头名称")
create_time = Column(DateTime, comment="申请结算时间")
__table_args__ = (Index('guild_id', 'status'), {'comment': '公会结算表'})
__table_args__ = {'comment': '公会结算表'}
......@@ -11,3 +11,5 @@ class Role(Base, SerializerMixin):
authority = Column(String(225), comment="权限")
remark = Column(Text, comment="备注")
create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '角色表'}
......@@ -21,6 +21,8 @@ class User(Base, SerializerMixin):
create_time = Column(DateTime, comment="创建时间")
update_time = Column(DateTime, comment="修改时间")
__table_args__ = {'comment': '系统用户表'}
class Authority(Base):
__tablename__ = "authority"
......@@ -29,3 +31,5 @@ class Authority(Base):
name = Column(String(50), index=True, comment="权限名称")
up_one_level = Column(Integer, index=True, comment="上级权限id")
create_time = Column(DateTime, 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