From 6778ebf0295313ce2b56bba000cef96e18afedd4 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期五, 28 六月 2024 08:10:11 +0800
Subject: [PATCH] 角色、权限

---
 Wms/WMS.BLL/SysServer/RoleRightServer.cs |  149 +++++++++++++++++--------------------------------
 1 files changed, 52 insertions(+), 97 deletions(-)

diff --git a/Wms/WMS.BLL/SysServer/RoleRightServer.cs b/Wms/WMS.BLL/SysServer/RoleRightServer.cs
index 1f16667..63cc975 100644
--- a/Wms/WMS.BLL/SysServer/RoleRightServer.cs
+++ b/Wms/WMS.BLL/SysServer/RoleRightServer.cs
@@ -7,7 +7,10 @@
 using AutoMapper;
 using Model.ModelDto.SysDto;
 using Model.ModelVm.SysVm;
+using SqlSugar;
+using Utility;
 using WMS.DAL.SystemService;
+using WMS.Entity.Context;
 using WMS.Entity.SysEntity;
 using WMS.IBLL.ISysServer;
 using WMS.IDAL.ISysInterface;
@@ -23,13 +26,16 @@
         /// 渚濊禆娉ㄥ叆
         /// </summary>
         public IRoleRightRepository _rolerights { get; set; }
+        private static readonly SqlSugarScope Db = DataContext.Db;
+        private readonly UserManager _userManager;
         /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="roles"></param>
-        public RoleRightServer(IRoleRightRepository rolerights)
+        public RoleRightServer(IRoleRightRepository rolerights, UserManager userManager)
         {
             _rolerights = rolerights;
+            _userManager = userManager;
         }
 
         /// <summary>
@@ -37,28 +43,24 @@
         /// </summary>
         /// <param name="userId">鐢ㄦ埛Id</param>
         /// <returns></returns>
-        public List<RoleRightDto> GetRoleMenuList(int userId)
+        public async Task<List<RoleRightDto>> GetRoleMenuList()
         {
-            try
+            var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(m => m.Id == _userManager.UserId && m.IsDel == "0");
+            if (modUser == null)
             {
-                var user = _rolerights.GetRoleMenuList(userId);
-                return user;
+                throw Oops.Bah("鏈煡璇㈠埌鐧诲綍浜轰俊鎭�");
             }
-            catch (Exception e)
+            if (string.IsNullOrWhiteSpace(modUser.RoleNo))
             {
-                throw new Exception(e.Message);
+                throw Oops.Bah("鏈煡璇㈠埌鐧诲綍浜虹殑鎵�灞炶鑹蹭俊鎭�");
             }
-        }
-
-        /// <summary>
-        /// 鑾峰彇瑙掕壊鏉冮檺淇℃伅鍒楄〃
-        /// 澶氳〃锛氳鑹叉潈闄愩�佽鑹层�佽彍鍗�
-        /// </summary>
-        /// <returns></returns>
-        public List<RoleRightDto> GetRoleRightList()
-        {
-            List<RoleRightDto> roleRightDtos = _rolerights.GetRoleRightList();
-            return roleRightDtos;
+            return await Db.Queryable<SysRoleRight>()
+                            .LeftJoin<SysFunctionMenu>((a, b) => a.MenuNo == b.MenuNo)
+                            .LeftJoin<SysRoles>((a, b, c) => a.RoleNo == c.RoleNo)
+                            .Where((a, b, c) => a.IsDel == "0" && b.IsDel == "0" && c.IsDel == "0")
+                            .Where((a, b, c) => a.RoleNo == modUser.RoleNo)
+                            .Select<RoleRightDto>()
+                            .ToListAsync();
         }
 
         /// <summary>
@@ -66,21 +68,9 @@
         /// </summary>
         /// <param name="rolerightids">瑙掕壊鏉冮檺id</param>
         /// <returns></returns>
-        public List<SysRoleRight> GetRoleRightOneListById(int id)
+        public async Task<List<SysRoleRight>> GetRoleRightOneListById(int id)
         {
-            List<SysRoleRight> roleRights = _rolerights.GetRoleRightOneListById(id);
-            return roleRights;
-        }
-
-        /// <summary>
-        /// 鏍规嵁瑙掕壊鍙疯幏鍙栬鑹叉潈闄愪俊鎭垪琛�(鍗曡〃)
-        /// </summary>
-        /// <param name="roleno">瑙掕壊濂�</param>
-        /// <returns></returns>
-        public List<SysRoleRight> GetRoleRightOneListByNo(string roleno)
-        {
-            List<SysRoleRight> roleRights = _rolerights.GetRoleRightOneListByNo(roleno);
-            return roleRights;
+            return await Db.Queryable<SysRoleRight>().Where(s => s.IsDel == "0" && s.RoleNo == SqlFunc.Subqueryable<SysRoles>().Where(c => c.IsDel == "0" && c.Id == id).Select(c => c.RoleNo)).ToListAsync();
         }
 
         /// <summary>
@@ -90,79 +80,44 @@
         /// <param name="RoleNo">瑙掕壊鍙�</param>
         /// <returns></returns>
         /// <exception cref="Exception">鎹曡幏寮傚父</exception>
-        public async Task<int> InsertRoleRight(string MenuNo, string RoleNo, string userId)
+        public async Task InsertRoleRight(string MenuNo, string RoleNo)
         {
-            //鎹曡幏寮傚父
-            try
+            List<SysRoleRight> listRole = await Db.Queryable<SysRoleRight>().Where(s => s.RoleNo == RoleNo).ToListAsync();
+            if (listRole.Count > 0)
             {
-                //灏嗚彍鍗曞彿杩涜鍒嗗壊 瀛樺偍鏁扮粍涓�
-                var arr = MenuNo.Split(',');
-                int i = 0;
-                //鏌ヨ璇ヨ鑹叉槸鍚︽嫢鏈夋潈闄�
-                List<SysRoleRight> rolelist = GetRoleRightOneListByNo(RoleNo);
-                //鏈�
-                if (rolelist.Count > 0)
+                await Db.Deleteable<SysRoleRight>().Where(s => s.RoleNo == RoleNo).ExecuteCommandAsync();
+            }
+            var arr = MenuNo.Split(',');
+            var listRight = new List<SysRoleRight>();
+            //寰幆灏嗚彍鍗曟暟缁勫垎鍒姞鍏ュ埌鏁版嵁妯″瀷涓�
+            for (int j = 0; j < arr.Count(); j++)
+            {
+                SysRoleRight roleright = new SysRoleRight();
+                roleright.RoleNo = RoleNo;//瑙掕壊鍙�
+                roleright.MenuNo = arr[j];//鑿滃崟鍙�
+                roleright.CreateUser = _userManager.UserId;//鍒涘缓浜�
+                roleright.CreateTime = DateTime.Now;
+                listRight.Add(roleright);
+            }
+            await Db.Insertable(listRight).ExecuteCommandAsync();
+
+            //鍒犻櫎瀛愮骇瑙掕壊鏉冮檺淇℃伅銆�(瑙掕壊鏉冮檺鍑忓皯锛岃鑹蹭笅绾ф潈闄愬悓鏃跺噺灏�)
+            List<SysRoles> listRoleDel = await Db.Queryable<SysRoles>().Where(s => SqlFunc.Subqueryable<SysUserInfor>().Where(c => c.RoleNo == RoleNo && s.Id == c.Id).Any()).ToListAsync();
+            var listRoleNo = listRoleDel.Select(s => s.RoleNo).Distinct().ToList();
+            List<SysRoleRight> listRoleRight = await Db.Queryable<SysRoleRight>().Where(s => listRoleNo.Contains(s.RoleNo)).ToListAsync();
+            foreach (var item in listRoleDel)
+            {
+                var listChildRoleRight = listRoleRight.Where(s => s.RoleNo == item.RoleNo).ToList();
+                foreach (var right in listChildRoleRight)
                 {
-                    //鍒犻櫎璇ヨ鑹叉墍鏈夎彍鍗曚俊鎭�
-                    i = await DeleteRoleRight(RoleNo);
-                }
-                //鏃�
-                else if (rolelist.Count == 0)
-                {
-                    i = 1;
-                }
-                //寮�濮嬫柊澧炴潈闄�
-                if (i > 0)
-                {
-                    SysRoleRight roleright = new SysRoleRight();
-                    //寰幆灏嗚彍鍗曟暟缁勫垎鍒姞鍏ュ埌鏁版嵁妯″瀷涓�
-                    for (int j = 0; j < arr.Count(); j++)
+                    int first1 = Array.IndexOf(arr, right.MenuNo);
+                    if (first1 <= -1)
                     {
-                        roleright.RoleNo = RoleNo;//瑙掕壊鍙�
-                        roleright.MenuNo = arr[j];//鑿滃崟鍙�
-                        roleright.CreateUser = Convert.ToInt32(userId);//鍒涘缓浜�
-
-                        //鎴愬姛 灏嗚彍鍗曞彿鍜岃鑹插彿鏂板涓烘柊鐨勬暟鎹�
-                        i = await _rolerights.InsertRoleRight(roleright);
+                        await Db.Deleteable<SysRoleRight>().Where(s => s.RoleNo == item.RoleNo && s.MenuNo == right.MenuNo).ExecuteCommandAsync();
                     }
-                    //鍒犻櫎瀛愮骇瑙掕壊鏉冮檺淇℃伅銆�(瑙掕壊鏉冮檺鍑忓皯锛岃鑹蹭笅绾ф潈闄愬悓鏃跺噺灏�)
-                    await _rolerights.DeleteChildRoleRight(RoleNo, MenuNo);
-                    //杩斿洖
-                    return i;
-
                 }
-                else
-                {
-                    return i;
-                }
-            }
-            catch (Exception ex)
-            {
-                //鎶涘嚭寮傚父
-                throw new Exception("鏂板瑙掕壊鏉冮檺淇℃伅寮傚父", ex);
             }
         }
 
-        /// <summary>
-        /// 鍒犻櫎瑙掕壊鏉冮檺淇℃伅
-        /// </summary>
-        /// <param name="RoleNo">瑙掕壊鍙�</param>
-        /// <returns></returns>
-        /// <exception cref="Exception">鎹曡幏寮傚父</exception>
-        public async Task<int> DeleteRoleRight(string RoleNo)
-        {
-            //鎹曡幏寮傚父
-            try
-            {
-                //鍒犻櫎
-                int i = await _rolerights.DeleteRoleRight(RoleNo);
-                return i;
-            }
-            catch (Exception ex)
-            {
-                //鎶涘嚭寮傚父
-                throw new Exception("鍒犻櫎瑙掕壊鏉冮檺淇℃伅寮傚父", ex);
-            }
-        }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0