c1ce109f13
- 新增 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>
27 lines
659 B
Python
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
|