This commit is contained in:
macbook_max
2026-10-15 20:36:59 +08:00
commit 6bf949949c
7923 changed files with 1369582 additions and 0 deletions
+64
View File
@@ -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())