|
|
@@ -75,6 +75,56 @@ namespace OASystem.Infrastructure.Tools
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 为Sugar ORM构建增强搜索条件
|
|
|
+ /// </summary>
|
|
|
+ public static (string Condition, List<SugarParameter> Parameters) BuildSugarSearchCondition(
|
|
|
+ string searchTerm,
|
|
|
+ List<string> searchFields,
|
|
|
+ string prefix = "",
|
|
|
+ SearchMode searchMode = SearchMode.AutoDetect,
|
|
|
+ CombinationMode combinationMode = CombinationMode.SmartMix,
|
|
|
+ SearchConfig config = null)
|
|
|
+ {
|
|
|
+ // 先使用原有方法构建条件
|
|
|
+ var (condition, parameters) = BuildEnhancedSearchCondition(
|
|
|
+ searchTerm, searchFields, prefix, searchMode, combinationMode, config);
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(condition))
|
|
|
+ return (string.Empty, parameters);
|
|
|
+
|
|
|
+ // 转换参数名为Sugar ORM兼容格式
|
|
|
+ var sugarParameters = new List<SugarParameter>();
|
|
|
+ var paramMapping = new Dictionary<string, string>();
|
|
|
+ int paramIndex = 0;
|
|
|
+
|
|
|
+ foreach (var param in parameters)
|
|
|
+ {
|
|
|
+ var oldName = param.ParameterName;
|
|
|
+ var newName = $"@{prefix}p{paramIndex++}";
|
|
|
+
|
|
|
+ paramMapping[oldName] = newName;
|
|
|
+ sugarParameters.Add(new SugarParameter(newName, param.Value));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 替换参数名
|
|
|
+ foreach (var mapping in paramMapping)
|
|
|
+ {
|
|
|
+ condition = condition.Replace(mapping.Key, mapping.Value);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换LIKE表达式为Sugar ORM格式
|
|
|
+ condition = Regex.Replace(condition, @"LIKE @\w+", match =>
|
|
|
+ {
|
|
|
+ var paramName = match.Value.Substring(5); // 移除"LIKE "
|
|
|
+ return $"LIKE '%' + {paramName} + '%'";
|
|
|
+ });
|
|
|
+
|
|
|
+ return (condition, sugarParameters);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 构建带相关性信息的搜索条件
|
|
|
/// </summary>
|