///////////////////////////////////////////////////////////////////////////////// // 宁波拓通e智造平台 ToTong Next Builder // // https://git.tuotong-tech.com/tnb/tnb.server // ///////////////////////////////////////////////////////////////////////////////// using JNPF.Common.Contracts; using JNPF.Common.Security; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.Vengine.DataAccess; using Tnb.Vengine.Domain; namespace Tnb.Vengine.AppService; /// /// 增删改查基类 /// [ApiDescriptionSettings(Area = ModuleConst.Area, Order = 10, KeepVerb = true)] [Route("api/[area]/[controller]/[action]")] public class VmAppService : BaseAppService where TEntity : IEntity { protected readonly IDataAccess _dataAccess; protected readonly ISqlSugarClient _db; /// /// 构造函数 /// public VmAppService(IDataAccess dataAccess) { _dataAccess = dataAccess; _db = _dataAccess.GetSqlSugar(); } protected async Task GetVmodelAsync() { var tp = typeof(TEntity); if (string.IsNullOrEmpty(tp?.Namespace)) { throw new ArgumentNullException($"类型 {nameof(tp)} 的命名空间不可为空"); } var area = tp.Namespace.Split('.').Last().ToKebabCase(); var vm = await _dataAccess.GetVmodelAsync(area, tp.Name, true); return vm; } /// /// 获取一条 数据信息 /// public virtual async Task GetAsync([FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(); VmQueryInput arg = input.Adapt(); if (input.id != null) { if (arg.q == null) arg.q = new DObject(); arg.q.Add(vm.GetPrimary().code, input.id); } var ls = await _dataAccess.QueryDataAsync(vm, arg); return ls.items.FirstOrDefault()!; } /// /// 获取多条 数据列表 /// public virtual async Task GetListAsync([FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(); VmQueryInput arg = input.Adapt(); if (!string.IsNullOrEmpty(input.q)) { arg.q = input.q.ToObject(); } var ls = await _dataAccess.QueryDataAsync(vm, arg); return ls; } /// /// 获取多条 数据列表 /// [HttpPost] public virtual async Task QueryAsync([FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(); var ls = await _dataAccess.QueryDataAsync(vm, input); return ls; } /// /// 新增 数据 /// public virtual async Task CreateAsync(VmCreateInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.CreateDataAsync(vm, input); return ret; } /// /// 更新 数据 /// public virtual async Task UpdateAsync(VmUpdateInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.UpdateDataAsync(vm, input); return ret; } /// /// 删除 数据 /// public virtual async Task DeleteAsync([FromQuery] VmDeleteInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } }