Files
vue-fastapi-admin/app/schemas/msg.py
T
2026-06-25 17:41:06 +08:00

100 lines
5.0 KiB
Python

from typing import Optional
from datetime import datetime
from pydantic import BaseModel, Field
from app.models.enums import MsgType, ActionType
class BaseMsg(BaseModel):
hash_id: Optional[str] = Field(description="消息哈希ID")
title: Optional[str] = Field(description="消息标题")
content: Optional[str] = Field(description="消息内容")
detail: Optional[str] = Field(default={}, description="消息详情")
is_read: Optional[bool] = Field(default=False, description="是否已读")
read_at: Optional[datetime] = Field(default=None, description="已读时间")
is_delete: Optional[bool] = Field(default=False, description="是否已删除")
delete_at: Optional[datetime] = Field(default=None, description="删除时间")
is_send: Optional[bool] = Field(default=False, description="是否已发送")
send_at: Optional[datetime] = Field(default=None, description="发送时间")
type: Optional[MsgType] = Field(default=MsgType.SYSTEM, description="消息类型")
owner_id: Optional[str] = Field(description="消息所有者ID")
owner_name: Optional[str] = Field(description="消息所有者名称")
class MsgCreate(BaseMsg):
hash_id: str = Field(description="消息哈希ID")
title: str = Field(description="消息标题")
content: str = Field(description="消息内容")
type: MsgType = Field(default=MsgType.SYSTEM, description="消息类型")
owner_id: str = Field(description="消息所有者ID")
owner_name: str = Field(description="消息所有者名称")
class MsgUpdate(BaseModel):
id: int
is_read: Optional[bool] = Field(default=None, description="是否已读")
is_delete: Optional[bool] = Field(default=None, description="是否已删除")
is_send: Optional[bool] = Field(default=None, description="是否已发送")
class MsgNewOrder(BaseModel):
type: Optional[MsgType] = Field(default=MsgType.NEW_ORDER, description="消息类型")
order_id: str = Field(description="订单ID")
order_status: str = Field(description="订单状态")
is_refund: Optional[bool] = Field(default=False, alias="order_type", description="是否退款: 0-普通订单,1-退款订单")
buyer_id: str = Field(description="买家ID")
buyer_nick: str = Field(description="买家名称")
def __str__(self):
return f'订单:{self.order_id} {self.order_status},买家:{self.buyer_nick or self.buyer_id} {"退款" if self.is_refund else ""}'
class MsgFilter(BaseModel):
type: Optional[MsgType] = Field(default=None, description="消息类型")
is_read: Optional[bool] = Field(default=None, description="是否已读")
is_refund: Optional[bool] = Field(default=None, description="是否退款订单")
class BaseAction(BaseModel):
type: Optional[ActionType] = Field(default=None, description="操作类型")
detail: Optional[dict] = Field(default={}, description="操作详情")
user_id: Optional[str] = Field(default=None, description="操作用户ID")
user_name: Optional[str] = Field(default=None, description="操作用户名称")
class ActionCreate(BaseAction):
done: Optional[bool] = Field(default=False, description="是否完成")
type: ActionType = Field(description="操作类型")
detail: dict = Field(description="操作详情")
userid: str = Field(description="操作用户ID")
username: str = Field(description="操作用户名称")
class ActionUpdate(BaseAction):
id: int = Field(description="操作ID")
class FollowFormErp(BaseModel):
order_id: str = Field(description="订单ID", alias="trade_no")
order_title: str = Field(description="订单标题", alias="title")
pay_time: str = Field(description="支付时间", alias="pay_time")
pay_price: str = Field(description="支付金额", alias="price")
remark: str = Field(description="erp额外备注", alias="remark")
shop_name: str = Field(description="店铺名称", alias="shop_name")
"""
customer_id = fields.CharField(max_length=64, null=True, description="客户ID", index=True)
customer_name = fields.CharField(max_length=64, null=True, description="客户名称", index=True)
customer_taobao_id = fields.CharField(max_length=64, null=True, description="客户淘宝ID", index=True)
staff_id = fields.CharField(max_length=64, null=True, description="企微员工ID", index=True)
staff_name = fields.CharField(max_length=64, null=True, description="企微员工名称", index=True)
staff_time = fields.DatetimeField(null=True, description="添加时间", index=True)
designer_id = fields.CharField(max_length=64, null=True, description="设计师ID", index=True)
designer_name = fields.CharField(max_length=64, null=True, description="设计师名称", index=True)
kefu_id = fields.CharField(max_length=64, null=True, description="淘宝客服ID", index=True)
kefu_name = fields.CharField(max_length=64, null=True, description="淘宝客服名称", index=True)
"""
class FeishuEvent(BaseModel):
challenge: str = Field(description="验证challenge")