diff --git a/alembic/versions/bde4f21924c8_order_and_chat.py b/alembic/versions/bde4f21924c8_order_and_chat.py index 8ab3d6c..cb0c1b8 100644 --- a/alembic/versions/bde4f21924c8_order_and_chat.py +++ b/alembic/versions/bde4f21924c8_order_and_chat.py @@ -50,7 +50,7 @@ def upgrade() -> None: sa.Column('name', sa.String(length=20), nullable=False, comment='产品名'), sa.Column('category', sa.Enum('VIP', 'POINTS', name='productcategory', inherit_schema=True), nullable=False, comment='商品分类, vip-会员服务 points-积分服务'), sa.Column('price', sa.Integer(), nullable=False, comment='价格,不带小数点 单位为分'), - sa.Column('action', sa.String(length=10), nullable=False, comment='付款后的动作,会员续期:vip_renewal 积分:recharge_points'), + sa.Column('action', sa.String(length=30), nullable=False, comment='付款后的动作,会员续期:vip_renewal 积分:recharge_points'), sa.Column('number', sa.Integer(), nullable=False, comment='执行动作的增量值'), sa.Column('description', sa.Text(), nullable=True, comment='商品描述'), sa.Column('id', sa.Integer(), autoincrement=True, nullable=False, comment='自增id'), diff --git a/core/db/crud.py b/core/db/crud.py index 5b7b1bb..b805d5a 100644 --- a/core/db/crud.py +++ b/core/db/crud.py @@ -79,7 +79,7 @@ class CRUD: result = await self.session.execute( select(model) if filters is None else select(model).filter( - *self.build_filter_conditions(filters, model)).order_by(desc(model.insert_time)) + *self.build_filter_conditions(filters, model)).order_by(desc(model.created_at)) ) records = result.scalars().all() return records diff --git a/core/db/models.py b/core/db/models.py index aaadf17..eeb3554 100644 --- a/core/db/models.py +++ b/core/db/models.py @@ -220,7 +220,7 @@ class Product(BaseModel, DateModel): Enum(base_schema.ProductCategory, inherit_schema=True), comment='商品分类, vip-会员服务 points-积分服务' ) price: Mapped[int] = mapped_column(Integer, comment='价格,不带小数点 单位为分') - action: Mapped[str] = mapped_column(String(10), comment='付款后的动作,会员续期:vip_renewal 积分:recharge_points') + action: Mapped[str] = mapped_column(String(30), comment='付款后的动作,会员续期:vip_renewal 积分:recharge_points') number: Mapped[int] = mapped_column(Integer, comment='执行动作的增量值') description: Mapped[str] = mapped_column(Text, nullable=True, comment='商品描述') diff --git a/core/routers/pay/routes.py b/core/routers/pay/routes.py index 9913b7b..0204de5 100644 --- a/core/routers/pay/routes.py +++ b/core/routers/pay/routes.py @@ -5,7 +5,6 @@ # @Author : xingc # @Desc : import logging -import xml from xml.parsers.expat import ExpatError import xmltodict diff --git a/core/routers/product/__init__.py b/core/routers/product/__init__.py new file mode 100644 index 0000000..40fdec5 --- /dev/null +++ b/core/routers/product/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# @Project : X25020501_card_book +# @File : __init__.py.py +# @Date : 2025/5/6 14:27 +# @Software : PyCharm +# @Author : xingc +# @Desc : diff --git a/core/routers/product/routes.py b/core/routers/product/routes.py new file mode 100644 index 0000000..ba5666c --- /dev/null +++ b/core/routers/product/routes.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# @Project : X25020501_card_book +# @File : routes.py +# @Date : 2025/5/6 14:29 +# @Software : PyCharm +# @Author : xingc +# @Desc : +import logging +from typing import List + +from fastapi import APIRouter, Depends +from sqlalchemy.ext.asyncio import AsyncSession + +from core.base import schema as base_schema +from core.db.crud import CRUD +from core.db.engine import get_async_session +from core.db.models import Product +from core.routers.auth.schema import LoginUser +from core.routers.auth.services import get_current_user_form_http + +from . import schema + +logger = logging.getLogger(__name__) +product_router = APIRouter(prefix='/product', tags=['产品模块']) + + +@product_router.get( + '/all', + summary='获取分类产品', + response_model=base_schema.BaseResponse[ + List[schema.ProductOut] + ] +) +async def get_products( + category: base_schema.ProductCategory, + login_user: LoginUser = Depends(get_current_user_form_http), + db_session: AsyncSession = Depends(get_async_session) +): + db_crud = CRUD(db_session, Product) + products = await db_crud.get_all(filters={'category': category}) + return { + 'data': products + } diff --git a/core/routers/product/schema.py b/core/routers/product/schema.py new file mode 100644 index 0000000..004a5e4 --- /dev/null +++ b/core/routers/product/schema.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# @Project : X25020501_card_book +# @File : schema.py +# @Date : 2025/5/6 14:31 +# @Software : PyCharm +# @Author : xingc +# @Desc : +from pydantic import BaseModel + +from core.base.schema import ProductCategory + + +class ProductOut(BaseModel): + name: str + category: ProductCategory + price: int + number: int + description: str | None diff --git a/core/routers/route.py b/core/routers/route.py index 48dd8f8..a962d7e 100644 --- a/core/routers/route.py +++ b/core/routers/route.py @@ -8,6 +8,7 @@ from .auth.routes import auth_router, test_auth_router from .card.routes import card_router from .chat.routes import chat_router from .pay.routes import pay_router +from .product.routes import product_router from .file.routes import file_router from .user.routes import user_router @@ -17,6 +18,7 @@ routers = [ card_router, chat_router, pay_router, + product_router, file_router, user_router ]