You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

330 lines
9.0 KiB
Python

from marshmallow_dataclass import dataclass
from dataclasses import field
from iti.applications.common.enums import StatusEnum
from iti.applications.common.utils.schema import BaseSchema, Pagination
from datetime import datetime
from typing import ClassVar
from apiflask import fields
@dataclass(base_schema=BaseSchema)
class SysDictTypeQuery(Pagination):
"""
字典类型查询
"""
keyword: str = field(
metadata={
"required": False,
"metadata": {
"example": "示例名称",
"description": "关键字(支持名称、编码 like查询)",
},
},
default=None,
)
type_name: str = field(
metadata={
"required": False,
"metadata": {"example": "示例名称", "description": "字典类型名称"},
},
default=None,
)
type_code: str = field(
metadata={
"required": False,
"metadata": {"example": "USER", "description": "字典类型编码"},
},
default=None,
)
status: StatusEnum = field(
metadata={
"required": False,
"by_value": True,
"metadata": {"example": "enabled", "description": "状态"},
},
default=None,
)
createdAt: list[datetime] = field(
metadata={
"required": False,
"data_key": "createdAt[]",
"metadata": {
"example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"],
"description": "创建时间",
},
},
default=None,
)
updatedAt: list[datetime] = field(
metadata={
"required": False,
"data_key": "updatedAt[]",
"metadata": {
"example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"],
"description": "更新时间",
},
},
default=None,
)
withDataList: bool = field(
metadata={
"required": False,
"metadata": {
"example": False,
"description": "是否包含数据列表(默认不包含)",
},
},
default=False,
)
Schema: ClassVar[BaseSchema] = BaseSchema # For the type check
class SysDictTypeCreateRequest(BaseSchema):
"""
创建字典类型请求
"""
type_name = fields.String(
required=True,
metadata={"example": "示例名称", "description": "字典类型名称"},
)
type_code = fields.String(
required=True,
metadata={"example": "USER", "description": "字典类型编码"},
)
desc = fields.String(
required=False,
metadata={"example": "示例描述", "description": "字典类型描述"},
load_default=None,
)
sort = fields.Integer(
required=False,
metadata={"example": 0, "description": "字典类型排序"},
load_default=0,
)
status = fields.Enum(
StatusEnum,
by_value=True,
required=False,
metadata={"example": "enabled", "description": "状态"},
load_default=StatusEnum.ENABLED,
)
class SysDictTypeUpdateRequest(BaseSchema):
"""
更新字典类型请求
"""
type_name = fields.String(
required=False,
metadata={"example": "示例名称", "description": "字典类型名称"},
load_default=None,
)
type_code = fields.String(
required=False,
metadata={"example": "USER", "description": "字典类型编码"},
load_default=None,
)
desc = fields.String(
required=False,
metadata={"example": "示例描述", "description": "字典类型描述"},
load_default=None,
)
sort = fields.Integer(
required=False,
metadata={"example": 0, "description": "字典类型排序"},
load_default=None,
)
status = fields.Enum(
StatusEnum,
by_value=True,
required=False,
metadata={"example": "enabled", "description": "状态"},
load_default=None,
)
############################ 字典数据 ############################
@dataclass(base_schema=BaseSchema)
class SysDictDataQuery(Pagination):
"""
字典数据查询
"""
type_code: str = field(
metadata={
"required": True,
"metadata": {"example": "USER", "description": "字典类型编码"},
},
default=None,
)
keyword: str = field(
metadata={
"required": False,
"metadata": {
"example": "示例名称",
"description": "关键字(支持标签、编码 like查询)",
},
},
default=None,
)
code: str = field(
metadata={
"required": False,
"metadata": {"example": "1", "description": "字典数据编码"},
},
default=None,
)
label: str = field(
metadata={
"required": False,
"metadata": {"example": "管理员", "description": "字典数据标签"},
},
default=None,
)
status: StatusEnum = field(
metadata={
"required": False,
"by_value": True,
"metadata": {"example": "enabled", "description": "状态"},
},
default=None,
)
createdAt: list[datetime] = field(
metadata={
"required": False,
"data_key": "createdAt[]",
"metadata": {
"example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"],
"description": "创建时间",
},
},
default=None,
)
updatedAt: list[datetime] = field(
metadata={
"required": False,
"data_key": "updatedAt[]",
"metadata": {
"example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"],
"description": "更新时间",
},
},
default=None,
)
class SysDictDataCreateRequest(BaseSchema):
"""
创建字典数据请求
"""
type_code = fields.String(
required=True,
metadata={"example": "USER", "description": "字典类型编码"},
)
code = fields.String(
required=True,
metadata={"example": "1", "description": "字典数据编码"},
)
label = fields.String(
required=True,
metadata={"example": "管理员", "description": "字典数据标签"},
)
value = fields.String(
required=False,
metadata={"example": "管理员", "description": "字典数据值"},
load_default=None,
)
desc = fields.String(
required=False,
metadata={"example": "示例描述", "description": "字典数据描述"},
load_default=None,
)
sort = fields.Integer(
required=False,
metadata={"example": 0, "description": "字典数据排序"},
load_default=0,
)
status = fields.Enum(
StatusEnum,
by_value=True,
required=False,
metadata={"example": "enabled", "description": "状态"},
load_default=StatusEnum.ENABLED,
)
class SysDictDataUpdateRequest(BaseSchema):
"""
更新字典数据请求
"""
type_code = fields.String(
required=False,
metadata={"example": "USER", "description": "字典类型编码"},
load_default=None,
)
code = fields.String(
required=False,
metadata={"example": "1", "description": "字典数据编码"},
load_default=None,
)
label = fields.String(
required=False,
metadata={"example": "管理员", "description": "字典数据标签"},
load_default=None,
)
value = fields.String(
required=False,
metadata={"example": "管理员", "description": "字典数据值"},
load_default=None,
)
desc = fields.String(
required=False,
metadata={"example": "示例描述", "description": "字典数据描述"},
load_default=None,
)
sort = fields.Integer(
required=False,
metadata={"example": 0, "description": "字典数据排序"},
load_default=None,
)
status = fields.Enum(
StatusEnum,
by_value=True,
required=False,
metadata={"example": "enabled", "description": "状态"},
load_default=None,
)
@dataclass(base_schema=BaseSchema)
class SysDictDataBatchDeleteRequest(Pagination):
"""
批量删除字典数据请求
"""
ids: list[str] = field(
metadata={
"required": False,
"data_key": "ids[]",
"metadata": {
"example": ["1234567890", "1234567891"],
"description": "字典数据ID列表",
},
},
default=None,
)
type_code: str = field(
metadata={
"required": False,
"metadata": {"example": "USER", "description": "字典类型编码"},
},
default=None,
)
Schema: ClassVar[BaseSchema] = BaseSchema # For the type check