71 lines
2.6 KiB
C#
71 lines
2.6 KiB
C#
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<User> defaultRepository;
|
|
|
|
public UserDomainService(IUserRepository userRepository,IRepository<User> defaultRepository)
|
|
{
|
|
this.userRepository = userRepository;
|
|
this.defaultRepository = defaultRepository;
|
|
}
|
|
|
|
public void FillOrganization(IEnumerable<Organization> organizations, UserDO userDO)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void FillPosition(IEnumerable<Position> positions, UserDO userDO)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void FillRole(IEnumerable<Role> roles, UserDO userDO)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public async Task<List<Menu>> 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<List<string>> 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<UserDO> GetUserByAccountAsync(string account, bool fillRole = true, bool fillORG = true, bool fillPosition = true)
|
|
=> userRepository.GetUserByAccountAsync(account, fillRole, fillORG, fillPosition);
|
|
|
|
public Task<UserDO> GetUserByUserIdAsync(int id)
|
|
{
|
|
return userRepository.GetUserByUserIdAsync(id);
|
|
}
|
|
|
|
public async Task<List<UserDO>> GetUserByUserIdAsync(int[] id)
|
|
{
|
|
return await userRepository.GetUserByUserIdAsync(id);
|
|
}
|
|
}
|
|
}
|