34 lines
1.1 KiB
Python
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())
|