using System; using System.Collections; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Dapper; using Microsoft.Extensions.Configuration; using Npgsql; using Shentun.Utilities; namespace Shentun.WebPeis.PlugIns.ColumnReferences { public class ColumnReferencePlugInsBase : PlugInsBase, IColumnReferencePlugIns { protected string AppSql; private List _columns; private List _interfaceColumns; public ColumnReferencePlugInsBase(string parmValue) : base(parmValue) { AppSql = InterfaceConfig.GetSection("App").GetSection("Sql").Value; var columns = InterfaceConfig.GetSection("App").GetSection("Columns").Value; string[]? columnArry; if (columns != null) { columns = columns.Replace(",", ","); columnArry = columns.Split(','); _columns = new List(); foreach (var column in columnArry) { var singleColumns = column.Split('='); if (singleColumns.Length == 2) { _columns.Add(new ColumnReferenceColumn() { Column = singleColumns[0], Name = singleColumns[1] }); } } } columns = InterfaceConfig.GetSection("Interface").GetSection("Columns").Value; if (columns != null) { columns = columns.Replace(",", ","); columnArry = columns.Split(','); _interfaceColumns = new List(); foreach (var columnName in columnArry) { var singleColumns = columnName.Split('='); if (singleColumns.Length == 2) { _interfaceColumns.Add(new ColumnReferenceColumn() { Column = singleColumns[0], Name = singleColumns[1] }); } } } } public virtual List GetAppColumns() { if (_columns == null || _columns.Count() == 0) { return new List() { new ColumnReferenceColumn() { Column = "Code", Name = "编码" }, new ColumnReferenceColumn() { Column = "DisplayName", Name = "名称" } }; } return _columns; } public virtual List GetInterfaceColumns() { if (_interfaceColumns == null || _interfaceColumns.Count() == 0) { return new List() { new ColumnReferenceColumn() { Column = "Code", Name = "编码" }, new ColumnReferenceColumn() { Column = "DisplayName", Name = "名称" } }; } return _interfaceColumns; } public virtual async Task> GetAppCodeValuesAsync() { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { var list = (await conn.QueryAsync(AppSql)).ToList(); return list; } } public virtual async Task> GetInterfaceCodeValuesAsync() { return new List() { }; } public virtual async Task> GetAppFilterCodeValuesAsync() { throw new NotImplementedException(); } public virtual string GetAppFilterColumnName() { return null; } } }