///////////////////////////////////////////////////////////////////////////////// // 宁波拓通e智造平台 ToTong Next Builder // // https://git.tuotong-tech.com/tnb/tnb.server // ///////////////////////////////////////////////////////////////////////////////// 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(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 10, KeepVerb = true)] [Route("api")] public class VmAppService : BaseAppService { private readonly IDataAccess _dataAccess; private readonly ISqlSugarClient _db; /// /// 构造函数 /// public VmAppService(IDataAccess da) { _dataAccess = da; _db = _dataAccess.GetSqlSugar(); } #region 根据vmodel id进行增删改查接口 /// /// 获取一条 数据信息 /// [HttpGet("[area]/[controller]/{vmid}/[action]")] public async Task GetAsync(string vmid, [FromQuery] VmGetInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); 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(); } /// /// 获取多条 数据列表 /// [HttpGet("[area]/[controller]/{vmid}/[action]")] public async Task GetListAsync(string vmid, [FromQuery] VmGetListInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); VmQueryInput arg = input.Adapt(); if (!string.IsNullOrEmpty(input.q)) { arg.q = input.q.ToObject(); } var ls = await _dataAccess.QueryDataAsync(vm, arg); return ls; } /// /// 获取多条 数据列表 /// [HttpPost("[area]/[controller]/{vmid}/[action]")] public async Task QueryAsync(string vmid, [FromBody] VmQueryInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); var ls = await _dataAccess.QueryDataAsync(vm, input); return ls; } /// /// 新增 数据 /// [HttpPost("[area]/[controller]/{vmid}/[action]")] public async Task CreateAsync(string vmid, VmCreateInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.CreateDataAsync(vm, input); return ret; } /// /// 更新 数据 /// [HttpPut("[area]/[controller]/{vmid}/[action]")] public async Task UpdateAsync(string vmid, VmUpdateInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.UpdateDataAsync(vm, input); return ret; } /// /// 删除 数据 /// [HttpDelete("[area]/[controller]/{vmid}/[action]")] public async Task DeleteAsync(string vmid, [FromQuery] VmDeleteInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } private async Task GetVmodelAsync(string area, string vmCode) { var vm = await _dataAccess.GetVmodelAsync(area.SnakeToPascalCase(), vmCode.SnakeToPascalCase(), true); return vm; } #endregion #region 根据vmode的area和code进行增删改查接口 /// /// 获取一条 数据信息 /// [HttpGet("{areaCode}/{vmCode}/[action]")] public async Task GetAsync(string areaCode, string vmCode, [FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); 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(); } /// /// 获取多条 数据列表 /// [HttpGet("{areaCode}/{vmCode}/[action]")] public async Task GetListAsync(string areaCode, string vmCode, [FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); VmQueryInput arg = input.Adapt(); if (!string.IsNullOrEmpty(input.q)) { arg.q = input.q.ToObject(); } var ls = await _dataAccess.QueryDataAsync(vm, arg); return ls; } /// /// 获取多条 数据列表 /// [HttpPost("{areaCode}/{vmCode}/[action]")] public async Task QueryAsync(string areaCode, string vmCode, [FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ls = await _dataAccess.QueryDataAsync(vm, input); return ls; } /// /// 新增 数据 /// [HttpPost("{areaCode}/{vmCode}/[action]")] public async Task CreateAsync(string areaCode, string vmCode, VmCreateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.CreateDataAsync(vm, input); return ret; } /// /// 更新 数据 /// [HttpPut("{areaCode}/{vmCode}/[action]")] public async Task UpdateAsync(string areaCode, string vmCode, VmUpdateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.UpdateDataAsync(vm, input); return ret; } /// /// 删除 数据 /// [HttpDelete("{areaCode}/{vmCode}/[action]")] 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 }