33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
# -*- coding = utf-8 -*-
|
|
# @Time : 2025/2/17 上午1:00
|
|
# @File : services.py
|
|
# @Software : PyCharm
|
|
# @Author : xingc
|
|
# @Desc :
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from core.db.crud import CRUD
|
|
from core.db.models import SearchCardCache, User, UserCollection
|
|
from core.routers.auth.schema import LoginUser
|
|
|
|
from config import settings
|
|
|
|
|
|
async def get_cache_card_by_number(db_session: AsyncSession, *, cert_number: str) -> SearchCardCache | None:
|
|
query = select(SearchCardCache).where(SearchCardCache.cert_number == cert_number)
|
|
result = await db_session.execute(query)
|
|
card: SearchCardCache | None = result.scalar_one_or_none()
|
|
|
|
return card
|
|
|
|
|
|
async def check_user_card_created_permission(db_session: AsyncSession, *, login_user: LoginUser) -> bool:
|
|
db_crud = CRUD(db_session, User)
|
|
user = await db_crud.get(filters={'user_id': login_user.user_id})
|
|
if user.is_vip():
|
|
return True
|
|
|
|
total = await db_crud.total(model=UserCollection, filters={'user_id': login_user.user_id})
|
|
return settings.USER_MAX_CREATED_CARD_NUM > total
|