调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
|
||||
from cli.exit_codes import RUNTIME_ERROR
|
||||
from cli.runtime.base import RUNTIME_OPERATOR, RuntimeOperatorService
|
||||
|
||||
from .gateway import ConfigInfrastructureGateway
|
||||
|
||||
|
||||
class ConfigDomainSupport:
|
||||
"""
|
||||
参数配置领域支持对象。
|
||||
|
||||
该对象负责操作者解析、配置脱敏、序列化、查询模型构建与缺失结果构建,
|
||||
避免主运行时服务继续承载大量领域规则。
|
||||
|
||||
:param infrastructure_gateway: 参数配置基础设施网关
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
infrastructure_gateway: ConfigInfrastructureGateway,
|
||||
operator_service: RuntimeOperatorService = RUNTIME_OPERATOR,
|
||||
) -> None:
|
||||
"""
|
||||
初始化参数配置领域支持对象。
|
||||
|
||||
:param infrastructure_gateway: 参数配置基础设施网关
|
||||
:param operator_service: 运行时操作者解析服务
|
||||
:return: None
|
||||
"""
|
||||
self.infrastructure_gateway = infrastructure_gateway
|
||||
self.operator_service = operator_service
|
||||
|
||||
def sanitize_config_mapping(self, config_mapping: dict[str, Any]) -> dict[str, Any]:
|
||||
"""
|
||||
对配置字典进行脱敏处理。
|
||||
|
||||
:param config_mapping: 原始配置字典
|
||||
:return: 脱敏后的配置字典
|
||||
"""
|
||||
return self.infrastructure_gateway.get_log_sanitizer().sanitize_data(config_mapping)
|
||||
|
||||
def serialize_config_model(self, config_model: Any | None) -> dict[str, Any] | None:
|
||||
"""
|
||||
将配置模型序列化为 CLI 输出字典。
|
||||
|
||||
:param config_model: 配置模型对象
|
||||
:return: 序列化后的配置字典
|
||||
"""
|
||||
if config_model is None or config_model.config_id is None:
|
||||
return None
|
||||
return self.sanitize_config_mapping(config_model.model_dump(by_alias=True, exclude_none=True))
|
||||
|
||||
def serialize_cache_payload(self, config_key: str, config_value: str | None) -> dict[str, Any] | None:
|
||||
"""
|
||||
将缓存中的配置值序列化为 CLI 输出字典。
|
||||
|
||||
:param config_key: 参数键名
|
||||
:param config_value: 参数键值
|
||||
:return: 序列化后的缓存配置字典
|
||||
"""
|
||||
if config_value is None:
|
||||
return None
|
||||
return self.sanitize_config_mapping({'configKey': config_key, 'configValue': config_value})
|
||||
|
||||
@staticmethod
|
||||
def build_missing_config_result(
|
||||
config_key: str,
|
||||
source: Literal['db', 'cache', 'both'],
|
||||
) -> dict[str, Any]:
|
||||
"""
|
||||
构建配置不存在的统一结果。
|
||||
|
||||
:param config_key: 参数键名
|
||||
:param source: 读取来源
|
||||
:return: 配置不存在的结果字典
|
||||
"""
|
||||
message = f'参数缓存不存在:{config_key}' if source == 'cache' else f'参数配置不存在:{config_key}'
|
||||
return {'ok': False, 'message': message, 'source': source, 'exit_code': RUNTIME_ERROR}
|
||||
|
||||
def build_config_query(
|
||||
self,
|
||||
config_name: str,
|
||||
config_key: str,
|
||||
config_type: Literal['Y', 'N'] | None,
|
||||
begin_date: str,
|
||||
end_date: str,
|
||||
page_num: int,
|
||||
page_size: int,
|
||||
) -> Any:
|
||||
"""
|
||||
构建配置列表查询对象。
|
||||
|
||||
:param config_name: 参数名称过滤条件
|
||||
:param config_key: 参数键名过滤条件
|
||||
:param config_type: 参数类型过滤条件
|
||||
:param begin_date: 开始日期
|
||||
:param end_date: 结束日期
|
||||
:param page_num: 页码
|
||||
:param page_size: 每页数量
|
||||
:return: 配置分页查询模型
|
||||
"""
|
||||
config_vo_module = self.infrastructure_gateway.get_config_vo_module()
|
||||
return config_vo_module.ConfigPageQueryModel(
|
||||
configName=config_name or None,
|
||||
configKey=config_key or None,
|
||||
configType=config_type,
|
||||
beginTime=begin_date or None,
|
||||
endTime=end_date or None,
|
||||
pageNum=page_num,
|
||||
pageSize=page_size,
|
||||
)
|
||||
|
||||
def build_target_config_model(
|
||||
self,
|
||||
config_key: str,
|
||||
config_value: str,
|
||||
config_name: str | None,
|
||||
config_type: Literal['Y', 'N'] | None,
|
||||
remark: str | None,
|
||||
existing_config: Any | None,
|
||||
) -> Any:
|
||||
"""
|
||||
基于当前状态构建目标配置模型。
|
||||
|
||||
:param config_key: 参数键名
|
||||
:param config_value: 参数键值
|
||||
:param config_name: 参数名称
|
||||
:param config_type: 参数类型
|
||||
:param remark: 参数备注
|
||||
:param existing_config: 已存在的配置模型
|
||||
:return: 目标配置模型
|
||||
"""
|
||||
operator = self.operator_service.resolve_operator()
|
||||
current_time = datetime.now()
|
||||
common_constant = self.infrastructure_gateway.get_common_constant()
|
||||
config_vo_module = self.infrastructure_gateway.get_config_vo_module()
|
||||
default_config_type = existing_config.config_type if existing_config else common_constant.NO
|
||||
target_config = config_vo_module.ConfigModel(
|
||||
configId=existing_config.config_id if existing_config else None,
|
||||
configName=config_name
|
||||
if config_name is not None
|
||||
else (existing_config.config_name if existing_config else None),
|
||||
configKey=config_key,
|
||||
configValue=config_value,
|
||||
configType=config_type if config_type is not None else default_config_type,
|
||||
createBy=existing_config.create_by if existing_config else operator,
|
||||
createTime=existing_config.create_time if existing_config else current_time,
|
||||
updateBy=operator,
|
||||
updateTime=current_time,
|
||||
remark=remark if remark is not None else (existing_config.remark if existing_config else None),
|
||||
)
|
||||
target_config.validate_fields()
|
||||
return target_config
|
||||
|
||||
def build_list_filters(
|
||||
self,
|
||||
*,
|
||||
config_name: str,
|
||||
config_key: str,
|
||||
config_type: Literal['Y', 'N'] | None,
|
||||
begin_date: str,
|
||||
end_date: str,
|
||||
paged: bool,
|
||||
page_num: int,
|
||||
page_size: int,
|
||||
) -> dict[str, Any]:
|
||||
"""
|
||||
构建配置列表过滤条件。
|
||||
|
||||
:param config_name: 参数名称
|
||||
:param config_key: 参数键名
|
||||
:param config_type: 参数类型
|
||||
:param begin_date: 开始日期
|
||||
:param end_date: 结束日期
|
||||
:param paged: 是否分页
|
||||
:param page_num: 页码
|
||||
:param page_size: 每页数量
|
||||
:return: 过滤条件字典
|
||||
"""
|
||||
return {
|
||||
'configName': config_name,
|
||||
'configKey': config_key,
|
||||
'configType': config_type,
|
||||
'beginDate': begin_date,
|
||||
'endDate': end_date,
|
||||
'paged': paged,
|
||||
'pageNum': page_num,
|
||||
'pageSize': page_size,
|
||||
}
|
||||
Reference in New Issue
Block a user