Commit e97183af authored by xianyang's avatar xianyang

优化模型映射,新增报表orm,接口

parent a079804c
from fastapi import APIRouter from fastapi import APIRouter
from app.api.users import views from app.api.users import views as u_view
from app.api.statement import views as s_view
api_router = APIRouter() api_router = APIRouter()
# api_router.include_router(login.router, tags=["login"]) # api_router.include_router(login.router, tags=["login"])
# api_router.include_router(items.router, prefix="/items", tags=["items"]) # api_router.include_router(items.router, prefix="/items", tags=["items"])
api_router.include_router(views.router, prefix="/users", tags=["users"]) api_router.include_router(u_view.router, prefix="/users", tags=["users"])
api_router.include_router(s_view.router, prefix="/statement", tags=["statement"])
from sqlalchemy.orm import Session
from models import statement as models
from app.api.statement import schemas
def get_statement(db: Session, user_id: int):
return db.query(models.Statement).filter(models.Statement.id == user_id)
def get_statement_by_name(db: Session, username: str):
return db.query(models.Statement).filter(models.Statement.username == username).first()
def get_statements(db: Session, page: int = 0, size: int = 10):
return db.query(models.Statement).offset(page).limit(size).all()
def create_statementr(db: Session, user: schemas.StatementCreate):
db_user = models.Statement(order_number=user.order_number, user_id=user.user_id, zb_number=user.zb_number,
nickname=user.nickname, recharge_amount=user.recharge_amount, recharge_channel=user.recharge_channel,
flowing_water_number=user.flowing_water_number)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
from pydantic import BaseModel
class StatementBase(BaseModel):
user_id: int
zb_number: int
order_number: int
class StatementCreate(StatementBase):
nickname: str
recharge_amount: float
recharge_channel: str
flowing_water_number: int
class Statement(StatementBase):
id: int
class Config:
orm_mode = True
from app import get_db
from sqlalchemy.orm import Session
from app.api.statement import crud, schemas
from fastapi import Depends, APIRouter, HTTPException
from libs.result_format import HttpResultResponse, HttpMessage
from typing import Optional
router = APIRouter()
@router.post("/recharge/list")
def statement_recharge_list(page: int = 1, size: int = 10, db: Session = Depends(get_db)):
"""充值报表列表"""
users = crud.get_statements(db, page=page, size=size)
return users
@router.post("/create")
def create_user(data: schemas.StatementCreate, db: Session = Depends(get_db)):
"""添加"""
res = crud.create_statementr(db=db, user=data)
return HttpResultResponse(data=res.id)
...@@ -51,4 +51,3 @@ def create_user(data: schemas.UserCreate, db: Session = Depends(get_db)): ...@@ -51,4 +51,3 @@ def create_user(data: schemas.UserCreate, db: Session = Depends(get_db)):
return HttpResultResponse(code=400, msg=HttpMessage.USER_EXIST) return HttpResultResponse(code=400, msg=HttpMessage.USER_EXIST)
res = crud.create_user(db=db, user=data) res = crud.create_user(db=db, user=data)
return HttpResultResponse(data=res.id) return HttpResultResponse(data=res.id)
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
"""创建数据库连接引擎""" """创建数据库连接引擎"""
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import os import os
from core.config.env import env from core.config.env import env
...@@ -28,4 +28,3 @@ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) ...@@ -28,4 +28,3 @@ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 创建 Base 类,用于 ORM 模型的继承 # 创建 Base 类,用于 ORM 模型的继承
Base = declarative_base() Base = declarative_base()
Base.metadata.create_all(engine)
import uvicorn import uvicorn
from fastapi import FastAPI from fastapi import FastAPI
from app.api.api_v1 import api_router from app.api.api_v1 import api_router
from starlette.middleware.cors import CORSMiddleware from starlette.middleware.cors import CORSMiddleware
from core.storage.db import Base, engine
app = FastAPI() app = FastAPI()
...@@ -19,7 +16,7 @@ app.add_middleware( ...@@ -19,7 +16,7 @@ app.add_middleware(
allow_headers=['*']) # 允许跨域的headers,可以用来鉴别来源等作用。 allow_headers=['*']) # 允许跨域的headers,可以用来鉴别来源等作用。
app.include_router(api_router, prefix="/api") # 路由 app.include_router(api_router, prefix="/api") # 路由
Base.metadata.create_all(bind=engine) # 映射模型类
if __name__ == '__main__': if __name__ == '__main__':
uvicorn.run(app=app, host="127.0.0.1", port=8001) uvicorn.run(app=app, host="127.0.0.1", port=8001)
from core.storage.db import Base, engine from core.storage.db import engine
from models import users, statement
Base.metadata.create_all(bind=engine) # 映射模型表
users.Base.metadata.create_all(bind=engine)
statement.Base.metadata.create_all(bind=engine)
from sqlalchemy import Column, Integer, String, DateTime, Float
from core.storage.db import Base
from datetime import datetime
class Statement(Base):
__tablename__ = "statement"
id = Column(Integer, primary_key=True, index=True)
order_number = Column(String(50), unique=True, index=True, comment='订单号')
user_id = Column(Integer, index=True, comment='用户ID')
zb_number = Column(String(50), comment='朱贝号')
nickname = Column(String(50), comment='昵称')
recharge_amount = Column(Float, comment='充值金额')
recharge_channel = Column(String(50), index=True, comment='充值渠道')
flowing_water_number = Column(String(50), unique=True, index=True, comment='交易流水号')
pay_time = Column(DateTime, comment='支付时间')
callback_time = Column(DateTime, comment='回调成功时间')
actual_pay_time = Column(DateTime, comment='实际支付时间')
create_time = Column(DateTime, default=datetime.now(), comment='创建时间')
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, DateTime, Float, ARRAY from sqlalchemy import Column, Integer, String, DateTime, Float
from sqlalchemy.orm import relationship
from core.storage.db import Base from core.storage.db import Base
...@@ -29,4 +27,3 @@ class Authority(Base): ...@@ -29,4 +27,3 @@ class Authority(Base):
name = Column(String(50), index=True) name = Column(String(50), index=True)
up_one_level = Column(Integer, index=True) up_one_level = Column(Integer, index=True)
create_time = Column(DateTime) create_time = Column(DateTime)
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