using BaseService.BaseData.DataDictionaryManagement.Dto; using BaseService.Permissions; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace BaseService.BaseData.DataDictionaryManagement { [Authorize(BaseServicePermissions.DataDictionary.Default)] public class DictionaryDetailAppService : ApplicationService, IDictionaryDetailAppService { private readonly IRepository _masterRepository; private readonly IRepository _detailRepository; public DictionaryDetailAppService( IRepository detailRepository, IRepository masterRepository) { _detailRepository = detailRepository; _masterRepository = masterRepository; } [Authorize(BaseServicePermissions.DataDictionary.Create)] public async Task Create(CreateOrUpdateDictionaryDetailDto input) { var master = await _masterRepository.FirstOrDefaultAsync(_ => _.Id == input.Pid); if (master == null) { throw new BusinessException("未找到字典!"); } var exist = await _detailRepository.FirstOrDefaultAsync(_ => _.Label == input.Label); if (exist != null) { throw new BusinessException("名称:" + input.Label + "字典已存在"); } var result = await _detailRepository.InsertAsync(new DataDictionaryDetail( GuidGenerator.Create(), input.Pid, input.Label, input.Value, input.Sort)); return ObjectMapper.Map(result); } [Authorize(BaseServicePermissions.DataDictionary.Delete)] public async Task Delete(List ids) { foreach (var id in ids) { await _detailRepository.DeleteAsync(id); } } public async Task Get(Guid id) { var result = await _detailRepository.GetAsync(id); return ObjectMapper.Map(result); } /// /// 分页查询 /// /// 分页条件 /// public async Task> GetAll(GetDictionaryDetailInputDto input) { var query = (await _detailRepository.GetQueryableAsync()).Where(_ => _.Pid == input.Pid); var items = await query.OrderBy(_ => _.Sort) .Skip(input.SkipCount) .Take(input.MaxResultCount) .ToListAsync(); var dots = ObjectMapper.Map, List>(items); var totalCount = await query.CountAsync(); return new PagedResultDto(totalCount, dots); } /// /// 列表查询 /// /// 父级字典名称 /// public async Task> GetAllByDictionaryName(string name) { var master = await _masterRepository.GetAsync(_ => _.Name == name); var details = await (await _detailRepository.GetQueryableAsync()).Where(_ => _.Pid == master.Id) .OrderBy(_ => _.Sort) .ToListAsync(); return new ListResultDto(ObjectMapper.Map, List>(details)); } [Authorize(BaseServicePermissions.DataDictionary.Update)] public async Task Update(Guid id, CreateOrUpdateDictionaryDetailDto input) { var detail = await _detailRepository.GetAsync(id); detail.Label = input.Label; detail.Value = input.Value; detail.Sort = input.Sort; return ObjectMapper.Map(detail); } } }