up
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
"""通用域:notifications / reports / sensitive_words / system_configs"""
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import DateTime, Index, SmallInteger, String, func
|
||||
from sqlalchemy.dialects.mysql import BIGINT, INTEGER
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class Notification(Base):
|
||||
__tablename__ = "notifications"
|
||||
|
||||
id: Mapped[int] = mapped_column(BIGINT(unsigned=True), primary_key=True, autoincrement=True)
|
||||
user_id: Mapped[int] = mapped_column(BIGINT(unsigned=True), comment="接收人")
|
||||
type: Mapped[int] = mapped_column(SmallInteger, comment="1审核结果 2提现进度 3系统公告 4评论回复")
|
||||
title: Mapped[str] = mapped_column(String(100), default="")
|
||||
content: Mapped[str] = mapped_column(String(500), default="")
|
||||
biz_id: Mapped[str] = mapped_column(String(64), default="")
|
||||
is_read: Mapped[int] = mapped_column(SmallInteger, default=0)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
|
||||
|
||||
__table_args__ = (Index("idx_user_read", "user_id", "is_read", "id"),)
|
||||
|
||||
|
||||
class Report(Base):
|
||||
__tablename__ = "reports"
|
||||
|
||||
id: Mapped[int] = mapped_column(BIGINT(unsigned=True), primary_key=True, autoincrement=True)
|
||||
user_id: Mapped[int] = mapped_column(BIGINT(unsigned=True), comment="举报人")
|
||||
target_type: Mapped[int] = mapped_column(SmallInteger, comment="1视频 2评论")
|
||||
target_id: Mapped[int] = mapped_column(BIGINT(unsigned=True))
|
||||
reason_type: Mapped[int] = mapped_column(SmallInteger, comment="1色情低俗 2暴力血腥 3侵权 4广告营销 5其他")
|
||||
remark: Mapped[str] = mapped_column(String(200), default="")
|
||||
status: Mapped[int] = mapped_column(SmallInteger, default=0, comment="0待处理 1已处理 2已驳回")
|
||||
handle_result: Mapped[str] = mapped_column(String(50), default="")
|
||||
admin_id: Mapped[int | None] = mapped_column(BIGINT(unsigned=True))
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
|
||||
handled_at: Mapped[datetime | None] = mapped_column(DateTime)
|
||||
|
||||
__table_args__ = (
|
||||
Index("uk_user_target", "user_id", "target_type", "target_id", unique=True),
|
||||
Index("idx_status", "status", "created_at"),
|
||||
)
|
||||
|
||||
|
||||
class SensitiveWord(Base):
|
||||
__tablename__ = "sensitive_words"
|
||||
|
||||
id: Mapped[int] = mapped_column(INTEGER(unsigned=True), primary_key=True, autoincrement=True)
|
||||
word: Mapped[str] = mapped_column(String(50), unique=True)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
|
||||
|
||||
|
||||
class SystemConfig(Base):
|
||||
"""平台配置键值对(后台可改,Redis 缓存 60s)"""
|
||||
|
||||
__tablename__ = "system_configs"
|
||||
|
||||
config_key: Mapped[str] = mapped_column(String(50), primary_key=True)
|
||||
config_value: Mapped[str] = mapped_column(String(500), default="")
|
||||
description: Mapped[str] = mapped_column(String(200), default="")
|
||||
updated_by: Mapped[int | None] = mapped_column(BIGINT(unsigned=True))
|
||||
updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
Reference in New Issue
Block a user