using AutoMapper; using Castle.Core.Internal; using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Validations; using Newtonsoft.Json.Linq; using System.Linq; using System.Security.Cryptography; using System.Text; using XiaodaERP.Models; using XiaodaERP.Services.IServices; using XiaodaERP.Utils;
namespace XiaodaERP.Services { public class AccountService : IAccountService { private readonly OracleDbContext _oracleDbContext; private readonly SqlServerDbContext _sqlServerDbContext; private readonly TokenHelper _tokenHelper; public AccountService(OracleDbContext oracleDbContext, SqlServerDbContext sqlServerDbContext, TokenHelper tokenHelper) { _oracleDbContext = oracleDbContext; _sqlServerDbContext = sqlServerDbContext; _tokenHelper = tokenHelper; }
public bool DeleteAccount(string UserId) { var res = _sqlServerDbContext.Users.Where(t => t.UserId == UserId).FirstOrDefault(); if (res != null) { _sqlServerDbContext.Users.Remove(res); return _sqlServerDbContext.SaveChanges() > 0; } else { return false; } }
public List<ViewUser> GetAllAccounts(string DeptId, string? userName, string? realName) { var res = new List<User>(); if (!string.IsNullOrEmpty(DeptId)) { var pdeptRes = _sqlServerDbContext.Depts .Where(t => t.Id == DeptId).Select(t => t.ParentDept).FirstOrDefault(); if (string.IsNullOrEmpty(pdeptRes)) { if (!userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = _sqlServerDbContext.Users.Include(user => user.Role) .Where(u => (_sqlServerDbContext.Depts.Where(d => d.ParentDept == DeptId) .Select(d => d.Id) .ToList()) .Contains(u.DeptId)) .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")).ToList(); } if (!realName.IsNullOrEmpty() && userName.IsNullOrEmpty()) { res = _sqlServerDbContext.Users.Include(user => user.Role) .Where(u => (_sqlServerDbContext.Depts.Where(d => d.ParentDept == DeptId) .Select(d => d.Id) .ToList()) .Contains(u.DeptId)) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).ToList(); } if (!userName.IsNullOrEmpty() && !realName.IsNullOrEmpty()) { res = _sqlServerDbContext.Users.Include(user => user.Role) .Where(u => (_sqlServerDbContext.Depts.Where(d => d.ParentDept == DeptId) .Select(d => d.Id) .ToList()) .Contains(u.DeptId)) .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).ToList(); } if (userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = _sqlServerDbContext.Users.Include(user => user.Role) .Where(u => (_sqlServerDbContext.Depts.Where(d => d.ParentDept == DeptId) .Select(d => d.Id) .ToList()) .Contains(u.DeptId)).ToList(); } } else { res = _sqlServerDbContext.Users .Include(user => user.Role) .Where(u => u.DeptId == DeptId).ToList(); } } else { res = _sqlServerDbContext.Users.Include(user => user.Role).ToList(); }
List<ViewUser> viewUsers = new(); var config = new MapperConfiguration(cfg => cfg.CreateMap<User, ViewUser>() .ForMember(dest => dest.username, opt => opt.MapFrom(src => src.UserName)) .ForMember(dest => dest.RoleId, opt => opt.MapFrom(src => src.Role.Id)) .ForMember(dest => dest.RoleName, opt => opt.MapFrom(src => src.Role.RoleName))); var mapper = config.CreateMapper(); foreach (var user in res) { viewUsers.Add( mapper.Map<ViewUser>(user) ) ; } return viewUsers; }
public bool UpdateAccount(ViewUser viewUser) { var res = _sqlServerDbContext.Users.FirstOrDefault(x => x.UserId == viewUser.UserId); var config = new MapperConfiguration(cfg => cfg.CreateMap<ViewUser, User>() .ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.username)) .BeforeMap((src, des) => src.UserId = Guid.NewGuid().ToString().Replace("-", "").ToUpper()) .BeforeMap((src, des) => src.password = this.Md5Encoding("123456")) .BeforeMap((src, des) => des.CreateTime = DateTime.Now) .BeforeMap((src, des) => des.CreateUserId = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).UserId) .BeforeMap((src, des) => des.CreateUserName = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).username)); var mapper = config.CreateMapper(); if (res == null) { _sqlServerDbContext.Users.Add( mapper.Map<User>(viewUser) ); } else { res = new MapperConfiguration(cfg => cfg.CreateMap<ViewUser, User>() .BeforeMap((src, des) => src.password = des.PassWord) .BeforeMap((src, des) => des.UpdateTime = DateTime.Now) .BeforeMap((src, des) => des.UpdateUserId = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).UserId) .BeforeMap((src, des) => des.UpdateUserName = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).username)) .CreateMapper().Map(viewUser, res); } return _sqlServerDbContext.SaveChanges() > 0; }
public string Md5Encoding(string rawPass) { var md5 = MD5.Create(); var bs = Encoding.UTF8.GetBytes(rawPass); var hs = md5.ComputeHash(bs); var sb = new StringBuilder(); foreach (var b in hs) { sb.Append(b.ToString("x2")); } return sb.ToString(); }
public bool ResetToDefaultPassword(string UserId) { var res = _sqlServerDbContext.Users.Where(t => t.UserId == UserId).FirstOrDefault(); if (res != null) { res.UpdateTime = DateTime.Now; res.UpdateUserId = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).UserId; res.UpdateUserName = _tokenHelper.GetToken<ViewUser>(TokenHelper.Token).username; res.PassWord = Md5Encoding("123456"); return _sqlServerDbContext.SaveChanges() > 0; } else { return false; } }
public PageResult<ViewUser> GetAllAccountsPagination(int page, int pageSize, string DeptId, string? userName, string? realName) { var res = new List<User>(); int count = 0; if (!string.IsNullOrEmpty(DeptId)) { var pdeptRes = _sqlServerDbContext.Depts .Where(t => t.Id == DeptId).Select(t => t.ParentDept).FirstOrDefault(); if (string.IsNullOrEmpty(pdeptRes)) { var sql = _sqlServerDbContext.Users.Include(user => user.Role) .Where(u => (_sqlServerDbContext.Depts.Where(d => d.ParentDept == DeptId) .Select(d => d.Id) .ToList()) .Contains(u.DeptId)) .AsQueryable(); if (!userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")).Count(); } if (!realName.IsNullOrEmpty() && userName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).Count(); } if (!userName.IsNullOrEmpty() && !realName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).Count(); } if (userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = sql.Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Count(); } } else { var sql = _sqlServerDbContext.Users .Include(user => user.Role) .Where(u => u.DeptId == DeptId).AsQueryable(); if (!userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")).Count(); } if (!realName.IsNullOrEmpty() && userName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).Count(); } if (!userName.IsNullOrEmpty() && !realName.IsNullOrEmpty()) { res = sql .Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")) .Skip((page - 1) * pageSize).Take(pageSize).ToList(); count = sql.Where(u => EF.Functions.Like(u.UserName, "%" + userName + "%")) .Where(u => EF.Functions.Like(u.RealName, "%" + realName + "%")).Count(); } if (userName.IsNullOrEmpty() && realName.IsNullOrEmpty()) { res = sql.ToList(); count = sql.Count(); } } } else { res = _sqlServerDbContext.Users.Include(user => user.Role).ToList(); count = _sqlServerDbContext.Users.Include(user => user.Role).Count(); }
List<ViewUser> viewUsers = new(); var config = new MapperConfiguration(cfg => cfg.CreateMap<User, ViewUser>() .ForMember(dest => dest.username, opt => opt.MapFrom(src => src.UserName)) .ForMember(dest => dest.RoleId, opt => opt.MapFrom(src => src.Role.Id)) .ForMember(dest => dest.RoleName, opt => opt.MapFrom(src => src.Role.RoleName)) .AfterMap((src, des) => des.password = null)); var mapper = config.CreateMapper(); foreach (var user in res) { viewUsers.Add( mapper.Map<ViewUser>(user) ); } return new PageResult<ViewUser> { Items = viewUsers, Total = count }; } } }
|