using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Dto.System.AdvancedQuery; using JNPF.Systems.Entitys.System; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Yitter.IdGenerator; namespace JNPF.Systems; /// /// 高级查询方案管理 /// [ApiDescriptionSettings(Tag = "System", Name = "AdvancedQuery", Order = 202)] [Route("api/system/[controller]")] public class AdvancedQueryService : IDynamicApiController, ITransient { /// /// 服务基础仓储. /// private readonly ISqlSugarRepository _repository; /// /// 用户管理. /// private readonly IUserManager _userManager; /// /// 初始化一个类型的新实例. /// public AdvancedQueryService( ISqlSugarRepository repository, IUserManager userManager) { _repository = repository; _userManager = userManager; } #region Get /// /// 列表. /// /// 菜单Id. /// [HttpGet("{moduleId}/List")] public async Task GetList(string moduleId) { var data = await _repository.AsQueryable().Where(x => x.ModuleId.Equals(moduleId) && x.CreatorUserId.Equals(_userManager.UserId) && x.DeleteMark == null).ToListAsync(); return new { list = data.Adapt>() }; } /// /// 信息. /// /// 请求参数. /// [HttpGet("{id}")] public async Task GetInfo(string id) { var data = await _repository.GetFirstAsync(x => x.Id == id && x.DeleteMark == null); return data.Adapt(); } #endregion #region Post /// /// 新增. /// /// 请求参数. /// [HttpPost("")] public async Task Create([FromBody] AdvancedQuerySchemeCrInput input) { var entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); entity.CreatorUserId = _userManager.UserId; entity.CreatorTime = DateTime.Now; var isOk = await _repository.AsInsertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); if (isOk < 1) throw Oops.Oh(ErrorCode.COM1000); } /// /// 保存. /// /// 请求参数. /// [HttpPut("{id}")] public async Task Save(string id, [FromBody] AdvancedQuerySchemeCrInput input) { var entity = input.Adapt(); if (await _repository.IsAnyAsync(x => x.Id.Equals(id))) { entity.Id = id; var isOk = await _repository.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); if (isOk < 1) throw Oops.Oh(ErrorCode.COM1000); } else { entity.Id = YitIdHelper.NextId().ToString(); entity.CreatorUserId = _userManager.UserId; entity.CreatorTime = DateTime.Now; var isOk = await _repository.AsInsertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); if (isOk < 1) throw Oops.Oh(ErrorCode.COM1000); } } /// /// 删除. /// /// 主键. /// [HttpDelete("{id}")] public async Task Delete(string id) { var entity = await _repository.GetFirstAsync(x => x.Id == id && x.DeleteMark == null); entity.DeleteMark = 1; entity.DeleteTime = DateTime.Now; if (entity == null) throw Oops.Oh(ErrorCode.COM1005); var isOk = await _repository.AsUpdateable(entity).UpdateColumns(it => new { it.DeleteMark, it.DeleteTime }).ExecuteCommandHasChangeAsync(); if (!isOk) throw Oops.Oh(ErrorCode.COM1002); } #endregion }