using Syc.Basic.Web.WMS.DO; using Syc.Basic.Web.WMS.Entitys; using Syc.Basic.Web.WMS.IServices; using Syc.Basic.Web.WMS.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; using Syc.Basic.Web.WMS.Enums; using Syc.Basic.Web.WMS.IServices; namespace Syc.Basic.Web.Services { public class UserDomainService:DomainService,IUserDomainService,ITransientDependency { private readonly IUserRepository userRepository; private readonly IRepository defaultRepository; public UserDomainService(IUserRepository userRepository,IRepository defaultRepository) { this.userRepository = userRepository; this.defaultRepository = defaultRepository; } public void FillOrganization(IEnumerable organizations, UserDO userDO) { throw new NotImplementedException(); } public void FillPosition(IEnumerable positions, UserDO userDO) { throw new NotImplementedException(); } public void FillRole(IEnumerable roles, UserDO userDO) { throw new NotImplementedException(); } public async Task> GetMenus(UserDO userDO) { var roles = await userRepository.GetRoleByCodesAsync(userDO.RoleCodes.ToArray()); return roles.SelectMany(e => e.Menus).DistinctBy(e => e.Name).Where(e => e.Type != MenuType.按钮).ToList(); } public async Task> GetPermissionByUserId(int userId) { var user = await userRepository.GetUserByUserIdAsync(userId); var roles = await userRepository.GetRoleByCodesAsync(user.RoleCodes.ToArray()); var permissionCodes = roles.SelectMany(e => e.Menus).Where(e => e.Type == MenuType.按钮).Select(e => e.PermissionCode).ToList(); return permissionCodes.Distinct().ToList(); } public Task GetUserByAccountAsync(string account, bool fillRole = true, bool fillORG = true, bool fillPosition = true) => userRepository.GetUserByAccountAsync(account, fillRole, fillORG, fillPosition); public Task GetUserByUserIdAsync(int id) { return userRepository.GetUserByUserIdAsync(id); } public async Task> GetUserByUserIdAsync(int[] id) { return await userRepository.GetUserByUserIdAsync(id); } } }