Browse Source

feat&perf: 字典管理模块vo层优化,新增字段校验

master
insistence 7 months ago
parent
commit
fad9f484e8
  1. 111
      ruoyi-fastapi-backend/module_admin/entity/vo/dict_vo.py

111
ruoyi-fastapi-backend/module_admin/entity/vo/dict_vo.py

@ -1,8 +1,9 @@
from pydantic import BaseModel, ConfigDict from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel from pydantic.alias_generators import to_camel
from typing import Union, Optional, List from typing import Union, Optional, List, Literal
from datetime import datetime from datetime import datetime
from module_admin.annotation.pydantic_annotation import as_query, as_form from module_admin.annotation.pydantic_annotation import as_query, as_form
from module_admin.annotation.validate_annotation import NotBlank, Pattern, Size
class DictTypeModel(BaseModel): class DictTypeModel(BaseModel):
@ -11,15 +12,30 @@ class DictTypeModel(BaseModel):
""" """
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
dict_id: Optional[int] = None dict_id: Optional[int] = Field(default=None, description='字典主键')
dict_name: Optional[str] = None dict_name: Optional[str] = Field(default=None, description='字典名称')
dict_type: Optional[str] = None dict_type: Optional[str] = Field(default=None, description='字典类型')
status: Optional[str] = None status: Optional[Literal['0', '1']] = Field(default=None, description='状态(0正常 1停用)')
create_by: Optional[str] = None create_by: Optional[str] = Field(default=None, description='创建者')
create_time: Optional[datetime] = None create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = None update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = None update_time: Optional[datetime] = Field(default=None, description='更新时间')
remark: Optional[str] = None remark: Optional[str] = Field(default=None, description='备注')
@NotBlank(field_name='dict_name', message='字典名称不能为空')
@Size(field_name='dict_name', min_length=0, max_length=100, message='字典类型名称长度不能超过100个字符')
def get_dict_name(self):
return self.dict_name
@NotBlank(field_name='dict_type', message='字典类型不能为空')
@Size(field_name='dict_type', min_length=0, max_length=100, message='字典类型类型长度不能超过100个字符')
@Pattern(field_name='dict_type', regexp='^[a-z][a-z0-9_]*$', message='字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)')
def get_dict_type(self):
return self.dict_type
def validate_fields(self):
self.get_dict_name()
self.get_dict_type()
class DictDataModel(BaseModel): class DictDataModel(BaseModel):
@ -28,28 +44,53 @@ class DictDataModel(BaseModel):
""" """
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
dict_code: Optional[int] = None dict_code: Optional[int] = Field(default=None, description='字典编码')
dict_sort: Optional[int] = None dict_sort: Optional[int] = Field(default=None, description='字典排序')
dict_label: Optional[str] = None dict_label: Optional[str] = Field(default=None, description='字典标签')
dict_value: Optional[str] = None dict_value: Optional[str] = Field(default=None, description='字典键值')
dict_type: Optional[str] = None dict_type: Optional[str] = Field(default=None, description='字典类型')
css_class: Optional[str] = None css_class: Optional[str] = Field(default=None, description='样式属性(其他样式扩展)')
list_class: Optional[str] = None list_class: Optional[str] = Field(default=None, description='表格回显样式')
is_default: Optional[str] = None is_default: Optional[Literal['Y', 'N']] = Field(default=None, description='是否默认(Y是 N否)')
status: Optional[str] = None status: Optional[Literal['0', '1']] = Field(default=None, description='状态(0正常 1停用)')
create_by: Optional[str] = None create_by: Optional[str] = Field(default=None, description='创建者')
create_time: Optional[datetime] = None create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = None update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = None update_time: Optional[datetime] = Field(default=None, description='更新时间')
remark: Optional[str] = None remark: Optional[str] = Field(default=None, description='备注')
@NotBlank(field_name='dict_label', message='字典标签不能为空')
@Size(field_name='dict_label', min_length=0, max_length=100, message='字典标签长度不能超过100个字符')
def get_dict_label(self):
return self.dict_label
@NotBlank(field_name='dict_value', message='字典键值不能为空')
@Size(field_name='dict_value', min_length=0, max_length=100, message='字典键值长度不能超过100个字符')
def get_dict_value(self):
return self.dict_value
@NotBlank(field_name='dict_type', message='字典类型不能为空')
@Size(field_name='dict_type', min_length=0, max_length=100, message='字典类型长度不能超过100个字符')
def get_dict_type(self):
return self.dict_type
@Size(field_name='css_class', min_length=0, max_length=100, message='样式属性长度不能超过100个字符')
def get_css_class(self):
return self.css_class
def validate_fields(self):
self.get_dict_label()
self.get_dict_value()
self.get_dict_type()
self.get_css_class()
class DictTypeQueryModel(DictTypeModel): class DictTypeQueryModel(DictTypeModel):
""" """
字典类型管理不分页查询模型 字典类型管理不分页查询模型
""" """
begin_time: Optional[str] = None begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = None end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
@ -58,8 +99,8 @@ class DictTypePageQueryModel(DictTypeQueryModel):
""" """
字典类型管理分页查询模型 字典类型管理分页查询模型
""" """
page_num: int = 1 page_num: int = Field(default=1, description='当前页码')
page_size: int = 10 page_size: int = Field(default=10, description='每页记录数')
class DeleteDictTypeModel(BaseModel): class DeleteDictTypeModel(BaseModel):
@ -68,15 +109,15 @@ class DeleteDictTypeModel(BaseModel):
""" """
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
dict_ids: str dict_ids: str = Field(description='需要删除的字典主键')
class DictDataQueryModel(DictDataModel): class DictDataQueryModel(DictDataModel):
""" """
字典数据管理不分页查询模型 字典数据管理不分页查询模型
""" """
begin_time: Optional[str] = None begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = None end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
@ -85,8 +126,8 @@ class DictDataPageQueryModel(DictDataQueryModel):
""" """
字典数据管理分页查询模型 字典数据管理分页查询模型
""" """
page_num: int = 1 page_num: int = Field(default=1, description='当前页码')
page_size: int = 10 page_size: int = Field(default=10, description='每页记录数')
class DeleteDictDataModel(BaseModel): class DeleteDictDataModel(BaseModel):
@ -95,4 +136,4 @@ class DeleteDictDataModel(BaseModel):
""" """
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
dict_codes: str dict_codes: str = Field(description='需要删除的字典编码')

Loading…
Cancel
Save