This commit is contained in:
fuenmao
2026-08-25 20:37:17 +08:00
parent 38801533e9
commit be20a31332
22 changed files with 1090 additions and 336 deletions
@@ -0,0 +1,10 @@
namespace SimpleAdmin.Application;
public interface IOnboardingVariableDefinitionService : ITransient
{
Task<SqlSugarPagedList<ObVariableDefinition>> Page(OnboardingVariableDefinitionPageInput input);
Task<List<ObVariableDefinition>> ListAll();
Task Add(OnboardingVariableDefinitionAddInput input);
Task Edit(OnboardingVariableDefinitionEditInput input);
Task Delete(BaseIdListInput input);
}
@@ -0,0 +1,33 @@
using System.ComponentModel.DataAnnotations;
namespace SimpleAdmin.Application;
public class OnboardingVariableDefinitionPageInput : BasePageInput
{
public string Keyword { get; set; }
public string VariableCategory { get; set; }
}
public class OnboardingVariableDefinitionAddInput
{
[Required(ErrorMessage = "变量编码不能为空")]
public string VariableCode { get; set; }
[Required(ErrorMessage = "变量名称不能为空")]
public string VariableName { get; set; }
[Required(ErrorMessage = "变量分类不能为空")]
public string VariableCategory { get; set; }
public string DataType { get; set; } = "string";
public string DefaultValue { get; set; }
public bool Required { get; set; }
public int SortCode { get; set; } = 100;
public string Remark { get; set; }
}
public class OnboardingVariableDefinitionEditInput : OnboardingVariableDefinitionAddInput
{
[IdNotNull(ErrorMessage = "Id不能为空")]
public long Id { get; set; }
}
@@ -0,0 +1,78 @@
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();
}
}