yanjinhui
2025-08-28 6a50daac547ebaf0c2503803626e12fbc63c0bb6
ÏîÄ¿´úÂë/ºó¶Ë/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
@@ -14,6 +14,7 @@
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using WIDESEAWCS_Common;
using FaceAI;
using System.Runtime.InteropServices;
using System.IO;
@@ -35,8 +36,9 @@
        private readonly IRepository<Dt_AuthorizationRecord> _AuthorizatRecServer;
        private readonly IRepository<Sys_UserFace> _userFace;
        public Sys_UserService(IRepository<Sys_UserFace> _userFace,IRepository<Dt_AuthorizationRecord> AuthorizatRecServer,IRepository<Sys_Role> RoleServer,IRepository<Dt_Loginhsy> LoginhsyServer,IRepository<Dt_FaceRecognition> faceServer, IRepository<Sys_User> repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService, IRepository<Dt_Maintenance> MainServer) : base(repository)
        public Sys_UserService(IRepository<Sys_UserFace> userFace,IRepository<Dt_AuthorizationRecord> AuthorizatRecServer,IRepository<Sys_Role> RoleServer,IRepository<Dt_Loginhsy> LoginhsyServer,IRepository<Dt_FaceRecognition> faceServer, IRepository<Sys_User> repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService, IRepository<Dt_Maintenance> MainServer) : base(repository)
        {
            _userFace = userFace;
            _faceServer = faceServer;
            _LoginhsyServer = LoginhsyServer;
            _unitOfWorkManage = unitOfWorkManage;
@@ -364,9 +366,26 @@
                if (string.IsNullOrEmpty(oldPwd)) return WebResponseContent.Instance.Error("旧密码不能为空");
                if (string.IsNullOrEmpty(newPwd)) return WebResponseContent.Instance.Error("新密码不能为空");
                if (newPwd.Length < 6) return WebResponseContent.Instance.Error("密码不能少于6位");
                int userId = App.User.UserId;
                string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == userId, s => s.UserPwd);
                // âœ… å¯†ç å¤æ‚度校验:必须包含字母和数字
                // âœ… å¯†ç å¤æ‚度校验:必须包含大小写字母、数字和特殊符号
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[a-z]"))
                    return content.Error("新密码必须包含小写字母");
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[A-Z]"))
                    return content.Error("新密码必须包含大写字母");
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"\d"))
                    return content.Error("新密码必须包含数字");
                // âœ… å¯†ç å¤æ‚度校验:必须包含至少一个特殊符号(非字母数字的都算)
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[^a-zA-Z0-9]"))
                    return content.Error("新密码必须包含至少一个特殊符号");
                string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
                if (_oldPwd != userCurrentPwd) return WebResponseContent.Instance.Error("旧密码不正确");
@@ -402,7 +421,7 @@
        /// <param name="id"></param>
        /// <param name="oldPwd"></param>
        /// <param name="newPwd"></param>
        /// <returns></returns>
        /// <returns></returns>
        public WebResponseContent UpdatePwd(int id, string oldPwd, string newPwd)
        {
            WebResponseContent content = new WebResponseContent();
@@ -411,22 +430,44 @@
            try
            {
                if (string.IsNullOrEmpty(oldPwd)) return content.Error("旧密码不能为空");
                if (string.IsNullOrEmpty(newPwd)) return content.Error("新密码不能为空");
                if (newPwd.Length < 6) return content.Error("密码不能少于6位");
                if (string.IsNullOrEmpty(oldPwd))
                    return content.Error("旧密码不能为空");
                if (string.IsNullOrEmpty(newPwd))
                    return content.Error("新密码不能为空");
                if (newPwd.Length < 6)
                    return content.Error("密码不能少于6位");
                // âœ… å¯†ç å¤æ‚度校验:必须包含大小写字母、数字和特殊符号
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[a-z]"))
                    return content.Error("新密码必须包含小写字母");
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[A-Z]"))
                    return content.Error("新密码必须包含大写字母");
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"\d"))
                    return content.Error("新密码必须包含数字");
                // âœ… å¯†ç å¤æ‚度校验:必须包含至少一个特殊符号(非字母数字的都算)
                if (!global::System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[^a-zA-Z0-9]"))
                    return content.Error("新密码必须包含至少一个特殊符号");
                // èŽ·å–ç”¨æˆ·å½“å‰å¯†ç 
                string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == id, s => s.UserPwd) ?? "";
                if (string.IsNullOrEmpty(userCurrentPwd)) return content.Error("用户不存在或密码未设置");
                if (string.IsNullOrEmpty(userCurrentPwd))
                    return content.Error("用户不存在或密码未设置");
                //// è¿›è¡Œå¯†ç åŠ å¯†å¯¹æ¯”
                //// å¦‚果需要验证旧密码,放开这里
                //string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
                //if (_oldPwd != userCurrentPwd) return content.Error("旧密码不正确");
                //if (_oldPwd != userCurrentPwd)
                //    return content.Error("旧密码不正确");
                // ç”Ÿæˆæ–°å¯†ç åР坆值
                string _newPwd = newPwd.EncryptDES(AppSecret.User);
                if (userCurrentPwd == _newPwd) return content.Error("新密码不能与旧密码相同");
                if (userCurrentPwd == _newPwd)
                    return content.Error("新密码不能与旧密码相同");
                // æ›´æ–°å¯†ç 
                bool isUpdated = BaseDal.UpdateData(new Sys_User
@@ -442,7 +483,7 @@
                if (!isUpdated)
                {
                    return content.Error("密码修改失败,请稍后重试");
                    return content.Error("密码修改失败,密码必须包括字母以及特殊字符");
                }
                return content.OK("密码修改成功", id);
@@ -569,7 +610,7 @@
                    RoleName = addUserDTO.rolename,
                    Enable = addUserDTO.enable,
                    Unit=addUserDTO.userunit,
                    UserPwd = "j79rYYvCz4vdhcboB1Ausg==",
                    UserPwd = "NgKc7vI5u5jzh115fowV~g==",
                    Userteam=addUserDTO.userteam,
                    Dept_Id=addUserDTO.dept_Id,
                    //CardNumber=addUserDTO.carnuber,
@@ -727,38 +768,44 @@
        public WebResponseContent DeleteUserData(string account)
        {
            try
            {
                // 2. æŸ¥è¯¢äººè„¸åº“分组 ID
                //var faceGroupID = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault();
                //WIDESEAWCS_Common.DeleteUserImg deleteUserImg = new WIDESEAWCS_Common.DeleteUserImg();
                //deleteUserImg.group_id = faceGroupID;
                //deleteUserImg.user_id = account;
                //string apiResult = BaiDuFaceHelper.DeleteUser(deleteUserImg);//只要给token和log_id
                //// 2. è§£æžè¿”回结果,判断删除是否成功
                //dynamic resultObj = JsonConvert.DeserializeObject(apiResult);
                //if (resultObj.error_code == 0)
                //{
                // ç™¾åº¦åˆ é™¤æˆåŠŸåŽï¼Œåˆ é™¤æ•°æ®åº“ä¸­çš„ç”¨æˆ·
                // 1. æ£€æŸ¥ç”¨æˆ·æ˜¯å¦å­˜åœ¨
                var user = BaseDal.QueryData(x => x.UserName == account).FirstOrDefault();
                var main = _MainServer.QueryData(x => x.UserAccount == account).FirstOrDefault();
                var face = _userFace.QueryData(x => x.UserName == account).FirstOrDefault();
                if (user != null && main != null && face != null)
                if (user == null)
                {
                    return WebResponseContent.Instance.Error("用户不存在");
                }
                // 2. æ£€æŸ¥ä¸»è®°å½•是否存在及状态
                var main = _MainServer.QueryData(x => x.UserAccount == account).FirstOrDefault();
                if (main == null)
                {
                    return WebResponseContent.Instance.Error("用户主记录不存在");
                }
                if (main.MaintenanceStatus == 1)
                {
                    return WebResponseContent.Instance.Error("该用户还在检修中,无法删除");
                }
                // 3. æ£€æŸ¥äººè„¸è®°å½•是否存在
                var face = _userFace.QueryFirst(x => x.UserName == account);
                // 4. æŒ‰æ¡ä»¶åˆ é™¤
                if (face == null)
                {
                    // ä»…删除 user å’Œ main
                    BaseDal.DeleteData(user);
                    _MainServer.DeleteData(main);
                    _userFace.DeleteData(face);
                }
                else
                {
                    // åˆ é™¤æ‰€æœ‰ä¸‰ä¸ªè®°å½•
                    _userFace.DeleteData(face);
                    BaseDal.DeleteData(user);
                    _MainServer.DeleteData(main);
                }
                return WebResponseContent.Instance.OK("用户删除成功");
                //}
                //else
                //{
                //    return WebResponseContent.Instance.Error("百度 API åˆ é™¤å¤±è´¥ï¼š" + resultObj.error_msg);
                //}
            }
            catch (Exception ex)
            {
@@ -999,7 +1046,7 @@
                  a.Email,
                  a.Enable,
                  a.Gender,
                  //b.HeadImageUrl,
                  //b.UserFaceImagePath,
                  b.UserFaceImageName,
                  a.Address,
                  a.CreateDate,
@@ -1027,10 +1074,10 @@
                return new WebResponseContent { Status = false, Message = ex.Message };
                }
            }
        }
        /// <summary>
        /// æ‰¹é‡åˆ é™¤
        /// </summary>
@@ -1038,7 +1085,7 @@
        /// <returns></returns>
        public WebResponseContent DelUserList(int[] keys)
        {
            WebResponseContent webResponse=new WebResponseContent();
            WebResponseContent webResponse = new WebResponseContent();
            foreach (int key in keys)
            {
                var user = BaseDal.QueryData(x => x.User_Id == key).FirstOrDefault();
@@ -1047,12 +1094,29 @@
                    return webResponse.Error("没有找到该用户");
                }
                var main = _MainServer.QueryData(x => x.UserAccount == user.UserName).FirstOrDefault();
                BaseDal.DeleteData(user);
                _MainServer.DeleteData(main);
                var face = _userFace.QueryData(x => x.UserName == user.UserName).FirstOrDefault();
                if (main.MaintenanceStatus == 1)
                {
                    return WebResponseContent.Instance.Error("该用户还在检修中,无法删除");
                }
                if (face==null)
                {
                    BaseDal.DeleteData(user);
                    _MainServer.DeleteData(main);
                }
                else
                {
                    BaseDal.DeleteData(user);
                    _MainServer.DeleteData(main);
                    _userFace.DeleteData(face);
                }
            } 
            return webResponse.OK();
        }
    }
}