using NCC.Common.Enum; using NCC.Dependency; using NCC.DynamicApiController; using NCC.FriendlyException; using NCC.VisualData.Entity; using NCC.VisualData.Entitys.Dto.ScreenMap; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SqlSugar; using System.Threading.Tasks; using Yitter.IdGenerator; namespace NCC.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) { var data = await _visualMapRepository.Entities.Select(v => new { id = v.Id, name = v.Name }).MergeTable().Select().ToPagedListAsync(input.current, input.size); return new { current = data.pagination.PageIndex, pages = data.pagination.PageIndex, records = data.list, size = data.pagination.PageSize, total = data.pagination.Total }; } /// /// 详情 /// /// /// [HttpGet("detail")] public async Task GetInfo([FromQuery] string id) { var entity = await _visualMapRepository.SingleAsync(v => v.Id == id); var data = entity.Adapt(); return data; } /// /// 数据详情 /// /// /// [NonUnify] [HttpGet("data")] [AllowAnonymous] public dynamic GetDataInfo(string id) { var entity = _visualMapRepository.Single(v => v.Id == id); return entity.data; } #endregion #region Post /// /// 新增 /// /// [HttpPost("save")] public async Task Create([FromBody] ScreenMapCrInput input) { var entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); var isOk = await _visualMapRepository.Context.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); } /// /// 修改 /// /// [HttpPost("update")] public async Task Update([FromBody] ScreenMapUpInput input) { var entity = input.Adapt(); var isOk = await _visualMapRepository.Context.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); } /// /// 删除 /// /// [HttpPost("remove")] public async Task Delete(string ids) { var entity = _visualMapRepository.SingleAsync(v => v.Id == ids); _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); var isOk = await _visualMapRepository.DeleteAsync(ids); if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); } #endregion } }