yanjinhui
2025-03-19 1067a1298d2d12c217dd94997b6820d879ae5400
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_SystemServices/Sys_UserService.cs
@@ -16,6 +16,7 @@
using SqlSugar;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
using Microsoft.AspNetCore.Builder;
using WIDESEAWCS_DTO.SerialPort;
namespace WIDESEAWCS_SystemServices
{
@@ -91,15 +92,13 @@
                        TrurName=user.UserTrueName,
                        CreateDate=DateTime.Now
                    };
                   
                    _cacheService.AddOrUpdate(user.UserId.ToString(), token);
                    _loginHistoryRepository.AddData(loghis);
                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl,ID=user.UserId });
                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl, ID = user.UserId, RoleId=user.RoleId });
                }
                else
                {
@@ -184,6 +183,7 @@
                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);
                string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
@@ -298,62 +298,124 @@
        }
        public WebResponseContent UploaDavatar(List<IFormFile> files, int userId)
        /// <summary>
        /// å›¾ç‰‡æ–‡ä»¶å
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        public WebResponseContent SaveFiles(IFormCollection files)
        {
            if (files == null || files.Count == 0)
            if (files == null || files.Files.Count == 0)
                return new WebResponseContent { Status = false, Message = "请上传文件" };
            //  1. æŒ‡å®šå›ºå®šçš„存储目录
            //string baseDirectory = @"E:\美型\NiuJuKongZhi\项目代码\WIDESEAWCS_Server æ­£å¼\WIDESEAWCS_Server\wwwroot\image\";
            string baseDirectory = @"wwwroot\image\";
            // 2. ç”Ÿæˆå­ç›®å½•,避免文件冲突
            string subDirectory = $"{DateTime.Now:yyMMddHHmmss}_{new Random().Next(1000, 9999)}";
            string filePath = Path.Combine(baseDirectory, subDirectory);
            //3. ç¡®ä¿ç›®å½•存在
            if (!Directory.Exists(filePath))
                Directory.CreateDirectory(filePath);
            // 1. ç¡®ä¿å­˜å‚¨ç›®å½•存在
            string baseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "image");
            if (!Directory.Exists(baseDirectory))
                Directory.CreateDirectory(baseDirectory);
            try
            {
                string uploadedFilePath = "";
                for (int i = 0; i < files.Count; i++)
                {
                    // 4. ç”Ÿæˆå”¯ä¸€æ–‡ä»¶åï¼ˆé˜²æ­¢é‡åè¦†ç›–)
                    string fileName = $"{Guid.NewGuid()}{Path.GetExtension(files[i].FileName)}";
                    string fullFilePath = Path.Combine(filePath, fileName);
                var file = files.Files[0]; // åªå¤„理第一个文件
                string fileName = file.FileName; // ç›´æŽ¥ä½¿ç”¨å‰ç«¯çš„æ–‡ä»¶å
                    // 5. ä¿å­˜æ–‡ä»¶åˆ°æŒ‡å®šè·¯å¾„
                string fullFilePath = Path.Combine(baseDirectory, fileName);
                // 2. ä¿å­˜æ–‡ä»¶ï¼ˆå¦‚果存在,则覆盖)
                    using (var stream = new FileStream(fullFilePath, FileMode.Create))
                    {
                        files[i].CopyTo(stream);
                    file.CopyTo(stream);
                    }
                    // 6. è®°å½•文件路径(存入数据库的相对路径)
                    uploadedFilePath = Path.Combine("/image", subDirectory, fileName).Replace("\\", "/");
                    break; // åªå¤„理第一个文件
                }
                //7. æ›´æ–°ç”¨æˆ·å¤´åƒè·¯å¾„到数据库
                var user = BaseDal.QueryData(u => u.User_Id == userId).FirstOrDefault();
                if (user != null)
                {
                    user.HeadImageUrl = uploadedFilePath;
                    UpdateData(user);
                }
                else
                {
                    return new WebResponseContent { Status = false, Message = "用户不存在" };
                }
                return new WebResponseContent { Status = true, Message = "文件上传成功", Data = uploadedFilePath };
                // 3. è¿”回文件名
                return new WebResponseContent { Status = true, Message = "文件上传成功", Data = fileName };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "上传文件失败:" + ex.Message };
            }
        }
        /// <summary>
        /// æ›´æ–°å¯†ç 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="oldPwd"></param>
        /// <param name="newPwd"></param>
        /// <returns></returns>
        public WebResponseContent UpdatePwd(int id, string oldPwd, string newPwd)
        {
            WebResponseContent content = new WebResponseContent();
            oldPwd = oldPwd?.Trim();
            newPwd = newPwd?.Trim();
            try
            {
                if (string.IsNullOrEmpty(oldPwd)) return content.Error("旧密码不能为空");
                if (string.IsNullOrEmpty(newPwd)) return content.Error("新密码不能为空");
                if (newPwd.Length < 6) return content.Error("密码不能少于6位");
                // èŽ·å–ç”¨æˆ·å½“å‰å¯†ç 
                 string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == id, s => s.UserPwd) ?? "";
                if (string.IsNullOrEmpty(userCurrentPwd)) return content.Error("用户不存在或密码未设置");
                //// è¿›è¡Œå¯†ç åŠ å¯†å¯¹æ¯”
                //string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
                //if (_oldPwd != userCurrentPwd) return content.Error("旧密码不正确");
                // ç”Ÿæˆæ–°å¯†ç åР坆值
                string _newPwd = newPwd.EncryptDES(AppSecret.User);
                if (userCurrentPwd == _newPwd) return content.Error("新密码不能与旧密码相同");
                // æ›´æ–°å¯†ç 
                bool isUpdated = BaseDal.UpdateData(new Sys_User
                {
                    User_Id = id,
                    UserPwd = _newPwd,
                    LastModifyPwdDate = DateTime.Now
                }, new List<string>
        {
            nameof(Sys_User.LastModifyPwdDate),
            nameof(Sys_User.UserPwd)
        });
                if (!isUpdated)
                {
                    return content.Error("密码修改失败,请稍后重试");
                }
                return content.OK("密码修改成功", id);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"修改密码异常: {ex.Message}");
                return content.Error($"服务器错误: {ex.Message}");
    }
}
        public WebResponseContent Upuserbase(UserDTO userDTO)
        {
            try
            {
                var user = BaseDal.QueryData(x => x.User_Id == userDTO.id).FirstOrDefault();
                if (user==null)
                {
                    return new WebResponseContent { Status = false, Message = "没找到该用户" };
                }
                user.UserTrueName = userDTO.usertruename;
                user.PhoneNo = userDTO.phone;
                user.HeadImageUrl = userDTO.files;
                BaseDal.UpdateData(user); // ç¡®ä¿æ›´æ–°åˆ°æ•°æ®åº“
                return new WebResponseContent { Status = true, Data = user };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false ,Message="失败:"+ex};
            }
        }
    }
}