using SqlSugar; using AntDesign; using AntDesign.TableModels; namespace Learn.VideoAnalysis.API.Expand { public static class SearchExpand { /// /// 转换 ant 查询枚举 到 sqlsuger枚举 /// /// ant 查询枚举 /// /// public static ConditionalType ConvertToConditionalType(TableFilterCompareOperator filterOperator) { return filterOperator switch { TableFilterCompareOperator.Equals => ConditionalType.Equal, TableFilterCompareOperator.Contains => ConditionalType.Like, TableFilterCompareOperator.StartsWith => ConditionalType.LikeLeft, TableFilterCompareOperator.EndsWith => ConditionalType.LikeRight, TableFilterCompareOperator.GreaterThan => ConditionalType.GreaterThan, TableFilterCompareOperator.LessThan => ConditionalType.LessThan, TableFilterCompareOperator.GreaterThanOrEquals => ConditionalType.GreaterThanOrEqual, TableFilterCompareOperator.LessThanOrEquals => ConditionalType.LessThanOrEqual, TableFilterCompareOperator.Condition => ConditionalType.In, TableFilterCompareOperator.NotEquals => ConditionalType.NoEqual, TableFilterCompareOperator.IsNull => ConditionalType.IsNullOrEmpty, TableFilterCompareOperator.IsNotNull => ConditionalType.IsNot, TableFilterCompareOperator.NotContains => ConditionalType.NoLike, TableFilterCompareOperator.TheSameDateWith => ConditionalType.EqualNull, TableFilterCompareOperator.Between => ConditionalType.Range, _ => throw new ArgumentOutOfRangeException(nameof(filterOperator), filterOperator, "未知的枚举类型!") }; } public static List ToSqlSugerWhere(this QueryModel qm) { return qm.FilterModel.SelectMany(s => s.Filters.Select(x => new ConditionalModel() { FieldName = s.FieldName, ConditionalType = ConvertToConditionalType(x.FilterCompareOperator), FieldValue = x.Value.GetType().IsEnum ? ((int)x.Value).ToString() : x.Value.ToString(), } as IConditionalModel)).ToList(); } } }