fix(card): 非会员限制存卡数 非会员限制存卡数量,默认18张
This commit is contained in:
36
.env.example
36
.env.example
@@ -1,30 +1,32 @@
|
|||||||
# 应用配置
|
# 应用配置
|
||||||
ALLOWED_ORIGINS = http://127.0.0.1:3000,http://localhost:3000
|
ALLOWED_ORIGINS=http://127.0.0.1:8001,http://localhost:8001
|
||||||
|
|
||||||
# 身份认证
|
# 身份认证
|
||||||
ACCESS_SECRET_KEY = a2f718e8313bf8efcb45ef7364d040c45800f34d10f65776eef0f6584677ecd0
|
ACCESS_SECRET_KEY=a2f718e8313bf8efcb45ef7364d040c45800f34d10f65776eef0f6584677ecd0
|
||||||
|
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
DB_USER = card_book
|
DB_USER=card_book
|
||||||
DB_PASSWORD = DFCPjk4rdkca6SPE
|
DB_PASSWORD=DFCPjk4rdkca6SPE
|
||||||
DB_HOST = 192.168.3.4
|
DB_HOST=192.168.3.4
|
||||||
DB_NAME = card_book
|
DB_NAME=card_book
|
||||||
|
|
||||||
# redis配置
|
# redis配置
|
||||||
REDIS_PASSWORD = xingc
|
REDIS_PASSWORD=xingc
|
||||||
REDIS_HOST = 192.168.3.4
|
REDIS_HOST=192.168.3.4
|
||||||
REDIS_PORT = 6379
|
REDIS_PORT=6379
|
||||||
REDIS_DB = 0
|
REDIS_DB=0
|
||||||
|
|
||||||
# 文件上传配置
|
# 文件上传配置
|
||||||
ASSETS_BASE_URL = http://127.0.0.1:8001
|
ASSETS_BASE_URL =http://127.0.0.1:8001
|
||||||
|
|
||||||
# 代理
|
# 代理
|
||||||
OVERSEAS_PROXY = http://127.0.0.1:7890
|
OVERSEAS_PROXY=http://127.0.0.1:7890
|
||||||
|
|
||||||
# 微信
|
# 微信
|
||||||
APPID = wx3d30771f3987cc92
|
APPID=wx3d30771f3987cc92
|
||||||
APP_SECRET = 8e57b1b5344d1dbd058cd45f3b2c4d3c
|
APP_SECRET=8e57b1b5344d1dbd058cd45f3b2c4d3c
|
||||||
PAY_MCH_ID =
|
PAY_MCH_ID=
|
||||||
PAY_API_KEY =
|
PAY_API_KEY=
|
||||||
PAY_NOTIFY_URL =
|
PAY_NOTIFY_URL=
|
||||||
|
|
||||||
|
USER_MAX_CREATED_CARD_NUM=18
|
||||||
@@ -66,6 +66,9 @@ class Settings(BaseSettings):
|
|||||||
PAY_API_KEY: str = ''
|
PAY_API_KEY: str = ''
|
||||||
PAY_NOTIFY_URL: str = ''
|
PAY_NOTIFY_URL: str = ''
|
||||||
|
|
||||||
|
# 会员配置
|
||||||
|
USER_MAX_CREATED_CARD_NUM: int = 18
|
||||||
|
|
||||||
model_config = SettingsConfigDict(env_file=f'.env.{ENVIRONMENT}', env_file_encoding='utf-8')
|
model_config = SettingsConfigDict(env_file=f'.env.{ENVIRONMENT}', env_file_encoding='utf-8')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ from core.utils.helper import generate_keyname, check_picture_for_empty
|
|||||||
|
|
||||||
from . import schema
|
from . import schema
|
||||||
from .scraper import card_scraper
|
from .scraper import card_scraper
|
||||||
|
from .services import check_user_card_created_permission
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
card_router = APIRouter(prefix='/card', tags=['卡册模块'])
|
card_router = APIRouter(prefix='/card', tags=['卡册模块'])
|
||||||
@@ -190,6 +191,14 @@ async def created_card(
|
|||||||
db_session: AsyncSession = Depends(get_async_session)
|
db_session: AsyncSession = Depends(get_async_session)
|
||||||
):
|
):
|
||||||
card_crud = CRUD(db_session, Card)
|
card_crud = CRUD(db_session, Card)
|
||||||
|
# 确认用户存卡权限
|
||||||
|
if await check_user_card_created_permission(
|
||||||
|
db_session, login_user=login_user
|
||||||
|
) is False:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST, detail=f'非会员仅支持存入{settings.USER_MAX_CREATED_CARD_NUM}张卡片'
|
||||||
|
)
|
||||||
|
|
||||||
# 卡片库查询
|
# 卡片库查询
|
||||||
card: Card = await card_crud.get(filters={'cert_number': payload.cert_number})
|
card: Card = await card_crud.get(filters={'cert_number': payload.cert_number})
|
||||||
if payload.source.value != 'other':
|
if payload.source.value != 'other':
|
||||||
|
|||||||
@@ -7,7 +7,11 @@
|
|||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
|
||||||
from core.db.models import SearchCardCache
|
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:
|
async def get_cache_card_by_number(db_session: AsyncSession, *, cert_number: str) -> SearchCardCache | None:
|
||||||
@@ -16,3 +20,13 @@ async def get_cache_card_by_number(db_session: AsyncSession, *, cert_number: str
|
|||||||
card: SearchCardCache | None = result.scalar_one_or_none()
|
card: SearchCardCache | None = result.scalar_one_or_none()
|
||||||
|
|
||||||
return card
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user