using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.FriendlyException; using Microsoft.AspNetCore.Http; using System.Threading.Tasks; namespace Dilon.Core { /// /// 用户管理 /// public class UserManager : IUserManager, IScoped { private readonly IRepository _sysUserRep; // 用户表仓储 private readonly IRepository _sysEmpRep; // 员工表 private readonly IHttpContextAccessor _httpContextAccessor; public long UserId { get => long.Parse(_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 sysEmpRep, IHttpContextAccessor httpContextAccessor) { _sysUserRep = sysUserRep; _sysEmpRep = sysEmpRep; _httpContextAccessor = httpContextAccessor; } /// /// 获取用户信息 /// /// /// /// public async Task CheckUserAsync(long userId, bool tracking = true) { var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == userId, tracking); return user ?? throw Oops.Oh(ErrorCode.D1002); } /// /// 获取用户员工信息 /// /// /// public async Task GetUserEmpInfo(long userId) { var emp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == userId, false); return emp ?? throw Oops.Oh(ErrorCode.D1002); } } }