From 26bd491f38294bda6729936099d6ebca67e4e57a Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 11 一月 2025 10:48:35 +0800
Subject: [PATCH] 1

---
 /dev/null                                                                                                    |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs                           |   45 +++++++++++++++++++++++++++++++++++++++++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs                                          |    5 ++++-
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                      |    2 +-
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx |    0 
 5 files changed, 50 insertions(+), 2 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx"
deleted file mode 100644
index 363e52e..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx"
new file mode 100644
index 0000000..249ddd8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
index 1656f81..0ff7fb6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
@@ -87,6 +87,51 @@
             return userRoles;
         }
 
+        public static List<UserRole> GetUserRoles(ISqlSugarClient db, int userId)
+        {
+            List<ExpandoObject> roles = db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
+            List<dynamic> roleDynamics = new List<dynamic>();
+            foreach (var item in roles)
+            {
+                roleDynamics.Add(item);
+            }
+
+            List<dynamic> roleDataDynamics = new List<dynamic>();
+            List<ExpandoObject> roleDatas = db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
+            foreach (var item in roleDatas)
+            {
+                roleDataDynamics.Add(item);
+            }
+
+            List<ExpandoObject> users = db.Queryable("Sys_User", "x").Where($"UserId={userId}").Select(UserSelectModes).ToList();
+
+            List<UserRole> userRoles = new List<UserRole>();
+            foreach (var item in users)
+            {
+                dynamic user = item;
+                dynamic? role = roleDynamics.FirstOrDefault(x => x.RoleId == user.RoleId);
+                List<object> warehouseIds = roleDataDynamics.Where(x => x.RoleId == user.RoleId).Select(x => x.WarehouseId).ToList();
+                List<int> ids = new List<int>();
+                for (int i = 0; i < warehouseIds.Count; i++)
+                {
+                    ids.Add(Convert.ToInt32(warehouseIds[i]));
+                }
+                if (role != null)
+                {
+                    userRoles.Add(new UserRole
+                    {
+                        RoleId = role.RoleId,
+                        RoleName = role.RoleName,
+                        ParentId = role.ParentId,
+                        UserId = user.UserId,
+                        UserName = user.UserName,
+                        WarehouseIds = ids
+                    });
+                }
+            }
+            return userRoles;
+        }
+
         static List<SelectModel> RoleSelectModes = new List<SelectModel>()
         {
             new SelectModel()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
index fe09cc4..c97b27c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
@@ -14,6 +14,7 @@
 using SqlSugar;
 using ICacheService = WIDESEA_Core.Caches.ICacheService;
 using HslCommunication.WebSocket;
+using WIDESEA_Core.HostedService;
 
 namespace WIDESEA_SystemService
 {
@@ -74,8 +75,10 @@
                     });
 
                     _cacheService.AddOrUpdate(user.UserId.ToString(), token);
+                    if (PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == user.UserId) == null)
+                        PermissionDataHostService.UserRoles.AddRange(PermissionDataHostService.GetUserRoles(Db, user.UserId));
 
-                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserName, img = user.HeadImageUrl,trueNmae=user.UserTrueName });
+                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserName, img = user.HeadImageUrl, trueNmae = user.UserTrueName });
                 }
                 else
                 {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index d6f884a..c8b83e9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -43,7 +43,7 @@
 builder.Services.AddWebSocketSetup();
 builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
 builder.Services.AddDbSetup();//Db 启动服务
-builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+//builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
 builder.Services.AddHostedService<PermissionDataHostService>();//应用初始化服务注入
 builder.Services.AddAutoMapperSetup();
 

--
Gitblit v1.9.3