Browse Source

重构权限初始化和FeeBasePerm结构

在 `GroupsController.cs` 中,删除了手动添加查看、编辑权限的代码,改为调用 `InitPerm` 方法来初始化权限。

在 `appsettings.json` 中,修改了 `FeeBasePerm` 的结构,将其改为包含部门和用户列表的对象。

在 `EnterExitCostDraftView.cs` 中,添加了 `PermissionViewUserview` 类。

在 `EnterExitCostView.cs` 中,添加了 `FeeBasePermView` 类,用于表示出入境费用明细权限特定基础人员。

在 `EnterExitCostDraftRepository.cs` 和 `EnterExitCostRepository.cs` 中,修改了 `PermissionViewUsersAsync` 方法以适应新的 `FeeBasePerm` 结构,并添加了 `InitPerm` 方法来初始化权限。
LEIYI 2 months ago
parent
commit
30edf7e98c

+ 1 - 18
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -8975,22 +8975,7 @@ FROM
                 }
 
                 //默认添加查看、编辑权限(创建人、自己) 
-                var feeBasePermIds = new List<int>() { dto.UserId };
-
-                var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
-                if (feeBasePerm.Any()) feeBasePermIds.AddRange(feeBasePerm.Select(x => x.Id).ToList());
-
-                var permissions = new List<Grp_EnterExitCostPermission>();
-                foreach (var userId1 in feeBasePermIds)
-                {
-                    permissions.Add(new Grp_EnterExitCostPermission()
-                    {
-                        GroupId = dto.GroupId,
-                        UserId = userId1,
-                        Permission = 1,
-                        CreateUserId = dto.UserId,
-                    });
-                }
+                await _enterExitCostRep.InitPerm(dto.GroupId,dto.UserId);
 
                 var dayDatas = _sqlSugar.Queryable<Grp_DayAndCostDraft>().Where(x => x.IsDel == 0 && x.ParentId == draftId).ToList();
                 var otherDatas = _sqlSugar.Queryable<Grp_DayOtherPriceDraft>().Where(x => x.IsDel == 0 && x.ParentId == draftId).ToList();
@@ -9040,8 +9025,6 @@ FROM
                     return Ok(JsonView(false, "草稿数据导入失败!"));
                 }
 
-                if (permissions.Any()) _sqlSugar.Insertable(permissions).ExecuteCommand();
-
                 if (newDayDatas.Any()) _sqlSugar.Insertable(newDayDatas).ExecuteCommand();
 
                 if (newOtherDatas.Any()) _sqlSugar.Insertable(newOtherDatas).ExecuteCommand();

+ 22 - 12
OASystem/OASystem.Api/appsettings.json

@@ -384,20 +384,30 @@
   //出入境费用明细权限特定基础人员
   "FeeBasePerm": [
     {
-      "Id": 149,
-      "Name": "王鸽"
-    },
-    {
-      "Id": 330,
-      "Name": "刘琪"
-    },
-    {
-      "Id": 334,
-      "Name": "朱琳"
+      "Dept": "IntlDplmcy", //国交部
+      "Users": [
+        {
+          "Id": 149,
+          "Name": "王鸽"
+        },
+        {
+          "Id": 330,
+          "Name": "刘琪"
+        },
+        {
+          "Id": 334,
+          "Name": "朱琳"
+        }
+      ]
     },
     {
-      "Id": 95,
-      "Name": "舒庆"
+      "Dept": "MktStrat", //市场部
+      "Users": [
+        {
+          "Id": 95,
+          "Name": "舒庆"
+        }
+      ]
     }
   ]
 }

+ 3 - 0
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostDraftView.cs

@@ -13,6 +13,9 @@ namespace OASystem.Domain.ViewModels.Groups
     {
     }
 
+    
+
+
     public class PermissionViewUserview
     {
         public int Id { get; set; }

+ 17 - 0
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs

@@ -24,6 +24,23 @@ namespace OASystem.Domain.ViewModels.Groups
         public string IsNull { get; set; }
     }
 
+    /// <summary>
+    /// 出入境费用明细权限特定基础人员
+    /// </summary>
+    public class FeeBasePermView
+    {
+        /// <summary>
+        /// 部门
+        /// </summary>
+        public string Dept { get; set; }
+
+        /// <summary>
+        /// 人员列表
+        /// </summary>
+        public PermissionViewUserview[] Users { get; set; }
+    }
+
+
     /// <summary>
     /// 出入境国家(城市)费用标准 View
     /// </summary>

+ 92 - 25
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostDraftRepository.cs

@@ -10,6 +10,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using AutoMapper;
+using EyeSoft.Collections.Generic;
 
 namespace OASystem.Infrastructure.Repositories.Groups
 {
@@ -28,7 +29,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
             _mapper = mapper;
         }
 
-
         /// <summary>
         /// 权限用户基础数据
         /// </summary>
@@ -50,16 +50,90 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
 
             //添加特定人员
-            var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
             if (feeBasePerm.Any())
             {
-                viewPermissionData.AddRange(feeBasePerm);
+                foreach (var item in feeBasePerm)
+                {
+                    if (item.Users.Any())
+                    {
+                        viewPermissionData.AddRange(item.Users);
+                    }
+                }
+
                 return viewPermissionData.GroupBy(x => x.Id).Select(x => x.First()).OrderBy(x => x.Id).ToList();
             }
 
             return viewPermissionData;
         }
 
+        /// <summary>
+        /// 初始化配置权限
+        /// </summary>
+        /// <param name="draftId"></param>
+        /// <param name="currUserId"></param>
+        /// <returns></returns>
+        public async Task<bool> InitPerm(int draftId, int currUserId)
+        {
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
+            var intlDplmcyBasePerm = new List<PermissionViewUserview>(); //国交部
+            var mktStratBasePerm = new List<PermissionViewUserview>();   //市场部
+
+            if (feeBasePerm.Any())
+            {
+                var intlDplmcyData = feeBasePerm.Find(x => x.Dept.Equals("IntlDplmcy"));
+                if (intlDplmcyData != null) if (intlDplmcyData.Users.Any()) intlDplmcyBasePerm = intlDplmcyData.Users.ToList();
+
+                var mktStratData = feeBasePerm.Find(x => x.Dept.Equals("MktStrat"));
+                if (mktStratData != null) if (mktStratData.Users.Any()) mktStratBasePerm = mktStratData.Users.ToList();
+            }
+
+            /*
+             * 权限分配规则
+             * 刘琪、王鸽、朱琳的账号:默认只能刘、王、朱查看
+             * 舒庆的账号 默认只能舒、刘、王、朱查看
+             * 其他销售 默认只能自己、舒、刘、王、朱查看
+             */
+            var feeBasePermIds = new List<int>();
+            if (intlDplmcyBasePerm.Any(x => x.Id == currUserId))
+            {
+                feeBasePermIds = intlDplmcyBasePerm.Select(x => x.Id).ToList();
+            }
+            else if (mktStratBasePerm.Any(x => x.Id == currUserId))
+            {
+                feeBasePermIds.AddRange(mktStratBasePerm.Select(x => x.Id).ToList());
+                feeBasePermIds.AddRange(intlDplmcyBasePerm.Select(x => x.Id).ToList());
+            }
+            else
+            {
+                feeBasePermIds.Add(currUserId);
+                feeBasePermIds.AddRange(mktStratBasePerm.Select(x => x.Id).ToList());
+                feeBasePermIds.AddRange(intlDplmcyBasePerm.Select(x => x.Id).ToList());
+            }
+
+            if (feeBasePermIds.Any())
+            {
+                var permissions = new List<Grp_EnterExitCostDraftPermission>();
+                foreach (var userId in feeBasePermIds)
+                {
+                    permissions.Add(new Grp_EnterExitCostDraftPermission()
+                    {
+                        DraftId = draftId,
+                        UserId = userId,
+                        Permission = 1,
+                        CreateUserId = userId,
+                    });
+                }
+
+                if (permissions.Any())
+                {
+                    await _sqlSugar.Insertable(permissions).ExecuteReturnIdentityAsync();
+                    return true;
+                }
+            }
+            return false;
+        }
+
         /// <summary>
         /// 出入境费用草稿 --> 权限验证
         /// </summary>
@@ -73,8 +147,18 @@ namespace OASystem.Infrastructure.Repositories.Groups
             var permissionIds = new List<int>() { 1, 2, 3, 4, 5 };
             if (!permissionIds.Contains(permission)) return false;
 
-            var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
-            if (feeBasePerm.Any(x => x.Id == userId)) return true;
+            var feeBasePermUserIds = new List<int>();
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
+            if (feeBasePerm.Any())
+            {
+                var intlDplmcyData = feeBasePerm.Find(x => x.Dept.Equals("IntlDplmcy"));
+                if (intlDplmcyData != null) if (intlDplmcyData.Users.Any()) feeBasePermUserIds.AddRange(intlDplmcyData.Users.Select(x => x.Id).ToList());
+
+                var mktStratData = feeBasePerm.Find(x => x.Dept.Equals("MktStrat"));
+                if (mktStratData != null) if (mktStratData.Users.Any()) feeBasePermUserIds.AddRange(mktStratData.Users.Select(x => x.Id).ToList());
+            }
+
+            if (feeBasePermUserIds.Any(x => x == userId)) return true;
 
             var info = await _sqlSugar.Queryable<Grp_EnterExitCostDraftPermission>()
                 .Where(it => it.DraftId == darftId && it.UserId == userId && it.Permission == permission)
@@ -87,7 +171,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <summary>
         /// 移动端操作权限验证
         /// </summary>
-        /// <param name="groupId"></param>
+        /// <param name="id"></param>
         /// <param name="currUserId"></param>
         /// <param name="permissionType">1 查看 2 编辑</param>
         /// <returns></returns>
@@ -308,25 +392,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         subData.Select(x => { x.Id = 0; return x; }).ToList();
                         dto.DayOtherPriceData.Select(x => { x.Id = 0; return x; }).ToList();
 
-                        //默认添加查看、编辑权限(创建人、自己) 
-                        var feeBasePermIds = new List<int>() { dto.UserId };
-
-                        var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
-                        if (feeBasePerm.Any()) feeBasePermIds.AddRange(feeBasePerm.Select(x => x.Id).ToList());
-
-                        var permissions = new List<Grp_EnterExitCostDraftPermission>();
-                        foreach (var userId in feeBasePermIds)
-                        {
-                            permissions.Add(new Grp_EnterExitCostDraftPermission()
-                            {
-                                DraftId = enterExitId,
-                                UserId = userId,
-                                Permission = 1,
-                                CreateUserId = dto.UserId,
-                            });
-                        }
-
-                        if (permissions.Any()) await _sqlSugar.Insertable(permissions).ExecuteReturnIdentityAsync();
+                        //初始化权限(查看、编辑)
+                        await InitPerm(enterExitId,dto.UserId);
                     }
 
                     if (enterExitId > 0)

+ 93 - 25
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs

@@ -1,5 +1,6 @@
 
 using AutoMapper;
+using EyeSoft.Collections.Generic;
 using EyeSoft.Runtime.InteropServices;
 using NPOI.SS.Formula.Functions;
 using OASystem.Domain;
@@ -54,16 +55,89 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
 
             //添加特定人员
-            var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
             if (feeBasePerm.Any())
             {
-                viewPermissionData.AddRange(feeBasePerm);
+                foreach (var item in feeBasePerm)
+                {
+                    if (item.Users.Any())
+                    {
+                        viewPermissionData.AddRange(item.Users);
+                    }
+                }
+
                 return viewPermissionData.GroupBy(x => x.Id).Select(x => x.First()).OrderBy(x => x.Id).ToList();
             }
 
             return viewPermissionData;
         }
 
+        /// <summary>
+        /// 初始化配置权限
+        /// </summary>
+        /// <param name="groupId"></param>
+        /// <param name="currUserId"></param>
+        /// <returns></returns>
+        public async Task<bool> InitPerm(int groupId,int currUserId)
+        {
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
+            var intlDplmcyBasePerm = new List<PermissionViewUserview>(); //国交部
+            var mktStratBasePerm = new List<PermissionViewUserview>();   //市场部
+
+            if (feeBasePerm.Any())
+            {
+                var intlDplmcyData = feeBasePerm.Find(x => x.Dept.Equals("IntlDplmcy"));
+                if (intlDplmcyData != null) if (intlDplmcyData.Users.Any()) intlDplmcyBasePerm = intlDplmcyData.Users.ToList();
+
+                var mktStratData = feeBasePerm.Find(x => x.Dept.Equals("MktStrat"));
+                if (mktStratData != null) if (mktStratData.Users.Any()) mktStratBasePerm = mktStratData.Users.ToList();
+            }
+
+            /*
+             * 权限分配规则
+             * 刘琪、王鸽、朱琳的账号:默认只能刘、王、朱查看
+             * 舒庆的账号 默认只能舒、刘、王、朱查看
+             * 其他销售 默认只能自己、舒、刘、王、朱查看
+             */
+            var feeBasePermIds = new List<int>();
+            if (intlDplmcyBasePerm.Any(x => x.Id == currUserId))
+            {
+                feeBasePermIds = intlDplmcyBasePerm.Select(x => x.Id).ToList();
+            }
+            else if (mktStratBasePerm.Any(x => x.Id == currUserId))
+            {
+                feeBasePermIds.AddRange(mktStratBasePerm.Select(x => x.Id).ToList());
+                feeBasePermIds.AddRange(intlDplmcyBasePerm.Select(x => x.Id).ToList());
+            }
+            else
+            {
+                feeBasePermIds.Add(currUserId);
+                feeBasePermIds.AddRange(mktStratBasePerm.Select(x => x.Id).ToList());
+                feeBasePermIds.AddRange(intlDplmcyBasePerm.Select(x => x.Id).ToList());
+            }
+
+            if (feeBasePermIds.Any())
+            {
+                var permissions = new List<Grp_EnterExitCostPermission>();
+                foreach (var userId in feeBasePermIds)
+                {
+                    permissions.Add(new Grp_EnterExitCostPermission()
+                    {
+                        GroupId = groupId,
+                        UserId = userId,
+                        Permission = 1,
+                        CreateUserId = currUserId,
+                    });
+                }
+
+                if (permissions.Any())
+                {
+                    await _sqlSugar.Insertable(permissions).ExecuteReturnIdentityAsync();
+                    return true;
+                }
+            }
+            return false;
+        }
 
         /// <summary>
         /// 出入境费用正式 --> 权限验证
@@ -80,8 +154,19 @@ namespace OASystem.Infrastructure.Repositories.Groups
             var permissionIds = new List<int>() { 1, 2, 3, 4, 5 };
             if (!permissionIds.Contains(permission)) return false;
 
-            var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
-            if (feeBasePerm.Any(x => x.Id == userId)) return true;
+            var feeBasePerm = AppSettingsHelper.Get<FeeBasePermView>("FeeBasePerm");
+            var feeBasePermUserIds = new List<int>(); 
+
+            if (feeBasePerm.Any())
+            {
+                var intlDplmcyData = feeBasePerm.Find(x => x.Dept.Equals("IntlDplmcy"));
+                if (intlDplmcyData != null) if (intlDplmcyData.Users.Any()) feeBasePermUserIds.AddRange(intlDplmcyData.Users.Select(x=>x.Id).ToList());
+
+                var mktStratData = feeBasePerm.Find(x => x.Dept.Equals("MktStrat"));
+                if (mktStratData != null) if (mktStratData.Users.Any()) feeBasePermUserIds.AddRange(mktStratData.Users.Select(x => x.Id).ToList());
+            }
+
+            if (feeBasePermUserIds.Any(x => x == userId)) return true;
 
             var info = await _sqlSugar.Queryable<Grp_EnterExitCostPermission>()
                 .Where(it => it.GroupId == groupId && it.UserId == userId && it.Permission == permission)
@@ -405,8 +490,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         }
 
                         var updateId = _sqlSugar.Updateable<Grp_EnterExitCost>(enterExitCost)
-                                                .IgnoreColumns(it => new { it.DeleteUserId, it.DeleteTime, it.CreateUserId, it.CreateTime, it.IsDel })
-                                                .ExecuteCommand();
+                            .IgnoreColumns(it => new { it.DeleteUserId, it.DeleteTime, it.CreateUserId, it.CreateTime, it.IsDel })
+                            .ExecuteCommand();
                         if (updateId > 0) enterExitId = enterExitCost.Id;
                         else
                         {
@@ -435,25 +520,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             return result;
                         }
 
-                        //默认添加查看、编辑权限(创建人、自己) 
-                        var feeBasePermIds = new List<int>() { dto.UserId };
-
-                        var feeBasePerm = AppSettingsHelper.Get<PermissionViewUserview>("FeeBasePerm");
-                        if (feeBasePerm.Any()) feeBasePermIds.AddRange(feeBasePerm.Select(x => x.Id).ToList());
-
-                        var permissions = new List<Grp_EnterExitCostPermission>();
-                        foreach (var userId in feeBasePermIds)
-                        {
-                            permissions.Add(new Grp_EnterExitCostPermission()
-                            {
-                                GroupId = enterExitCost.DiId,
-                                UserId = userId,
-                                Permission = 1,
-                                CreateUserId = dto.UserId,
-                            });
-                        }
-
-                        if (permissions.Any()) await _sqlSugar.Insertable(permissions).ExecuteReturnIdentityAsync();
+                        //初始化权限(查看、编辑) 
+                        await InitPerm(dto.DiId, dto.UserId);
                     }
 
                     if (enterExitId > 0)