浏览代码

完成个人权限控制

yuanrf 2 年之前
父节点
当前提交
a6d032c8ef

+ 163 - 3
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -1,4 +1,6 @@
-using System.Collections;
+using OASystem.Infrastructure.Repositories.System;
+using System.Collections;
+using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 
 namespace OASystem.API.Controllers
 namespace OASystem.API.Controllers
 {
 {
@@ -22,11 +24,13 @@ namespace OASystem.API.Controllers
         private readonly SystemMenuAndFunctionRepository _SystemMenuAndFunctionRepository;
         private readonly SystemMenuAndFunctionRepository _SystemMenuAndFunctionRepository;
         private readonly JobPostAuthorityRepository _JobPostAuthorityRepository;
         private readonly JobPostAuthorityRepository _JobPostAuthorityRepository;
         private readonly JobPostRepository _jobRep;
         private readonly JobPostRepository _jobRep;
+        private readonly UserAuthorityRepository _UserAuthorityRepository;
 
 
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
-            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep)
+            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep
+            , UserAuthorityRepository userAuthorityRepository)
             
             
         {
         {
             _syscomRep = syscom;
             _syscomRep = syscom;
@@ -39,6 +43,7 @@ namespace OASystem.API.Controllers
             _PageFunctionPermissionRepository = pageFunctionPermissionRepository;
             _PageFunctionPermissionRepository = pageFunctionPermissionRepository;
             _SystemMenuAndFunctionRepository = systemMenuAndFunctionRepository;
             _SystemMenuAndFunctionRepository = systemMenuAndFunctionRepository;
             _JobPostAuthorityRepository = jobPostAuthorityRepository;
             _JobPostAuthorityRepository = jobPostAuthorityRepository;
+            _UserAuthorityRepository = userAuthorityRepository;
         }
         }
 
 
         #region 企业操作
         #region 企业操作
@@ -823,9 +828,45 @@ namespace OASystem.API.Controllers
 
 
             _JobPostAuthorityRepository.BeginTran();
             _JobPostAuthorityRepository.BeginTran();
             try
             try
-            {
+            {   //删除岗位
                 bool isdel = await _JobPostAuthorityRepository.DeleteAsync<Sys_JobPostAuthority>(x => x.JpId == dto.Jpid);
                 bool isdel = await _JobPostAuthorityRepository.DeleteAsync<Sys_JobPostAuthority>(x => x.JpId == dto.Jpid);
                 int UpRows = _JobPostAuthorityRepository.Adds<Sys_JobPostAuthority>(adds);
                 int UpRows = _JobPostAuthorityRepository.Adds<Sys_JobPostAuthority>(adds);
+
+                //获取所有职位员工
+                var jobUserAll = await QueryUserList(new UserDto { PortType = 2, JobPostId = dto.Jpid });
+                List<UserInfoWebView> users = null;
+                var QueryUserListApiResult = (((jobUserAll as OkObjectResult).Value) as OASystem.Domain.ViewModels.JsonView);
+                if (QueryUserListApiResult != null)
+                {
+                    if (QueryUserListApiResult.Code == 200)
+                    {
+                        users = QueryUserListApiResult.Data as List<UserInfoWebView>;
+                    }
+                }
+
+                if (users != null && users.Count > 0)
+                {
+                    List<Sys_UserAuthority> userAuth = null;
+                    foreach (var user in users)
+                    {
+                        //删除个人级岗位权限
+                        isdel = await _UserAuthorityRepository.DeleteAsync<Sys_UserAuthority>(x => x.IsTemp == 1 &&
+                        x.UId == user.UserId);
+
+                        userAuth = adds.Select(x=> new Sys_UserAuthority
+                        {
+                            CreateTime = DateTime.Now,
+                            CreateUserId = 235,
+                            FId = x.FId,
+                            SmId = x.SmId,
+                            UId = user.UserId,
+                            IsTemp = 1,
+                        }).ToList();
+
+                        //添加个人级别岗位
+                        int AddRows = _UserAuthorityRepository.Adds<Sys_UserAuthority>(userAuth);
+                    }
+                }
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {
@@ -837,6 +878,125 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(200, "成功", new { }));
             return Ok(JsonView(200, "成功", new { }));
         }
         }
 
 
+
+        /// <summary>
+        /// 获取员工权限
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public IActionResult QueryUserAuth(QueryUserAuthDto dto)
+        {
+            //选中的员工操作权限
+            var DBdata = _UserAuthorityRepository.QueryDto<Sys_UserAuthority, UserAuthorityView>(x => x.UId == dto.Userid).ToList();
+            var SystemMenuPermissionData = _SystemMenuPermissionRepository.QueryDto<Sys_SystemMenuPermission, SystemMenuPermissionView>(x => x.Mid == dto.moduleId).ToList();
+            if (SystemMenuPermissionData == null || SystemMenuPermissionData.Count() == 0)
+            {
+                return Ok(JsonView("暂无数据"));
+            }
+
+            //所有操作
+            var PageOperation = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, Sys_PageFunctionPermission>().ToList();
+
+            //获取所有关联页面
+            var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
+
+            ArrayList viewData = new ArrayList();
+            //组合页面数据
+            foreach (var item in SystemMenuPermissionData)
+            {
+                ArrayList ids = new ArrayList();
+                foreach (var viewop in PageOperation)
+                {
+                    var op = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.SmId == item.Id && x.FId == viewop.Id);
+                    if (op != null)
+                    {
+                        ids.Add(viewop.Id);
+                    }
+                }
+
+                //获取本员工拥有的权限
+                var DBwhere = DBdata.Where(x => x.SmId == item.Id && x.UId == dto.Userid).ToList();
+
+                viewData.Add(new
+                {
+                    Id = item.Id,
+                    Mid = item.Mid,
+                    Name = item.Name,
+                    SystemMenuCode = item.SystemMenuCode,
+                    opList = ids,
+                    selList = DBwhere.Select(x => x.FId)
+                });
+            }
+
+            return Ok(JsonView(200, "成功!", viewData));
+        }
+
+
+        /// <summary>
+        /// 保存员工权限
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> SaveUserAuth(SaveUserDto dto)
+        {
+            //获取所有关联页面
+            var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
+
+            List<Sys_UserAuthority> adds = new List<Sys_UserAuthority>();
+            foreach (var item in dto.Savejobs)
+            {
+                foreach (var fid in item.FIds)
+                {
+                    var whereobj = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.FId == fid && x.SmId == item.SmId);
+                    if (whereobj != null)
+                    {
+                        adds.Add(new Sys_UserAuthority
+                        {
+                            CreateTime = DateTime.Now,
+                            CreateUserId = 235,
+                            FId = fid,
+                            UId = dto.uid,
+                            SmId = item.SmId,
+                            IsTemp = 0
+                        });
+                    }
+                }
+            }
+
+            _JobPostAuthorityRepository.BeginTran();
+            try
+            {
+                List<Sys_UserAuthority> userAuth = null;
+                //删除个人级岗位权限
+                bool isdel = await _UserAuthorityRepository.DeleteAsync<Sys_UserAuthority>(x => x.IsTemp == 0 &&
+                x.UId == dto.uid);
+
+                userAuth = adds.Select(x => new Sys_UserAuthority
+                {
+                    CreateTime = DateTime.Now,
+                    CreateUserId = 235,
+                    FId = x.FId,
+                    SmId = x.SmId,
+                    UId = dto.uid,
+                    IsTemp = 0,
+                }).ToList();
+
+                //添加个人级别岗位
+                int AddRows = _UserAuthorityRepository.Adds<Sys_UserAuthority>(userAuth);
+            }
+            catch (Exception ex)
+            {
+                _JobPostAuthorityRepository.RollbackTran();
+                return Ok(JsonView("系统错误!"));
+            }
+
+            _JobPostAuthorityRepository.CommitTran();
+            return Ok(JsonView(200, "成功", new { }));
+        }
         #endregion
         #endregion
     }
     }
 }
 }

+ 0 - 15
OASystem/OASystem.Api/Program.cs

@@ -191,23 +191,8 @@ builder.Services.AddScoped<IMapper, Mapper>();
 
 
 #endregion
 #endregion
 
 
-#region ¿çÓòÅäÖÃ
-builder.Services.AddCors(c =>
-{
-    c.AddPolicy("AllowAllOrigins", policy =>
-    {
-        policy.AllowAnyOrigin()
-        .AllowAnyMethod()
-        .AllowAnyHeader();
-    });
-});
-#endregion
-
-
 var app = builder.Build();
 var app = builder.Build();
 
 
-app.UseCors("AllowAllOrigins");
-
 // Configure the HTTP request pipeline.
 // Configure the HTTP request pipeline.
 if (!app.Environment.IsDevelopment())
 if (!app.Environment.IsDevelopment())
 {
 {

+ 15 - 0
OASystem/OASystem.Domain/Dtos/System/QueryUserAuthDto.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.System
+{
+    public class QueryUserAuthDto
+    {
+        public int Userid { get; set; }
+
+        public int moduleId { get; set; }
+    }
+}

+ 19 - 0
OASystem/OASystem.Domain/Dtos/System/SaveJobDto.cs

@@ -8,13 +8,32 @@ namespace OASystem.Domain.Dtos.System
 {
 {
     public class SaveJobDto
     public class SaveJobDto
     {
     {
+        /// <summary>
+        /// 职位id
+        /// </summary>
         public int Jpid { get; set; }
         public int Jpid { get; set; }
         public List<savejob> Savejobs { get; set; }
         public List<savejob> Savejobs { get; set; }
     }
     }
 
 
+    public class SaveUserDto
+    {
+        /// <summary>
+        /// 员工id
+        /// </summary>
+        public int uid { get; set; }
+        public List<savejob> Savejobs { get; set; }
+    }
+
     public class savejob
     public class savejob
     {
     {
+        /// <summary>
+        /// 页面id
+        /// </summary>
         public int SmId { get; set; }
         public int SmId { get; set; }
+
+        /// <summary>
+        /// 功能id
+        /// </summary>
         public List<int> FIds { get; set; }
         public List<int> FIds { get; set; }
     }
     }
 }
 }

+ 6 - 0
OASystem/OASystem.Domain/Entities/System/Sys_UserAuthority.cs

@@ -27,5 +27,11 @@ namespace OASystem.Domain.Entities.System
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int FId { get; set; }
         public int FId { get; set; }
+
+        /// <summary>
+        /// 是否由职位模板导入
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否由职位模板导入", IsNullable = true, ColumnDataType = "int")]
+        public int IsTemp { get; set; }
     }
     }
 }
 }

+ 33 - 0
OASystem/OASystem.Domain/ViewModels/System/UserAuthorityView.cs

@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.System
+{
+    public class UserAuthorityView
+    {
+        /// <summary>
+        /// 数据id
+        /// </summary>
+        public int ID { get; set; }
+        /// 用户Id
+        /// </summary>
+        public int UId { get; set; }
+        /// <summary>
+        /// 页面权限Id
+        /// </summary>
+        public int SmId { get; set; }
+        /// <summary>
+        /// 页面功能Id
+        /// </summary>
+        public int FId { get; set; }
+
+        /// <summary>
+        /// 是否由职位模板导入
+        /// </summary>
+        public int IsTemp { get; set; }
+
+    }
+}

+ 10 - 0
OASystem/OASystem.Infrastructure/Repositories/System/UserAuthorityRepository.cs

@@ -0,0 +1,10 @@
+
+namespace OASystem.Infrastructure.Repositories.System
+{
+    public class UserAuthorityRepository : BaseRepository<Sys_UserAuthority, UserAuthorityView>
+    {
+        public UserAuthorityRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+        }
+    }
+}

+ 6 - 0
OASystem/_Doc/OA2023数据字典.docx

@@ -494,6 +494,12 @@ Null
 
 
 页面功能Id
 页面功能Id
 页面功能表Id
 页面功能表Id
+IsTemp
+Int
+Null
+
+是否由职位模板导入
+是否由职位模板导入
 
 
 9) 岗位权限表:Sys_JobPostAuthority(新增)
 9) 岗位权限表:Sys_JobPostAuthority(新增)
                                    字段名
                                    字段名