public IActionResult Update(Guid id) { var metaObject = _metaFieldService.GetById(id); return(View(ResponseModel.Success(data: metaObject))); }
//组织接口搜索条件 public Result <SearchConditionNode> AggregateCondition(int interfaceConditionId, int brotherNodeId, int conditionJointTypeId, int fieldId, int conditionTypeId, string conditionValue, int conditionValueTypeId) { //如果不是参数传递值,则根据传入的字段校验数据 if (conditionValueTypeId != (int)ConditionValueType.Parameter) { if (!metaFieldService.CheckAndGetFieldValueByFieldType(fieldId, conditionValue).IsSuccess) { return(Result <SearchConditionNode> .Error("字段值和字段定义的类型不匹配")); } } return(TransactionHelper.Transaction(() => { int parentId = brotherNodeId; //如果兄弟节点!=-1,说明当前树有值。反之,则构建新树 if (parentId != -1) { //判断是否有树存在 List <SearchConditionNode> conditionListExist = GetListBySearchConditionId(interfaceConditionId); //查看当前兄弟节点的父节点id SearchConditionNode brotherCondition = conditionListExist.FirstOrDefault(t => t.Id == brotherNodeId); parentId = brotherCondition.ParentId; //拿到父节点的信息 SearchConditionNode parentCondition = conditionListExist.FirstOrDefault(t => t.Id == brotherCondition.ParentId); //如果父节点的连接条件和当前新建的条件一致,则不需要新建条件节点,直接附加在已有的条件下面 if (parentCondition == null || parentCondition.ConditionType != conditionJointTypeId) { //先添加一个父节点,然后把兄弟节点的父节点指向新建的父节点 string tempKey = DateTime.Now.ToString("yyyyMMddhhmmss"); SearchConditionNode newParentCondition = new SearchConditionNode { SearchConditionId = interfaceConditionId, ParentId = conditionListExist.Count > 0 ? parentId : -1, //如果有树,则插入节点的父节点为刚才的兄弟节点的父节点,否则,插入-1作为根节点 FieldId = -1, //连接节点没有field FieldCode = "-1", FieldName = tempKey, FieldType = -1, ConditionType = conditionJointTypeId, Name = ConditionJointTranslator.ToLabelWithExplain(conditionJointTypeId), Value = "-1", ValueType = -1 }; base.Add(newParentCondition); //查询刚才插入的节点 newParentCondition = dbContext.Queryable <SearchConditionNode>().Where(t => t.FieldName.Contains(tempKey)).ToOne(); //将兄弟节点的父节点指向新插入的节点 brotherCondition.ParentId = newParentCondition.Id; base.Update(brotherCondition); //重新赋值parentId parentId = newParentCondition.Id; } } //检验是否没有条件节点 if (parentId == -1) { if (dbContext.Queryable <SearchConditionNode>().Where(t => t.Id == parentId).Any()) { return Result <SearchConditionNode> .Error("已经存在条件节点,请查证后操作!"); } } //新增节点 MetaField metaField = metaFieldService.GetById(fieldId); SearchConditionNode newCondition = new SearchConditionNode { SearchConditionId = interfaceConditionId, ParentId = parentId, FieldId = fieldId, FieldName = metaField.Name, FieldCode = metaField.Code, FieldType = metaField.FieldType, ConditionType = conditionTypeId, Name = $"{metaField.Name} {ConditionTypeTranslator.ToLabel(conditionTypeId)} {conditionValue}", Value = conditionValue, ValueType = conditionValueTypeId, Text = metaField.Name, Visible = (int)TrueFalse.True }; base.Add(newCondition); return Result <SearchConditionNode> .Success("保存成功!"); })); }