zhaowc
2024-09-06 1b108e8d7335d5a5a59dfcf2f4eeef034a53b9b8
Wms/WMS.BLL/SysServer/UserInforServer.cs
@@ -16,19 +16,18 @@
using WMS.Entity.BllTaskEntity;
using WMS.DAL;
using Utility;
using System.Text.RegularExpressions;
namespace WMS.BLL.SysServer
{
    public class UserInforServer : IUserInforServer
    {
        public IUserInforRepository UserSvc { get; set; }
        readonly IMapper _mapper;
        private readonly IFunSettingServer _setting;
        private static readonly SqlSugarScope Db = DataContext.Db;
        private readonly UserManager _userManager;
        public UserInforServer(IUserInforRepository userSvc, IMapper mapper, IFunSettingServer setting, UserManager userManager)
        public UserInforServer(IMapper mapper, IFunSettingServer setting, UserManager userManager)
        {
            UserSvc = userSvc;
            _mapper = mapper;
            _setting = setting;
            _userManager = userManager;
@@ -37,7 +36,7 @@
        public async Task<int> LoginAdmin(string loginName, string loginPwd)
        {
            //loginPwd = Md5Tools.CalcMd5(loginPwd);
            var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(m => m.UserName == loginName && m.PassWord == loginPwd);
            var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(m => m.UserName == loginName && m.PassWord == loginPwd &&m.IsDel=="0");
            if (modUser != null) //账号密码是否正确
            {
                if (modUser.Status == "0") //当前账号是否正常启用
@@ -56,13 +55,6 @@
                return -1;
            }
        }
        public SysUserInfor CeShi()
        {
            var date = UserSvc.ceshi();
            return date;
        }
        /// <summary>
        /// 获取用户角色信息
@@ -70,16 +62,25 @@
        /// <returns></returns>
        public async Task<List<UserInfoDto>> GetUserRoleList(string UserName, string DepartmentNo, string RoleNo, string Status)
        {
            var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(s => s.Id == _userManager.UserId);
            return await Db.Queryable<SysUserInfor>()
                                        .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                                        .LeftJoin<SysDepartment>((a, b, c) => a.DepartmentNo == c.DepartmentNo)
                                        .LeftJoin<SysRoles>((a, b, c, d) => a.RoleNo == d.RoleNo)
                                        .Where((a,b,c,d)=>d.IsDel == "0")
                                        .WhereIF(!string.IsNullOrEmpty(UserName), a => a.UserName.Contains(UserName))
                                        .WhereIF(!string.IsNullOrEmpty(DepartmentNo), a => a.DepartmentNo == DepartmentNo)
                                        .WhereIF(!string.IsNullOrEmpty(RoleNo), a => a.RoleNo == RoleNo)
                                        .WhereIF(!string.IsNullOrEmpty(Status), a => a.Status == Status)
                                        .WhereIF(modUser.UserName.ToUpper() != "ADMIN", a => a.CreateUser == _userManager.UserId)
                                        .Where(a => a.IsDel == "0")
                                        .Select<UserInfoDto>()
                                        .Select<UserInfoDto>((a, b, c, d) => new UserInfoDto()
                                        {
                                            RealName = a.RealName,
                                            CreateUserName = b.RealName,
                                            DepartmentName = c.DepartmentName,
                                            RoleName = d.RoleName,
                                        }, true)
                                        .ToListAsync();
        }
@@ -118,11 +119,10 @@
            }
            else if (count == 0)
            {
                //新增用户
                //i = await UserSvc.InsertUserInfo(userinfo);
                userinfo.PassWord = Md5Tools.CalcMd5("boxline");
                userinfo.SetPasswordTime = DateTime.Now;
                userinfo.CreateTime = DateTime.Now;
                userinfo.CreateUser = _userManager.UserId;
                i = await Db.Insertable(userinfo).ExecuteCommandAsync();
                if (i <= 0)
                    throw Oops.Bah("新增用户信息失败");
@@ -167,9 +167,10 @@
            }
            else if (count == 0)
            {
                userdto.UpdateUser = _userManager.UserId;
                userdto.UpdateTime = DateTime.Now;
                i = await Db.Updateable(userlist)
                    .UpdateColumns(s => new { s.UserName, s.UserNo, s.Sex, s.RoleNo, s.RealName, s.Phone, s.Paper, s.Nationality, s.JobNo, s.Email, s.Demo, s.Addres })
                    .UpdateColumns(s => new { s.UserName, s.UserNo, s.Sex, s.RoleNo, s.RealName, s.Phone, s.Paper, s.Nationality, s.JobNo, s.Email, s.Demo, s.Addres, s.UpdateUser, s.UpdateTime })
                    .ExecuteCommandAsync();
                if (i <= 0)
                    throw Oops.Bah("编辑用户信息失败");
@@ -182,28 +183,51 @@
        /// </summary>
        /// <param name="userids">用户id</param>
        /// <returns></returns>
        public async Task<SysUserInfor> GetUserInfoById(int userids)
        public async Task<SysUserInfor> GetUserInfoById(int userid)
        {
            return await Db.Queryable<SysUserInfor>().FirstAsync(s => s.Id == userids && s.IsDel == "0");
            return await Db.Queryable<SysUserInfor>().FirstAsync(s => s.Id == userid && s.IsDel == "0");
        }
        /// <summary>
        /// 修改用户密码
        /// </summary>
        /// <param name="pwdOld">原密码</param>
        /// <param name="pwdNew">新密码</param>
        /// <param name="pwdNewTwo">确认密码</param>
        /// <param name="userId">用户id</param>
        /// <returns></returns>
        /// <exception cref="Exception">捕获异常</exception>
        public async Task<int> UptUserPassWord(string pwdNew, int userId)
        public async Task<int> UptUserPassWord(string pwdNew,string pwdNewTwo, int userId)
        {
            var funSet = Db.Queryable<SysFunSetting>().Where(m => m.IsDel == "0" && m.FunSetName == "密码规则" && m.IsEnable == "NO").ToList().FirstOrDefault();
            if (funSet != null)
            {
                bool t = false;
                switch (funSet.FunSetNo)
                {
                    case "Fun052":  //数字,字母,符号
                        t = Regex.IsMatch(pwdNewTwo, @"^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)(?=.*[^0-9A-Za-z].*)).{3,}");
                        break;
                    case "Fun053":  //字母,数字
                        t = Regex.IsMatch(pwdNewTwo, @"^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)).{2,}");
                        break;
                    case "Fun051":  //数字,字母,符号,长度
                        t = Regex.IsMatch(pwdNewTwo, @"^(?=.*[0-9])(?=.*[a-zA-Z])(?=([\x21-\x7e]+)[^a-zA-Z0-9]).{8,30}");
                        break;
                    default:
                        break;
                }
                if (!t)
                {
                    throw Oops.Bah("输入密码不符合密码规则");
                }
            }
            return await Db.Updateable<SysUserInfor>()
                            .Where(s => s.Id == userId)
                            .SetColumns(s => s.UpdateTime == DateTime.Now)
                            .SetColumns(s => s.UpdateUser == _userManager.UserId)
                            .SetColumns(s => s.SetPasswordTime == DateTime.Now)
                            .ExecuteCommandAsync();
                       .Where(s => s.Id == userId)
                       .SetColumns(s => s.UpdateTime == DateTime.Now)
                       .SetColumns(s => s.UpdateUser == _userManager.UserId)
                       .SetColumns(s => s.PassWord == pwdNew)
                       .SetColumns(s => s.SetPasswordTime == DateTime.Now)
                       .ExecuteCommandAsync();
        }
        /// <summary>
        /// x天后提醒用户修改密码