From e6045f439e0755f15148904ba0f82dd6a03f81a8 Mon Sep 17 00:00:00 2001 From: zhangshaohu Date: Tue, 27 Aug 2024 21:44:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E5=87=BD=E6=95=B0=E8=8A=82=E7=82=B9=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B=E6=9C=AA=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/base_function_lib_node.py | 27 ++++++++++++++++--- .../function_node/impl/base_function_node.py | 27 ++++++++++++++++--- 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/apps/application/flow/step_node/function_lib_node/impl/base_function_lib_node.py b/apps/application/flow/step_node/function_lib_node/impl/base_function_lib_node.py index 2d7b32883..d5799ae07 100644 --- a/apps/application/flow/step_node/function_lib_node/impl/base_function_lib_node.py +++ b/apps/application/flow/step_node/function_lib_node/impl/base_function_lib_node.py @@ -42,6 +42,20 @@ def get_field_value(debug_field_list, name, is_required): return None +def valid_reference_value(_type, value, name): + if _type == 'int': + return isinstance(value, int) + if _type == 'float': + return isinstance(value, float) + if _type == 'dict': + return isinstance(value, dict) + if _type == 'array': + return isinstance(value, list) + if _type == 'string': + return isinstance(value, str) + raise Exception(500, f'字段:{name}类型:{_type}值:{value}类型错误') + + def convert_value(name: str, value, _type, is_required, source, node): if not is_required and value is None: return None @@ -49,6 +63,7 @@ def convert_value(name: str, value, _type, is_required, source, node): value = node.workflow_manage.get_reference_field( value[0], value[1:]) + valid_reference_value(_type, value, name) return value try: if _type == 'int': @@ -56,12 +71,18 @@ def convert_value(name: str, value, _type, is_required, source, node): if _type == 'float': return float(value) if _type == 'dict': - return json.loads(value) + v = json.loads(value) + if isinstance(v, dict): + return v + raise Exception("类型错误") if _type == 'array': - return json.loads(value) + v = json.loads(value) + if isinstance(v, list): + return v + raise Exception("类型错误") return value except Exception as e: - raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误') + raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误') class BaseFunctionLibNodeNode(IFunctionLibNode): diff --git a/apps/application/flow/step_node/function_node/impl/base_function_node.py b/apps/application/flow/step_node/function_node/impl/base_function_node.py index a863d601b..38aec0689 100644 --- a/apps/application/flow/step_node/function_node/impl/base_function_node.py +++ b/apps/application/flow/step_node/function_node/impl/base_function_node.py @@ -31,6 +31,20 @@ def write_context(step_variable: Dict, global_variable: Dict, node, workflow): node.context['run_time'] = time.time() - node.context['start_time'] +def valid_reference_value(_type, value, name): + if _type == 'int': + return isinstance(value, int) + if _type == 'float': + return isinstance(value, float) + if _type == 'dict': + return isinstance(value, dict) + if _type == 'array': + return isinstance(value, list) + if _type == 'string': + return isinstance(value, str) + raise Exception(500, f'字段:{name}类型:{_type}值:{value}类型错误') + + def convert_value(name: str, value, _type, is_required, source, node): if not is_required and value is None: return None @@ -38,6 +52,7 @@ def convert_value(name: str, value, _type, is_required, source, node): value = node.workflow_manage.get_reference_field( value[0], value[1:]) + valid_reference_value(_type, value, name) return value try: if _type == 'int': @@ -45,12 +60,18 @@ def convert_value(name: str, value, _type, is_required, source, node): if _type == 'float': return float(value) if _type == 'dict': - return json.loads(value) + v = json.loads(value) + if isinstance(v, dict): + return v + raise Exception("类型错误") if _type == 'array': - return json.loads(value) + v = json.loads(value) + if isinstance(v, list): + return v + raise Exception("类型错误") return value except Exception as e: - raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误') + raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误') class BaseFunctionNodeNode(IFunctionNode):