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