"""管理后台请求模型(对应《03-接口文档》第 11 章)""" from pydantic import BaseModel, Field class AdminLoginReq(BaseModel): """管理员登录(11.1)""" username: str = Field(min_length=1, max_length=50) password: str = Field(min_length=1, max_length=100) class VideoReviewReq(BaseModel): """审核视频(11.4)""" action: str = Field(pattern="^(approve|reject)$") reason: str | None = Field(None, max_length=200) class ReasonReq(BaseModel): """通用敏感操作原因(下架视频 / 删除评论等)""" reason: str = Field(min_length=1, max_length=200) class UserStatusReq(BaseModel): """封禁/解封用户(11.8)""" status: int = Field(ge=1, le=2) # 1正常 2封禁 reason: str = Field(min_length=1, max_length=200) class PointsAdjustReq(BaseModel): """积分调整(11.9)""" user_id: int = Field(ge=1) change_amount: int = Field(ge=-1000000, le=1000000) # 非 0 由服务端校验 reason: str = Field(min_length=1, max_length=200) class ResettleReq(BaseModel): """人工补单(11.12)""" reason: str = Field(min_length=1, max_length=200) third_trade_no: str | None = Field(None, max_length=64) class RefundReq(BaseModel): """退款登记(11.12-2【敏感】):reason 必填""" reason: str = Field(min_length=1, max_length=200) class PackageCreateReq(BaseModel): """新增充值套餐(11.14)""" amount_yuan: int = Field(ge=1, le=100000) bonus_points: int = Field(0, ge=0) sort: int = 0 points: int | None = Field(None, ge=0) # 不传则按汇率计算 class PackageUpdateReq(BaseModel): """修改充值套餐(11.15)""" amount_yuan: int | None = Field(None, ge=1, le=100000) bonus_points: int | None = Field(None, ge=0) sort: int | None = None status: int | None = Field(None, ge=0, le=1) class GiftReq(BaseModel): """赠送会员/积分(11.17)""" user_ids: list[int] = Field(min_length=1, max_length=100) gift_type: str = Field(pattern="^(membership|points)$") plan_code: str | None = Field(None, max_length=20) points: int | None = Field(None, gt=0, le=1000000) reason: str = Field(min_length=1, max_length=200) class WithdrawReviewReq(BaseModel): """提现审核(11.20)""" action: str = Field(pattern="^(approve|reject)$") reason: str | None = Field(None, max_length=200) class ReferralReviewReq(BaseModel): """推荐风控处理(11.22)""" action: str = Field(pattern="^(release|invalid)$") reason: str = Field(min_length=1, max_length=200) class ConfigUpdateReq(BaseModel): """修改平台配置(11.24)""" value: str = Field(max_length=500) class ReportReviewReq(BaseModel): """举报处理(11.29)""" action: str = Field(pattern="^(offline_video|delete_comment|reject)$") reason: str = Field(min_length=1, max_length=200) class SensitiveWordAddReq(BaseModel): """添加敏感词(11.31)""" word: str = Field(min_length=1, max_length=50)