using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.FriendlyException; using Microsoft.AspNetCore.Http; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace Ewide.Core { /// /// 用户管理 /// public class UserManager : IUserManager, IScoped { private readonly IRepository _sysUserRep; // 用户表仓储 private readonly IRepository _sysRoleRep; private readonly IRepository _sysUserRoleRep; private readonly IRepository _sysEmpRep; // 员工表 private readonly IHttpContextAccessor _httpContextAccessor; public string UserId { get => _httpContextAccessor.HttpContext.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value; } public string Account { get => _httpContextAccessor.HttpContext.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value; } public string Name { get => _httpContextAccessor.HttpContext.User.FindFirst(ClaimConst.CLAINM_NAME)?.Value; } public bool SuperAdmin { get => _httpContextAccessor.HttpContext.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value == ((int)AdminType.SuperAdmin).ToString(); } public SysUser User { get => _sysUserRep.Find(UserId); } public UserManager( IRepository sysUserRep, IRepository sysRoleRep, IRepository sysUserRoleRep, IRepository sysEmpRep, IHttpContextAccessor httpContextAccessor) { _sysUserRep = sysUserRep; _sysRoleRep = sysRoleRep; _sysUserRoleRep = sysUserRoleRep; _sysEmpRep = sysEmpRep; _httpContextAccessor = httpContextAccessor; } /// /// 获取用户信息 /// /// /// /// public async Task CheckUserAsync(string userId) { var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == userId, false); return user ?? throw Oops.Oh(ErrorCode.D1002); } public async Task CheckUserAsync() { return await CheckUserAsync(UserId); } /// /// 获取用户员工信息 /// /// /// public async Task GetUserEmpInfo(string userId) { var emp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == userId, false); return emp ?? throw Oops.Oh(ErrorCode.D1002); } public async Task GetUserEmpInfo() { return await GetUserEmpInfo(UserId); } public async Task> GetUserRoleIdList(string userId) { var roleIds = await _sysUserRoleRep.DetachedEntities.Where(u => u.SysUserId == userId).Select(u => u.SysRoleId).ToListAsync(); return roleIds; } public async Task> GetUserRoleIdList() { return await GetUserRoleIdList(UserId); } } }