You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
6.7 KiB
C#
174 lines
6.7 KiB
C#
using Infrastructure;
|
|
using Infrastructure.Extensions;
|
|
using OpenAuth.App.Base;
|
|
using OpenAuth.App.FormScheme.FormHelpers;
|
|
using OpenAuth.Repository;
|
|
using OpenAuth.Repository.Domain;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using OpenAuth.App.BaseApp.Base;
|
|
|
|
namespace OpenAuth.App.DataSource
|
|
{
|
|
public class DataSourceApp : SqlSugarBaseApp<Repository.Domain.DataSource, SugarDbContext>
|
|
{
|
|
public DataSourceApp(ISugarUnitOfWork<SugarDbContext> unitWork,
|
|
ISimpleClient<Repository.Domain.DataSource> repository)
|
|
: base(unitWork, repository, null)
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 分页获取列表数据
|
|
/// </summary>
|
|
/// <param name="keyword"></param>
|
|
/// <param name="pageindex"></param>
|
|
/// <param name="pagesize"></param>
|
|
/// <returns></returns>
|
|
public async Task<Response<PageInfo<List<Repository.Domain.DataSource>>>> LoadDataSourceList(string keyword, int pageindex, int pagesize)
|
|
{
|
|
//定义且实例化分页数据
|
|
RefAsync<int> totalCount = 0;
|
|
//数据查询并返回
|
|
var info = await this.Repository.AsQueryable()
|
|
.WhereIF(!string.IsNullOrEmpty(keyword), t => t.Name.Contains(keyword))
|
|
.OrderBy(t => t.Name)
|
|
.ToPageListAsync(pageindex, pagesize, totalCount);
|
|
return new Response<PageInfo<List<Repository.Domain.DataSource>>>
|
|
{
|
|
Result = new PageInfo<List<Repository.Domain.DataSource>>
|
|
{
|
|
Items = info,
|
|
Total = totalCount
|
|
}
|
|
};
|
|
}
|
|
/// <summary>
|
|
/// 获取实体
|
|
/// </summary>
|
|
/// <param name="code">编码</param>
|
|
/// <returns></returns>
|
|
public Task<Repository.Domain.DataSource> GetEntityByCode(string code)
|
|
{
|
|
return this.Repository.AsQueryable().FirstAsync(t => t.Code == code);
|
|
}
|
|
/// <summary>
|
|
/// 获取sql的列
|
|
/// </summary>
|
|
/// <param name="code">编码</param>
|
|
/// <returns></returns>
|
|
public async Task<Response<List<string>>> GetDataColName(string code)
|
|
{
|
|
Repository.Domain.DataSource entity = await GetEntityByCode(code);
|
|
if (entity == null || string.IsNullOrEmpty(entity.Sql) || !entity.Sql.Contains("select"))
|
|
{
|
|
return new Response<List<string>>();
|
|
}
|
|
else
|
|
{
|
|
string sql = entity.Sql;
|
|
sql = sql.Replace("={userId}", " is not null ");
|
|
sql = sql.Replace("={userAccount}", " is not null");
|
|
sql = sql.Replace("={companyId}", " is not null");
|
|
sql = sql.Replace("={departmentId}", " is not null");
|
|
|
|
sql = sql.Replace("= {userId}", " is not null ");
|
|
sql = sql.Replace("= {userAccount}", " is not null");
|
|
sql = sql.Replace("= {companyId}", " is not null");
|
|
sql = sql.Replace("= {departmentId}", " is not null");
|
|
|
|
sql = sql.Replace("=@param", " is not null");
|
|
sql = sql.Replace("= @param", " is not null");
|
|
using (SugarDbContext db = base.UnitWork.CreateContext())
|
|
{
|
|
DataTable dt = await db.Db.SqlQueryable<object>(sql).ToDataTablePageAsync(1, 1);
|
|
List<string> res = new List<string>();
|
|
foreach (DataColumn item in dt.Columns)
|
|
{
|
|
res.Add(item.ColumnName.ToLower());
|
|
}
|
|
return new Response<List<string>>
|
|
{
|
|
Result = res
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 保存(新增、修改)
|
|
/// </summary>
|
|
/// <param name="keyValue">主键值</param>
|
|
/// <param name="dataSourceEntity">数据源实体</param>
|
|
/// <returns></returns>
|
|
public async Task<Response<bool>> SaveEntity(string keyValue, Repository.Domain.DataSource dataSourceEntity)
|
|
{
|
|
var flag = false;
|
|
dataSourceEntity.Sql = FormHelper.SqlFilters(dataSourceEntity.Sql);
|
|
if (!string.IsNullOrEmpty(keyValue))
|
|
{
|
|
Repository.Domain.DataSource entity = await this.Repository.GetFirstAsync(t => t.Code == dataSourceEntity.Code && t.Id != keyValue);
|
|
if (entity != null)
|
|
{
|
|
return new Response<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
dataSourceEntity.Id = keyValue;
|
|
dataSourceEntity.ModifyDate = DateTime.Now;
|
|
dataSourceEntity.ModifyUserId = dataSourceEntity.ModifyUserId;
|
|
dataSourceEntity.ModifyUserName = dataSourceEntity.ModifyUserName;
|
|
flag = await this.Repository.UpdateAsync(dataSourceEntity);
|
|
}
|
|
else
|
|
{
|
|
Repository.Domain.DataSource entity = await GetEntityByCode(dataSourceEntity.Code);
|
|
if (entity != null)
|
|
{
|
|
return new Response<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
dataSourceEntity.Id = Guid.NewGuid().ToString();
|
|
dataSourceEntity.CreateDate = DateTime.Now;
|
|
dataSourceEntity.CreateUserId = dataSourceEntity.CreateUserId;
|
|
dataSourceEntity.CreateUserName = dataSourceEntity.CreateUserName;
|
|
flag = await this.Repository.InsertAsync(dataSourceEntity);
|
|
}
|
|
return new Response<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除数据源
|
|
/// </summary>
|
|
/// <param name="keyValue">主键</param>
|
|
public async Task<Response<bool>> DeleteEntity(string keyValue)
|
|
{
|
|
Repository.Domain.DataSource entity = new Repository.Domain.DataSource()
|
|
{
|
|
Id = keyValue,
|
|
};
|
|
var flag = await this.Repository.DeleteAsync(entity);
|
|
return new Response<bool>
|
|
{
|
|
Result = flag,
|
|
Message = flag == true ? "success" : "error"
|
|
};
|
|
}
|
|
}
|
|
}
|