78 lines
2.8 KiB
C#
78 lines
2.8 KiB
C#
namespace SimpleAdmin.Application;
|
|
|
|
public class OnboardingVariableDefinitionService : IOnboardingVariableDefinitionService
|
|
{
|
|
private readonly SqlSugarScope _db;
|
|
private static bool _initialized = false;
|
|
private static readonly object _lock = new();
|
|
|
|
public OnboardingVariableDefinitionService()
|
|
{
|
|
_db = DbContext.DB;
|
|
}
|
|
|
|
public async Task<SqlSugarPagedList<ObVariableDefinition>> Page(OnboardingVariableDefinitionPageInput input)
|
|
{
|
|
return await _db.Queryable<ObVariableDefinition>()
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), it => it.VariableCode.Contains(input.Keyword) || it.VariableName.Contains(input.Keyword))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.VariableCategory), it => it.VariableCategory == input.VariableCategory)
|
|
.OrderBy(it => it.SortCode)
|
|
.OrderBy(it => it.Id)
|
|
.ToPagedListAsync(input.PageNum, input.PageSize);
|
|
}
|
|
|
|
public async Task<List<ObVariableDefinition>> ListAll()
|
|
{
|
|
return await _db.Queryable<ObVariableDefinition>()
|
|
.OrderBy(it => it.SortCode)
|
|
.OrderBy(it => it.Id)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public async Task Add(OnboardingVariableDefinitionAddInput input)
|
|
{
|
|
var code = input.VariableCode.Trim();
|
|
var exists = await _db.Queryable<ObVariableDefinition>().AnyAsync(it => it.VariableCode == code);
|
|
if (exists)
|
|
throw Oops.Bah($"变量编码“{code}”已存在");
|
|
|
|
var entity = input.Adapt<ObVariableDefinition>();
|
|
entity.VariableCode = code;
|
|
entity.IsBuiltIn = false;
|
|
await _db.Insertable(entity).ExecuteCommandAsync();
|
|
}
|
|
|
|
public async Task Edit(OnboardingVariableDefinitionEditInput input)
|
|
{
|
|
var entity = await _db.Queryable<ObVariableDefinition>().InSingleAsync(input.Id)
|
|
?? throw Oops.Bah("变量不存在");
|
|
|
|
entity.VariableName = input.VariableName;
|
|
entity.DataType = input.DataType ?? "string";
|
|
entity.DefaultValue = input.DefaultValue;
|
|
entity.Required = input.Required;
|
|
entity.SortCode = input.SortCode;
|
|
entity.Remark = input.Remark;
|
|
if (!entity.IsBuiltIn)
|
|
{
|
|
entity.VariableCategory = input.VariableCategory;
|
|
}
|
|
|
|
await _db.Updateable(entity).ExecuteCommandAsync();
|
|
}
|
|
|
|
public async Task Delete(BaseIdListInput input)
|
|
{
|
|
if (input.Ids.Count == 0) return;
|
|
|
|
var hasBuiltIn = await _db.Queryable<ObVariableDefinition>()
|
|
.Where(it => input.Ids.Contains(it.Id) && it.IsBuiltIn)
|
|
.AnyAsync();
|
|
if (hasBuiltIn)
|
|
throw Oops.Bah("系统内置的标准入职登记表变量不能删除");
|
|
|
|
await _db.Deleteable<ObVariableDefinition>()
|
|
.Where(it => input.Ids.Contains(it.Id))
|
|
.ExecuteCommandAsync();
|
|
}
|
|
} |