using DH.RBAC.Model.Sys; using DH.RBAC.Logic.Base; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DH.RBAC.Utility.Other; namespace DH.RBAC.Logic.Sys { public class SysRoleAuthorizeLogic : BaseLogic { /// /// 获得角色权限关系 /// /// public List GetList() { using (var db = GetInstance()) { return db.Queryable().ToList(); } } /// /// 根据角色ID获得角色权限关系 /// /// /// public List GetList(string roleId) { using (var db = GetInstance()) { return db.Queryable().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList(); } } /// /// 给某个角色授权 /// /// /// public void AppAuthorize(string operate, string roleId, params string[] perIds) { using (var db = GetInstance()) { try { db.BeginTran(); //获得所有权限 List permissionList = db.Queryable().Where(it => it.DeleteFlag == "N").ToList(); List perList = new List(); foreach (string perId in perIds) { string id = perId; while (!id.IsNullOrEmpty() && id != "0") { if (!perList.Contains(id)) { perList.Add(id); } id = permissionList.Where(it => it.Id == id).Select(it => it.ParentId).FirstOrDefault(); } } //删除旧的 List list2 = db.Queryable().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList(); list2.ForEach(it => { it.DeleteFlag = "Y"; }); db.Updateable(list2).ExecuteCommand(); List newRoleAuthorizeList = perList.Select(it => new SysRoleAuthorize { Id = UUID.StrSnowId, RoleId = roleId, ModuleId = it, DeleteFlag = "N", EnableFlag = "Y", CreateUserId = operate, CreateTime = DateTime.Now, ModifyUserId = operate, ModifyTime = DateTime.Now }).ToList(); db.Insertable(newRoleAuthorizeList).ExecuteCommand(); db.CommitTran(); } catch { db.RollbackTran(); } } } /// /// 给某个角色授权 /// /// /// public void Authorize(string roleId, string account, params string[] perIds) { using (var db = GetInstance()) { try { db.BeginTran(); //获得所有权限 List permissionList = db.Queryable().ToList(); List perList = new List(); foreach (string perId in perIds) { string id = perId; while (!id.IsNullOrEmpty() && id != "0") { if (!perList.Contains(id)) { perList.Add(id); } id = permissionList.Where(it => it.Id == id).Select(it => it.ParentId).FirstOrDefault(); } } //删除旧的 List list2 = db.Queryable().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList(); list2.ForEach(it => { it.DeleteFlag = "Y"; }); db.Updateable(list2).ExecuteCommand(); List newRoleAuthorizeList = perList.Select(it => new SysRoleAuthorize { Id = UUID.StrSnowId, RoleId = roleId, ModuleId = it, DeleteFlag = "N", EnableFlag = "Y", CreateUserId = account, CreateTime = DateTime.Now, ModifyUserId = account, ModifyTime = DateTime.Now }).ToList(); db.Insertable(newRoleAuthorizeList).ExecuteCommand(); db.CommitTran(); } catch { db.RollbackTran(); } } } /// /// 从角色权限关系中删除某个模块 /// /// /// public int Delete(params string[] moduleIds) { using (var db = GetInstance()) { List list = db.Queryable().Where(it => moduleIds.Contains(it.ModuleId)).ToList(); list.ForEach(it => { it.DeleteFlag = "Y"; }); return db.Updateable(list).ExecuteCommand(); } } } }