From 4073bcc6e43f8f72945da396915f32d9d986967c Mon Sep 17 00:00:00 2001 From: yanjinhui <3306209981@qq.com> Date: 星期三, 26 三月 2025 10:15:51 +0800 Subject: [PATCH] 11 --- 项目代码/WIDESEAWCS_Server 正式/WIDESEAWCS_SystemServices/Sys_UserService.cs | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 208 insertions(+), 6 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs" index ad0e35f..55c3023 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs" @@ -11,6 +11,12 @@ using WIDESEAWCS_Core.BaseRepository; using System.Net; using WIDESEAWCS_Core.Caches; +using WIDESEA_ISerialPortRepository; +using Microsoft.AspNetCore.Http; +using SqlSugar; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; +using Microsoft.AspNetCore.Builder; +using WIDESEAWCS_DTO.SerialPort; namespace WIDESEAWCS_SystemServices { @@ -20,13 +26,19 @@ private readonly ICacheService _cacheService; private readonly ISys_MenuService _menuService; private readonly ISys_RoleRepository _RoleRepository; - public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService , ISys_RoleRepository roleRepository) : base(repository) + private readonly ILoginHistoryRepository _loginHistoryRepository; + private readonly IPutakeRepository _putakeRepository; + + public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, + ICacheService cacheService, ISys_MenuService menuService, ISys_RoleRepository roleRepository, ILoginHistoryRepository loginHistoryRepository, IPutakeRepository putakeRepository) : base(repository) { _unitOfWorkManage = unitOfWorkManage; _cacheService = cacheService; _menuService = menuService; _RoleRepository = roleRepository; - _RoleRepository= roleRepository; + _RoleRepository = roleRepository; + _loginHistoryRepository = loginHistoryRepository; + _putakeRepository = putakeRepository; } public WebResponseContent Login(LoginInfo loginInfo) @@ -50,6 +62,7 @@ #endregion UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password); + var disbled = BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);//鏍规嵁杩欎釜鐢ㄦ埛鍚嶆潵鏌ョ湅鐢ㄦ埛 if (user != null) { object obj = _menuService.GetMenuActionList(user.RoleId); @@ -61,6 +74,10 @@ { return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�"); } + if (disbled.Enable != 1) + { + return WebResponseContent.Instance.Error("浣犵殑璐﹀彿宸茶绂佺敤锛岃鑱旂郴绠$悊鍛�"); + } string token = JwtHelper.IssueJwt(new TokenModelJwt() { @@ -69,10 +86,19 @@ UserName = user.UserName, TenantId = user.TenantId, }); + var loghis = new Dt_LoginHistory + { + Account = user.UserName, + 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 }); + content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl, ID = user.UserId, RoleId=user.RoleId }); } else { @@ -157,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); @@ -176,8 +203,8 @@ nameof(Sys_User.LastModifyPwdDate), nameof(Sys_User.UserPwd) }); - - content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛"); + //content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛"); + content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛", userId); } catch (Exception ex) { @@ -185,6 +212,7 @@ content = WebResponseContent.Instance.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�"); } return content; + } public WebResponseContent GetUerType() @@ -200,6 +228,7 @@ r => r.RoleId, (u, r) => new { + u.User_Id, u.UserName, r.RoleId, u.RoleName, @@ -212,8 +241,181 @@ { - return new WebResponseContent { Status = false, Message="澶辫触"+ex }; + return new WebResponseContent { Status = false, Message = "澶辫触" + ex }; } + } + + + public WebResponseContent PermissionView(int userId, string group) + { + try + { + // 1. 鑾峰彇鐢ㄦ埛淇℃伅 + var user = BaseDal.QueryData(x => x.User_Id == userId).FirstOrDefault(); + var allTasks = _putakeRepository.QueryData(); + + if (user == null) + { + return new WebResponseContent { Status = false, Message = "鐢ㄦ埛涓嶅瓨鍦�" }; + } + + string roleName = user.RoleName; + + // 2. 鍒ゆ柇鏄惁鏄秴绾х鐞嗗憳 + if (roleName.Contains("瓒呯骇绠$悊鍛�")) + { + // 瓒呯骇绠$悊鍛樹粛鐒惰绛涢�夋寚瀹� group + var adminTasks = allTasks.Where(x => x.Grouptype == group).ToList(); + return new WebResponseContent { Status = true, Data = adminTasks, Message = "鑾峰彇鎴愬姛" }; + } + + // 3. 纭畾鏅�氱敤鎴疯鑹插尮閰嶇殑浠诲姟绫诲瀷 + List<string> allowedGroups = new List<string>(); + + if (roleName.Contains("鍦版矡")) allowedGroups.Add("鍦版矡");//濡傛灉娣诲姞杩涙暟缁勪腑 + if (roleName.Contains("鐢垫皵")) allowedGroups.Add("鐢垫皵"); + if (roleName.Contains("鏈烘")) allowedGroups.Add("鏈烘"); + + if (allowedGroups.Count == 0) + { + return new WebResponseContent { Status = false, Message = "鎮ㄦ棤鏉冮檺鏌ョ湅浠诲姟" }; + } + + // 4. 鏅�氱敤鎴峰彧鑳界湅鑷繁鏉冮檺鑼冨洿鍐呯殑浠诲姟 + if (!allowedGroups.Contains(group)) + { + return new WebResponseContent { Status = false, Message = "鎮ㄦ棤鏉冮檺鏌ョ湅璇ヤ换鍔$被鍒�" }; + } + + var tasks = allTasks.Where(t => t.Grouptype == group).ToList(); + + return new WebResponseContent { Status = true, Data = tasks, Message = "鑾峰彇鎴愬姛" }; + } + catch (Exception ex) + { + return new WebResponseContent { Status = false, Message = "閿欒: " + ex.Message }; + } + } + + + /// <summary> + /// 鍥剧墖鏂囦欢鍚� + /// </summary> + /// <param name="files"></param> + /// <returns></returns> + public WebResponseContent SaveFiles(IFormCollection files) + { + if (files == null || files.Files.Count == 0) + return new WebResponseContent { Status = false, Message = "璇蜂笂浼犳枃浠�" }; + + // 1. 纭繚瀛樺偍鐩綍瀛樺湪 + string baseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "image"); + if (!Directory.Exists(baseDirectory)) + Directory.CreateDirectory(baseDirectory); + + try + { + var file = files.Files[0]; // 鍙鐞嗙涓�涓枃浠� + string fileName = file.FileName; // 鐩存帴浣跨敤鍓嶇鐨勬枃浠跺悕 + + string fullFilePath = Path.Combine(baseDirectory, fileName); + + // 2. 淇濆瓨鏂囦欢锛堝鏋滃瓨鍦紝鍒欒鐩栵級 + using (var stream = new FileStream(fullFilePath, FileMode.Create)) + { + file.CopyTo(stream); + } + + // 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("鏃у瘑鐮佷笉姝g‘"); + + // 鐢熸垚鏂板瘑鐮佸姞瀵嗗�� + 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}; + } + } } } + + -- Gitblit v1.9.3