namespace MiaoYu.Api.Admin.ApplicationServices.Systems; /// /// 角色服务 /// public class SysRoleService : ApplicationService> { private readonly IRepository _sysUserRoleRepository; private readonly IRepository _sysDataAuthorityRepository; private readonly IRepository _sysDataAuthorityCustomRepository; public SysRoleService(IRepository defaultRepository, IRepository sysUserRoleRepository, IRepository sysDataAuthorityRepository, IRepository sysDataAuthorityCustomRepository) : base(defaultRepository) { _sysUserRoleRepository = sysUserRoleRepository; _sysDataAuthorityRepository = sysDataAuthorityRepository; _sysDataAuthorityCustomRepository = sysDataAuthorityCustomRepository; } /// /// 获取列表数据 /// /// /// public async Task FindListAsync(PagingSearchInput pagingSearchInput) { var query = (from sysRole in _defaultRepository.Select from sysDataAuthority in _sysDataAuthorityRepository.Select .Where(w => w.RoleId == sysRole.Id) .DefaultIfEmpty() select new { t1 = sysRole, t2 = sysDataAuthority }) .WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.Name), a => a.t1.Name.Contains(pagingSearchInput.Search.Name)) .OrderBy(w => w.t1.Number) .Select(w => new { w.t1.Number, w.t1.Name, w.t1.Remark, w.t1.DeleteLock, PermissionType = w.t2 == null ? 0 : w.t2.PermissionType, w.t1.LastModificationTime, w.t1.CreationTime, w.t1.Id, }) ; var result = await _defaultRepository.AsPagingViewAsync(query, pagingSearchInput); //覆盖值 result .FormatValue(query, w => w.CreationTime, (oldValue) => oldValue.ToString("yyyy-MM-dd")) .FormatValue(query, w => w.LastModificationTime, (oldValue) => oldValue?.ToString("yyyy-MM-dd")) ; return result; } /// /// 根据id数组删除 /// /// /// public async Task DeleteListAsync(List ids) { foreach (var item in ids) { var role = await _defaultRepository.FindByIdAsync(item); if (role.DeleteLock) MessageBox.Show("该信息已被锁定不能删除!"); await _defaultRepository.DeleteAsync(role); await _sysUserRoleRepository.DeleteAsync(w => w.RoleId == item); var list = await _sysDataAuthorityRepository.ToListAsync(w => w.RoleId == item); await _sysDataAuthorityCustomRepository.DeleteAsync(w => list.Select(w => w.Id).Contains(w.SysDataAuthorityId.Value)); await _sysDataAuthorityRepository.DeleteAsync(list); } } /// /// 查询表单数据 /// /// /// public async Task> FindFormAsync(Guid id) { var res = new Dictionary(); var form = await _defaultRepository.FindByIdAsync(id); form = form.NullSafe(); if (id == Guid.Empty) { var maxNum = await _defaultRepository.Select.MaxAsync(w => w.Number); form.Number = maxNum + 1; } res[nameof(id)] = id == Guid.Empty ? "" : id; res[nameof(form)] = form; return res; } /// /// 保存数据 /// /// /// public async Task SaveFormAsync(SysRole form) { await _defaultRepository.InsertOrUpdateAsync(form); } /// /// 导出Excel /// /// /// public async Task ExportExcelAsync(PagingSearchInput pagingSearchInput) { pagingSearchInput.Page = -1; var tableViewModel = await FindListAsync(pagingSearchInput); return ExcelUtil.ExportExcelByPagingView(tableViewModel, null, "Id"); } }