Browse Source

完成个人权限控制

yuanrf 1 year ago
parent
commit
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
 {
@@ -22,11 +24,13 @@ namespace OASystem.API.Controllers
         private readonly SystemMenuAndFunctionRepository _SystemMenuAndFunctionRepository;
         private readonly JobPostAuthorityRepository _JobPostAuthorityRepository;
         private readonly JobPostRepository _jobRep;
+        private readonly UserAuthorityRepository _UserAuthorityRepository;
 
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
-            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep)
+            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep
+            , UserAuthorityRepository userAuthorityRepository)
             
         {
             _syscomRep = syscom;
@@ -39,6 +43,7 @@ namespace OASystem.API.Controllers
             _PageFunctionPermissionRepository = pageFunctionPermissionRepository;
             _SystemMenuAndFunctionRepository = systemMenuAndFunctionRepository;
             _JobPostAuthorityRepository = jobPostAuthorityRepository;
+            _UserAuthorityRepository = userAuthorityRepository;
         }
 
         #region 企业操作
@@ -823,9 +828,45 @@ namespace OASystem.API.Controllers
 
             _JobPostAuthorityRepository.BeginTran();
             try
-            {
+            {   //删除岗位
                 bool isdel = await _JobPostAuthorityRepository.DeleteAsync<Sys_JobPostAuthority>(x => x.JpId == dto.Jpid);
                 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)
             {
@@ -837,6 +878,125 @@ namespace OASystem.API.Controllers
             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
     }
 }

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

@@ -191,23 +191,8 @@ builder.Services.AddScoped<IMapper, Mapper>();
 
 #endregion
 
-#region ¿çÓòÅäÖÃ
-builder.Services.AddCors(c =>
-{
-    c.AddPolicy("AllowAllOrigins", policy =>
-    {
-        policy.AllowAnyOrigin()
-        .AllowAnyMethod()
-        .AllowAnyHeader();
-    });
-});
-#endregion
-
-
 var app = builder.Build();
 
-app.UseCors("AllowAllOrigins");
-
 // Configure the HTTP request pipeline.
 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
     {
+        /// <summary>
+        /// 职位id
+        /// </summary>
         public int Jpid { 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
     {
+        /// <summary>
+        /// 页面id
+        /// </summary>
         public int SmId { get; set; }
+
+        /// <summary>
+        /// 功能id
+        /// </summary>
         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>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         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
+IsTemp
+Int
+Null
+
+是否由职位模板导入
+是否由职位模板导入
 
 9) 岗位权限表:Sys_JobPostAuthority(新增)
                                    字段名