///////////////////////////////////////////////////////////////////////////////// // 宁波拓通e智造平台 ToTong Next Builder // // https://git.tuotong-tech.com/tnb/tnb-server // ///////////////////////////////////////////////////////////////////////////////// using JNPF.Common.Security; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.Core; using Tnb.Vengine.DataAccess; using Tnb.Vengine.Domain; namespace Tnb.Vengine.AppService; /// /// 增删改查基类 /// [Authorize] [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 100)] [Route("/")] public class VengineAppService : BaseAppService, IVengineAppService { private readonly IDataAccess _dataAccess; private readonly ISqlSugarClient _db; private readonly Dictionary _models = new(); /// /// 构造函数 /// public VengineAppService(IDataAccess da) { _dataAccess = da; _db = _dataAccess.GetSqlSugar(); } /// /// 获取Vmodel /// private async Task GetVmodelAsync(string id) { if (!_models.ContainsKey(id)) { _models[id] = await _dataAccess.GetVmodelAsync(id, false); } return _models[id]; } #region 按模型的id进行增删改查接口 /// /// 获取一条 数据信息 /// [HttpGet("api/[area]/[controller]/{vmid}/get")] public async Task GetAsync(string vmid, [FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(vmid); var arg = input.ToQueryInput(vm.GetPrimary().code); var ls = await ListAsync(vmid, arg); return ls.items.FirstOrDefault(); } /// /// 获取多条 数据列表 /// [HttpGet("api/[area]/[controller]/{vmid}/get-list")] public async Task GetListAsync(string vmid, [FromQuery] VmGetListInput input) { return await ListAsync(vmid, input.ToQueryInput()); } /// /// 获取多条 数据列表 /// [HttpPost("api/[area]/[controller]/{vmid}/list")] public async Task ListAsync(string vmid, [FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(vmid); var ls = await _dataAccess.QueryDataAsync(vm, input); return ls; } /// /// 新增 数据 /// [HttpPost("api/[area]/[controller]/{vmid}/create")] public async Task CreateAsync(string vmid, [FromBody] VmCreateInput input) { var vm = await GetVmodelAsync(vmid); var ret = await _dataAccess.CreateDataAsync(vm, input); return ret; } /// /// 更新 数据 /// [HttpPut("api/[area]/[controller]/{vmid}/update")] public async Task UpdateAsync(string vmid, [FromBody] VmUpdateInput input) { var vm = await GetVmodelAsync(vmid); var ret = await _dataAccess.UpdateDataAsync(vm, input); return ret; } /// /// 删除 数据 /// [HttpDelete("api/[area]/[controller]/{vmid}/delete")] public async Task DeleteAsync(string vmid, [FromQuery] VmDeleteInput input) { var vm = await GetVmodelAsync(vmid); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } #endregion 按模型的id进行增删改查接口 #region 按模型的areaCode和vmcode进行增删改查接口 private async Task GetVmodelAsync(string areaCode, string vmCode) { var key = areaCode + "/" + vmCode; if (!_models.ContainsKey(key)) { _models[key] = await _dataAccess.GetVmodelAsync(areaCode, vmCode, false); } return _models[key]; } /// /// 获取一条 数据信息 /// [HttpGet("api/{areaCode}/{vmCode}/get")] public async Task GetAsync(string areaCode, string vmCode, [FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var arg = input.ToQueryInput(vm.GetPrimary().code); var ls = await ListAsync(areaCode, vmCode, arg); return ls.items.FirstOrDefault(); } /// /// 获取多条 数据列表 /// [HttpGet("api/{areaCode}/{vmCode}/get-list")] public async Task GetListAsync(string areaCode, string vmCode, [FromQuery] VmGetListInput input) { return await ListAsync(areaCode, vmCode, input.ToQueryInput()); } /// /// 获取多条 数据列表 /// [HttpPost("api/{areaCode}/{vmCode}/list")] public async Task ListAsync(string areaCode, string vmCode, [FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ls = await _dataAccess.QueryDataAsync(vm, input); return ls; } /// /// 新增 数据 /// [HttpPost("api/{areaCode}/{vmCode}/create")] public async Task CreateAsync(string areaCode, string vmCode, [FromBody] VmCreateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.CreateDataAsync(vm, input); return ret; } /// /// 更新 数据 /// [HttpPut("api/{areaCode}/{vmCode}/update")] public async Task UpdateAsync(string areaCode, string vmCode, [FromBody] VmUpdateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.UpdateDataAsync(vm, input); return ret; } /// /// 删除 数据 /// [HttpDelete("api/{areaCode}/{vmCode}/delete")] public async Task DeleteAsync(string areaCode, string vmCode, [FromQuery] VmDeleteInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } #endregion 按模型的areaCode和vmcode进行增删改查接口 }