Files

34 lines
1.1 KiB
Python

"""sys_message 站内信仓储(投顾触达客户,发送报告时写入)。"""
from __future__ import annotations
from sqlalchemy import select
from model.sys_message import SysMessage
from repositories.base import BaseRepository
class SysMessageRepo(BaseRepository):
model = SysMessage
async def get_by_biz_id(self, biz_id: str, *, user_id: int) -> SysMessage | None:
"""按收件人和业务号查询已写入的站内信,供发送重试幂等使用。"""
return await self.db.scalar(
select(SysMessage).where(
SysMessage.biz_id == biz_id,
SysMessage.user_id == user_id,
)
)
async def list_by_user(
self, user_id: int, limit: int = 100, offset: int = 0
) -> list[SysMessage]:
"""某用户(客户)的站内信,倒序分页。"""
stmt = (
select(SysMessage)
.where(SysMessage.user_id == user_id)
.order_by(SysMessage.id.desc())
.limit(limit)
.offset(offset)
)
return list((await self.db.scalars(stmt)).all())