Files
shaguabijia-app-server/app/crud/order_record.py
T
chenshuobo c1ce109f13 feat: 新增 GET /api/v1/user/records 订单记录分页接口
- 新增 OrderRecord 模型 (user_id, platform, store_name, dishes, order_date, price, original_price, savings)
- 新增 order_record schema (OrderRecordOut + OrderListResponse)
- 新增 CRUD: get_records_page 按 order_date DESC 分页查询
- 新增 /api/v1/user/records 路由, 需 Bearer token 鉴权, 支持 page/size 参数
- Alembic 迁移: add order_record table
- platform 支持: meituan_waimai / taobao_shanguang / jd_waimai / meituan / taobao / jd
- dishes 字段 DB 存 JSON 字符串, 接口返回 list[str]

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 21:11:05 +08:00

27 lines
659 B
Python

from __future__ import annotations
from sqlalchemy import func, select
from sqlalchemy.orm import Session
from app.models.order_record import OrderRecord
def get_records_page(
db: Session,
*,
user_id: int,
page: int = 1,
size: int = 20,
) -> tuple[list[OrderRecord], bool]:
offset = (page - 1) * size
stmt = (
select(OrderRecord)
.where(OrderRecord.user_id == user_id)
.order_by(OrderRecord.order_date.desc(), OrderRecord.id.desc())
.offset(offset)
.limit(size + 1)
)
rows = list(db.execute(stmt).scalars().all())
has_next = len(rows) > size
return rows[:size], has_next