using JNPF.Common.Enums; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.VisualData.Entity; using JNPF.VisualData.Entitys.Dto.ScreenMap; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Yitter.IdGenerator; namespace JNPF.VisualData; /// /// 业务实现:大屏地图. /// [ApiDescriptionSettings(Tag = "BladeVisual", Name = "Map", Order = 160)] [Route("api/blade-visual/[controller]")] public class ScreenMapConfigService : IDynamicApiController, ITransient { /// /// 服务基础仓储. /// private readonly ISqlSugarRepository _visualMapRepository; /// /// 初始化一个类型的新实例. /// public ScreenMapConfigService(ISqlSugarRepository visualMapRepository) { _visualMapRepository = visualMapRepository; } #region Get /// /// 分页. /// /// /// [HttpGet("list")] public async Task GetList([FromQuery] ScreenMapListQueryInput input) { SqlSugarPagedList? data = await _visualMapRepository.AsQueryable().Select(v => new ScreenMapListOutput { id = v.Id, name = v.Name }).ToPagedListAsync(input.current, input.size); return new { current = data.pagination.CurrentPage, pages = data.pagination.Total / data.pagination.PageSize, records = data.list, size = data.pagination.PageSize, total = data.pagination.Total }; } /// /// 详情 /// /// /// [HttpGet("detail")] public async Task GetInfo([FromQuery] string id) { VisualMapEntity? entity = await _visualMapRepository.AsQueryable().FirstAsync(v => v.Id == id); return entity.Adapt(); } /// /// 数据详情. /// /// /// [NonUnify] [HttpGet("data")] public dynamic GetDataInfo(string id) { VisualMapEntity? entity = _visualMapRepository.AsQueryable().First(v => v.Id == id); return entity.data; } #endregion #region Post /// /// 新增. /// /// [HttpPost("save")] public async Task Create([FromBody] ScreenMapCrInput input) { VisualMapEntity? entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); int isOk = await _visualMapRepository.AsInsertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1000); } /// /// 修改. /// /// [HttpPost("update")] public async Task Update([FromBody] ScreenMapUpInput input) { VisualMapEntity? entity = input.Adapt(); int isOk = await _visualMapRepository.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1001); } /// /// 删除. /// /// [HttpPost("remove")] public async Task Delete(string ids) { Task? entity = _visualMapRepository.AsQueryable().FirstAsync(v => v.Id == ids); _ = entity ?? throw Oops.Oh(ErrorCode.COM1005); int isOk = await _visualMapRepository.AsDeleteable().Where(it => ids.Contains(it.Id)).ExecuteCommandAsync(); if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1002); } #endregion }