using BaseService.BaseData.JobManagement.Dto; using BaseService.Permissions; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; 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.JobManagement { [Authorize(BaseServicePermissions.Job.Default)] public class JobAppService : ApplicationService, IJobAppService { private readonly IRepository _repository; public JobAppService(IRepository repository) { _repository = repository; } [Authorize(BaseServicePermissions.Job.Create)] public async Task Create(CreateOrUpdateJobDto input) { var exist = await _repository.FirstOrDefaultAsync(_ => _.Name == input.Name); if (exist != null) { throw new BusinessException("名称:" + input.Name + "岗位已存在"); } var result = await _repository.InsertAsync(new Job(GuidGenerator.Create(),CurrentTenant.Id, input.Name, input.Enabled, input.Sort, input.Description)); return ObjectMapper.Map(result); } [Authorize(BaseServicePermissions.Job.Delete)] public async Task Delete(List ids) { foreach (var id in ids) { await _repository.DeleteAsync(id); } } public async Task Get(Guid id) { var result = await _repository.GetAsync(id); return ObjectMapper.Map(result); } public async Task> GetAll(GetJobInputDto input) { var query = (await _repository.GetQueryableAsync()).WhereIf(!string.IsNullOrWhiteSpace(input.Filter), _ => _.Name.Contains(input.Filter)); var totalCount = await query.CountAsync(); var items = await query.OrderBy(input.Sorting ?? "Sort") .Skip(input.SkipCount) .Take(input.MaxResultCount) .ToListAsync(); var dots = ObjectMapper.Map, List>(items); return new PagedResultDto(totalCount, dots); } public async Task> GetAllJobs() { var jobs = await _repository.GetListAsync(); return new ListResultDto(ObjectMapper.Map, List>(jobs)); } [Authorize(BaseServicePermissions.Job.Update)] public async Task Update(Guid id, CreateOrUpdateJobDto input) { var job = await _repository.GetAsync(id); job.Name = input.Name; job.Enabled = input.Enabled; job.Sort = input.Sort; job.Description = input.Description; return ObjectMapper.Map(job); } } }