From 2f14ad3cc01d575bfde0850bae05fded8acb7af6 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期日, 12 一月 2025 00:20:26 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs |   76 +++++++++++++++++++++++++++++++------
 1 files changed, 63 insertions(+), 13 deletions(-)

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 95b79b2..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"
@@ -30,7 +30,21 @@
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            List<ExpandoObject> roles = _dbContext.Db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
+            List<UserRole> userRoles = GetUserRoles(_dbContext.Db);
+            UserRoles = userRoles;
+            _cacheService.AddOrUpdate("UserRoles", userRoles.Serialize());
+
+            return Task.CompletedTask;
+        }
+
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            throw new NotImplementedException();
+        }
+
+        public static List<UserRole> GetUserRoles(ISqlSugarClient db)
+        {
+            List<ExpandoObject> roles = db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
             List<dynamic> roleDynamics = new List<dynamic>();
             foreach (var item in roles)
             {
@@ -38,13 +52,13 @@
             }
 
             List<dynamic> roleDataDynamics = new List<dynamic>();
-            List<ExpandoObject> roleDatas = _dbContext.Db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
+            List<ExpandoObject> roleDatas = db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
             foreach (var item in roleDatas)
             {
                 roleDataDynamics.Add(item);
             }
 
-            List<ExpandoObject> users = _dbContext.Db.Queryable("Sys_User", "x").Select(UserSelectModes).ToList();
+            List<ExpandoObject> users = db.Queryable("Sys_User", "x").Select(UserSelectModes).ToList();
 
             List<UserRole> userRoles = new List<UserRole>();
             foreach (var item in users)
@@ -70,19 +84,55 @@
                     });
                 }
             }
-
-            UserRoles = userRoles;
-            _cacheService.AddOrUpdate("UserRoles", userRoles.Serialize());
-
-            return Task.CompletedTask;
+            return userRoles;
         }
 
-        public Task StopAsync(CancellationToken cancellationToken)
+        public static List<UserRole> GetUserRoles(ISqlSugarClient db, int userId)
         {
-            throw new NotImplementedException();
+            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;
         }
 
-        List<SelectModel> RoleSelectModes = new List<SelectModel>()
+        static List<SelectModel> RoleSelectModes = new List<SelectModel>()
         {
             new SelectModel()
             {
@@ -98,7 +148,7 @@
             },
         };
 
-        List<SelectModel> UserSelectModes = new List<SelectModel>()
+        static List<SelectModel> UserSelectModes = new List<SelectModel>()
         {
             new SelectModel()
             {
@@ -118,7 +168,7 @@
             }
         };
 
-        List<SelectModel> RoleDataSelectModes = new List<SelectModel>()
+        static List<SelectModel> RoleDataSelectModes = new List<SelectModel>()
         {
             new SelectModel()
             {

--
Gitblit v1.9.3