Files
Mutual_Fund/repositories/fin_transaction.py
T

39 lines
1.3 KiB
Python

"""fin_transaction 成交流水仓储:按客户查历史流水(规则引擎聚合规则用)。"""
from __future__ import annotations
from datetime import datetime
from sqlalchemy import func, select
from model.fin_transaction import FinTransaction
from repositories.base import BaseRepository
class FinTransactionRepo(BaseRepository):
model = FinTransaction
async def list_since(
self, customer_id: int, since: datetime
) -> list[FinTransaction]:
"""查该客户 since 之后的所有成交流水,按成交时间升序。
供规则引擎聚合规则(R005~R013 等)在内存中做窗口统计。
"""
stmt = (
select(FinTransaction)
.where(
FinTransaction.customer_id == customer_id,
FinTransaction.create_time >= since,
)
.order_by(FinTransaction.create_time, FinTransaction.id)
)
return list((await self.db.scalars(stmt)).all())
async def get_last_transaction_time(self, customer_id: int) -> datetime | None:
"""该客户最近一笔成交时间(R016 休眠账户激活判定用)。"""
return await self.db.scalar(
select(func.max(FinTransaction.create_time)).where(
FinTransaction.customer_id == customer_id
)
)