using SparkClient.Model.Entity.Base; using System.Reflection; using System.Runtime.CompilerServices; namespace SparkClient.Model.Entity; /// /// 系统设置实体 /// public class AlgorithmConfigEntity { public static readonly string TableName = "ALGORITHM_CONFIG"; [DbField("GUID")] public Guid GUID { get; set; } /// /// json内容 /// [DbField("JSON")] public required string Json { get; set; } /// /// Json排序 /// [DbField("JSON_ORDER")] public required int JsonOrder { get; set; } private static Dictionary GetFieldMappings() { var properties = typeof(AlgorithmConfigEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance); return properties .Where(p => Attribute.IsDefined(p, typeof(DbFieldAttribute))) .ToDictionary( p => p.Name, p => ((DbFieldAttribute)p.GetCustomAttribute(typeof(DbFieldAttribute))).FieldName ); } // 生成 Insert 语句 public string GenerateInsertSQL() { var mappings = GetFieldMappings(); var columns = string.Join(", ", mappings.Values); var values = string.Join(", ", mappings.Keys.Select(k => $"@{k}")); return $"INSERT INTO {TableName} ({columns}) VALUES ({values});"; } // 生成 Update 语句 public string GenerateUpdateSQL(Dictionary fieldsToUpdate = null) { if (fieldsToUpdate == null || fieldsToUpdate.Count == 0) { // 默认根据 ID 更新所有字段 var mappings = GetFieldMappings(); var setClause = string.Join(", ", mappings.Values.Select(f => $"{f} = @{f}")); return $"UPDATE {TableName} SET {setClause} WHERE GUID = " + GUID.ToString() + ";"; } else { // 根据传入的字段更新 var setClause = string.Join(", ", fieldsToUpdate.Keys.Select(f => $"{f} = @{f}")); return $"UPDATE {TableName} SET {setClause} WHERE GUID = " + GUID.ToString() + ";"; } } // 生成 Delete 语句 public string GenerateDeleteSQL(Dictionary conditions = null) { if (conditions == null || conditions.Count == 0) { // 默认根据 ID 删除 return $"DELETE FROM {TableName} WHERE GUID =" + GUID.ToString() + ";"; } else { // 根据传入条件删除 var whereClause = string.Join(" AND ", conditions.Keys.Select(f => $"{f} = @{f}")); return $"DELETE FROM {TableName} WHERE {whereClause};"; } } // 生成 Select 语句 public string GenerateSelectSQL(List fields = null, Dictionary conditions = null) { var mappings = GetFieldMappings(); // 如果没有指定字段,则选择所有字段 if (fields == null || fields.Count == 0) { fields = mappings.Values.ToList(); } else { // 确保指定的字段存在于映射中 fields = fields.Where(f => mappings.ContainsValue(f)).ToList(); } var columns = string.Join(", ", fields); var sql = $"SELECT {columns} FROM {TableName}"; if (conditions != null && conditions.Count > 0) { var whereClause = string.Join(" AND ", conditions.Keys.Select(f => $"{mappings[f]} = @{f}")); sql += $" WHERE {whereClause}"; } sql += ";"; return sql; } }