2025-06-16 17:24:23 +08:00

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);
}
}
}