using LFlow.Base.Interfaces; using LFlow.Base.Utils; using LFlow.Cache.Interface; using LFlow.Permission.Service; using LFlow.Role.Model; using Mapster; namespace LFlow.Role.Service { /// /// 角色服务 /// public class RoleService(IRepo repo, IPermissionService permissionService, ISelfCache cacher) : IRoleService { /// /// 添加角色 /// /// /// public Task AddRoleAsync(RoleDto model) { var savedRole = repo.SaveOrUpdate(model.Adapt(), isUpdate: false); if (savedRole == null) { throw new InvalidOperationException("Failed to save or update the role."); } var roleDto = savedRole.MapTo(); if (roleDto == null) { throw new InvalidOperationException("Failed to map the saved role to RoleDto."); } return Task.FromResult(roleDto); } /// /// 删除角色并清理缓存 /// /// /// public Task DeleteRoleAsync(string id) { cacher.RemoveAsync(id); return Task.FromResult(repo.DeleteById(id)); } public async Task GetRolePerminssionListAsync(string roleId) { var roleDto = GetRoleAsync(roleId).Result; if (roleDto == null) { return new RoleDto(); } var permissions = await permissionService.GetProgPerminssionListAsync(roleId); if (permissions != null && permissions.Count >= 0) { roleDto.Permissions = permissions!; return roleDto; } else { return new RoleDto(); } } /// /// 根据ID获取角色 /// /// /// public async Task GetRoleAsync(string id) { var cachedRole = await cacher.GetAsync(id); if (cachedRole != null) { return cachedRole; } var role = await Task.FromResult(repo.Get(id)); if (role != null) { await cacher.SetAsync(id, role); } return role?.MapTo() ?? new RoleDto(); } /// /// 获取角色列表 /// /// /// /// /// public Task> GetRoleListAsync(int pageIndex, int pageSize, ref int total) { var roleModels = repo.GetAll(pageIndex, pageSize, ref total); var roleDtos = roleModels?.Select(role => role.MapTo()).ToList() ?? []; return Task.FromResult(roleDtos ?? [])!; } public Task UpdateRoleAsync(RoleDto model) { throw new NotImplementedException(); } } }