Commit 914f1c90 authored by 黄奎's avatar 黄奎

新增权限

parent 8c5dcb30
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum
{
/// <summary>
/// 权限枚举
/// 功能权限枚举
/// </summary>
public enum PermissionEnum
public enum FunctionPermissionEnum
{
#region 系统相关权限
/// <summary>
/// 系统级别权限【比如超级管理员-10001】
/// </summary>
[EnumField("系统级权限")]
System =10000,
System = 10000,
#endregion
#region 订单相关权限
/// <summary>
/// 订单相关权限【订单修改-20001】
/// </summary>
[EnumField("订单相关权限")]
Order =20000,
Order = 20000,
#endregion
}
}
}
\ No newline at end of file
using Edu.Common.Enum;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.System
{
/// <summary>
/// 权限控制表实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_ActionMenu
{
/// <summary>
/// 主键
/// </summary>
public int Id { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
public string ActionName { get; set; }
/// <summary>
/// 菜单URL
/// </summary>
public string MenuUrl { get; set; }
/// <summary>
/// 状态(参考枚举)
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 权限编码
/// </summary>
public string ActionCode { get; set; }
/// <summary>
/// 权限备注
/// </summary>
public string Remarks { get; set; }
}
}
\ No newline at end of file
using System;
using Edu.Common.Enum;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.System
{
/// <summary>
/// 角色功能菜单表实体类
/// 角色功能权限表实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Role_ActionMenu
public class RB_Role_FunctionPermission
{
/// <summary>
/// 主键编号
......@@ -23,6 +24,11 @@ namespace Edu.Model.Entity.System
/// <summary>
/// 功能菜单id
/// </summary>
public int Action_Id { get; set; }
public FunctionPermissionEnum Action_Id { get; set; }
/// <summary>
/// 权限名称描述
/// </summary>
public string ActionName { get; set; }
}
}
......@@ -26,6 +26,11 @@ namespace Edu.Model.ViewModel.System
/// 菜单图标
/// </summary>
public string MenuIcon { get; set; }
/// <summary>
/// 是否选中
/// </summary>
public bool IsChecked { get; set; }
/// <summary>
/// 子菜单列表
......
using Edu.Model.Entity.System;
namespace Edu.Model.ViewModel.System
{
/// <summary>
/// 权限控制表视图实体类
/// </summary>
public class RB_ActionMenu_ViewModel : RB_ActionMenu
{
}
}
\ No newline at end of file
......@@ -3,10 +3,10 @@
namespace Edu.Model.ViewModel.System
{
/// <summary>
/// 角色功能菜单表视图实体类
/// 角色功能权限表视图实体类
/// </summary>
public class RB_Role_ActionMenu_ViewModel : RB_Role_ActionMenu
public class RB_Role_FunctionPermission_ViewModel : RB_Role_FunctionPermission
{
}
}
\ No newline at end of file
using Edu.Common.Enum;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.System
{
/// <summary>
/// 角色功能权限树形列表
/// </summary>
public class RoleFunctionPermissionTree_ViewModel
{
/// <summary>
/// 角色id
/// </summary>
public int Role_Id { get; set; }
/// <summary>
/// 分类编号【取枚举值得前两位】
/// </summary>
public string CategoryId { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// 功能菜单id
/// </summary>
public int Action_Id { get; set; }
/// <summary>
/// 权限名称描述
/// </summary>
public string ActionName { get; set; }
/// <summary>
/// 是否选中
/// </summary>
public bool IsChecked { get; set; }
/// <summary>
/// 下级列表
/// </summary>
public List<RoleFunctionPermissionTree_ViewModel> SubList { get; set; }
}
}
using Edu.Common.Enum;
using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum;
using Edu.Model.ViewModel.System;
using Edu.Repository.System;
using System;
using System.Collections.Generic;
using System.Linq;
using VT.FW.DB;
namespace Edu.Module.System
......@@ -16,6 +19,21 @@ namespace Edu.Module.System
/// </summary>
private readonly RB_RoleRepository roleRepository = new RB_RoleRepository();
/// <summary>
/// 角色菜单权限仓储层对象
/// </summary>
private readonly RB_Role_PermissionRepository rolePermissionRepository = new RB_Role_PermissionRepository();
/// <summary>
/// 角色数据权限仓储层对象
/// </summary>
private readonly RB_Role_FunctionPermissionRepository roleFunctionPermissionRepository = new RB_Role_FunctionPermissionRepository();
/// <summary>
/// 系统菜单处理对象
/// </summary>
private readonly MenuModule menuModule = new MenuModule();
/// <summary>
/// 获取角色列表
/// </summary>
......@@ -53,7 +71,6 @@ namespace Edu.Module.System
{
{nameof(RB_Role_ViewModel.RoleName),model.RoleName.Trim() },
{nameof(RB_Role_ViewModel.RoleIntro),model.RoleIntro },
{nameof(RB_Role_ViewModel.RoleAuth),model.RoleAuth },
{nameof(RB_Role_ViewModel.Status),model.Status },
};
flag = roleRepository.Update(fileds, new WhereHelper(nameof(RB_Role_ViewModel.RoleId), model.RoleId));
......@@ -83,7 +100,7 @@ namespace Edu.Module.System
/// <param name="RoleId"></param>
/// <param name="Status"></param>
/// <returns></returns>
public bool SetRoleStatusModule(object RoleId,int Status)
public bool SetRoleStatusModule(object RoleId, int Status)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
......@@ -92,5 +109,174 @@ namespace Edu.Module.System
bool flag = roleRepository.Update(fileds, new WhereHelper(nameof(RB_Role_ViewModel.RoleId), RoleId));
return flag;
}
/// <summary>
/// 获取角色权限信息
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public object GetRolePermissionModule(int roleId)
{
//角色菜单权限列表
List<RB_Role_Permission_ViewModel> rolePermissionList = new List<RB_Role_Permission_ViewModel>();
//角色功能权限列表
List<RB_Role_FunctionPermission_ViewModel> roleFunctionList = new List<RB_Role_FunctionPermission_ViewModel>();
if (roleId > 0)
{
rolePermissionList = GetRolePermissionListModule(new RB_Role_Permission_ViewModel() { Role_Id = roleId });
roleFunctionList = GetRoleFunctionPermissionListModule(new RB_Role_FunctionPermission_ViewModel() { Role_Id = roleId });
}
//菜单列表
var menuList = menuModule.GetTreeMenuModule(new RB_Menu_ViewModel());
if (menuList != null && menuList.Count > 0)
{
foreach (var item in menuList)
{
item.IsChecked = rolePermissionList?.Where(qitem => qitem.Menu_Id == item.MenuId)?.Count() > 0;
if (item.SubList != null && item.SubList.Count > 0)
{
foreach (var subItem in item.SubList)
{
subItem.IsChecked = rolePermissionList?.Where(qitem => qitem.Menu_Id == subItem.MenuId)?.Count() > 0;
if (subItem.SubList != null && subItem.SubList.Count > 0)
{
foreach (var childItem in subItem.SubList)
{
childItem.IsChecked = rolePermissionList?.Where(qitem => qitem.Menu_Id == childItem.MenuId)?.Count() > 0;
}
}
}
}
}
}
var functionList = new List<RoleFunctionPermissionTree_ViewModel>();
List<RoleFunctionPermissionTree_ViewModel> resultRoleFunctionTreeList = new List<RoleFunctionPermissionTree_ViewModel>();
//获取枚举中权限列表
foreach (var item in Common.Plugin.EnumHelper.EnumToList(typeof(FunctionPermissionEnum)))
{
resultRoleFunctionTreeList.Add(new RoleFunctionPermissionTree_ViewModel()
{
Action_Id = item.Id,
ActionName = item.Name,
CategoryId = item.Id.ToString().Substring(0, 2),
CategoryName = GetCategoryName(item.Id.ToString().Substring(0, 2)),
IsChecked = false,
Role_Id = roleId,
});
}
if (resultRoleFunctionTreeList != null && resultRoleFunctionTreeList.Count > 0)
{
//根据枚举前两位分类
var categoryList = resultRoleFunctionTreeList.GroupBy(qitem => new { qitem.CategoryId,qitem.CategoryName }).Select(qitem => new { qitem.Key.CategoryId,qitem.Key.CategoryName });
foreach (var item in categoryList)
{
var cateModel = resultRoleFunctionTreeList.Where(qitem => qitem.CategoryId == item.CategoryId).Min();
var rootModel = new RoleFunctionPermissionTree_ViewModel()
{
Action_Id = Convert.ToInt32(cateModel.CategoryId),
ActionName = item.CategoryName,
CategoryId = item.CategoryId,
CategoryName = item.CategoryName,
IsChecked = false,
Role_Id = roleId,
SubList = resultRoleFunctionTreeList?.Where(qitem => qitem.CategoryId == item.CategoryId)?.ToList() ?? new List<RoleFunctionPermissionTree_ViewModel>()
};
if (rootModel != null && rootModel.SubList.Count > 0)
{
foreach (var subItem in rootModel.SubList)
{
subItem.IsChecked = roleFunctionList?.Where(qitem => (int)qitem.Action_Id == subItem.Action_Id)?.Count() > 0;
}
}
functionList.Add(rootModel);
}
}
var obj = new
{
menuList,
functionList
};
return obj;
}
/// <summary>
/// 获取功能权限分类名称
/// </summary>
/// <param name="categoryId"></param>
/// <returns></returns>
private string GetCategoryName(string categoryId)
{
string str = "默认";
switch (categoryId)
{
case "10": str = "系统"; break;
case "20": str = "订单"; break;
}
return str;
}
/// <summary>
/// 新增修改角色菜单权限
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
[TransactionCallHandler]
public bool SetRolePermissionModule(List<RB_Role_Permission_ViewModel> list)
{
bool flag = false;
if (list != null && list.Count > 0)
{
rolePermissionRepository.DeleteOne(new WhereHelper(nameof(RB_Role_Permission_ViewModel.Role_Id), list[0].Role_Id));
foreach (var item in list)
{
item.ID = 0;
flag = rolePermissionRepository.Insert(item);
}
}
return flag;
}
/// <summary>
/// 获取角色菜单权限列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Role_Permission_ViewModel> GetRolePermissionListModule(RB_Role_Permission_ViewModel query)
{
return rolePermissionRepository.GetRolePermissionListRepository(query);
}
/// <summary>
/// 新增修改角色功能权限
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
[TransactionCallHandler]
public bool SetRoleFunctionPermissionModule(List<RB_Role_FunctionPermission_ViewModel> list)
{
bool flag = false;
if (list != null && list.Count > 0)
{
roleFunctionPermissionRepository.DeleteOne(new WhereHelper(nameof(RB_Role_FunctionPermission_ViewModel.Role_Id), list[0].Role_Id));
foreach (var item in list)
{
item.ID = 0;
flag = roleFunctionPermissionRepository.Insert(item);
}
}
return flag;
}
/// <summary>
/// 获取角色功能菜单列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Role_FunctionPermission_ViewModel> GetRoleFunctionPermissionListModule(RB_Role_FunctionPermission_ViewModel query)
{
return roleFunctionPermissionRepository.GetRoleFunctionPermissionListRepository(query);
}
}
}
\ No newline at end of file
using Edu.Model.Entity.System;
using Edu.Model.ViewModel.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.System
{
/// <summary>
/// 权限控制表仓储层
/// </summary>
public class RB_ActionMenuRepository : BaseRepository<RB_ActionMenu>
{
/// <summary>
/// 获取权限控制分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_ActionMenu_ViewModel> GetActionMenuPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_ActionMenu_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_ActionMenu
WHERE 1=1
");
if (query != null)
{
if (!string.IsNullOrEmpty(query.ActionCode))
{
builder.AppendFormat(" AND {0} LIKE @ActionCode ", nameof(RB_ActionMenu_ViewModel.ActionCode));
parameters.Add("ActionCode", "%" + query.ActionCode.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.ActionName))
{
builder.AppendFormat(" AND {0} LIKE @ActionName ", nameof(RB_ActionMenu_ViewModel.ActionName));
parameters.Add("ActionName", "%" + query.ActionName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.MenuUrl))
{
builder.AppendFormat(" AND {0} LIKE @MenuUrl ", nameof(RB_ActionMenu_ViewModel.MenuUrl));
parameters.Add("MenuUrl", "%" + query.MenuUrl.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.Remarks))
{
builder.AppendFormat(" AND {0} LIKE @Remarks ", nameof(RB_ActionMenu_ViewModel.Remarks));
parameters.Add("Remarks", "%" + query.Remarks.Trim() + "%");
}
if (query.Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_ActionMenu_ViewModel.Id), query.Id);
}
}
return GetPage<RB_ActionMenu_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
/// <summary>
/// 获取权限控制列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_ActionMenu_ViewModel> GetActionMenuListRepository(RB_ActionMenu_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_ActionMenu
WHERE 1=1
");
if (query != null)
{
if (!string.IsNullOrEmpty(query.ActionCode))
{
builder.AppendFormat(" AND {0} LIKE @ActionCode ", nameof(RB_ActionMenu_ViewModel.ActionCode));
parameters.Add("ActionCode", "%" + query.ActionCode.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.ActionName))
{
builder.AppendFormat(" AND {0} LIKE @ActionName ", nameof(RB_ActionMenu_ViewModel.ActionName));
parameters.Add("ActionName", "%" + query.ActionName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.MenuUrl))
{
builder.AppendFormat(" AND {0} LIKE @MenuUrl ", nameof(RB_ActionMenu_ViewModel.MenuUrl));
parameters.Add("MenuUrl", "%" + query.MenuUrl.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.Remarks))
{
builder.AppendFormat(" AND {0} LIKE @Remarks ", nameof(RB_ActionMenu_ViewModel.Remarks));
parameters.Add("Remarks", "%" + query.Remarks.Trim() + "%");
}
if (query.Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_ActionMenu_ViewModel.Id), query.Id);
}
}
return Get<RB_ActionMenu_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
......@@ -8,9 +8,9 @@ using System.Text;
namespace Edu.Repository.System
{
/// <summary>
/// 角色功能菜单表仓储层
/// 角色功能权限表仓储层
/// </summary>
public class RB_Role_ActionMenuRepository : BaseRepository<RB_Role_ActionMenu>
public class RB_Role_FunctionPermissionRepository : BaseRepository<RB_Role_FunctionPermission>
{
/// <summary>
/// 获取角色功能菜单分页列表
......@@ -20,30 +20,30 @@ namespace Edu.Repository.System
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Role_ActionMenu_ViewModel> GetRoleActionMenuPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Role_ActionMenu_ViewModel query)
public List<RB_Role_FunctionPermission_ViewModel> GetRoleFunctionPermissionPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Role_FunctionPermission_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_Role_ActionMenu
FROM RB_Role_FunctionPermission
WHERE 1=1
");
if (query != null)
{
if (query.ID > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.ID), query.ID);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.ID), query.ID);
}
if (query.Action_Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.Action_Id), query.Action_Id);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.Action_Id), query.Action_Id);
}
if (query.Role_Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.Role_Id), query.Role_Id);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.Role_Id), query.Role_Id);
}
}
return GetPage<RB_Role_ActionMenu_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
return GetPage<RB_Role_FunctionPermission_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
......@@ -51,30 +51,30 @@ WHERE 1=1
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Role_ActionMenu_ViewModel> GetRoleActionMenuListRepository(RB_Role_ActionMenu_ViewModel query)
public List<RB_Role_FunctionPermission_ViewModel> GetRoleFunctionPermissionListRepository(RB_Role_FunctionPermission_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_Role_ActionMenu
FROM RB_Role_FunctionPermission
WHERE 1=1
");
if (query != null)
{
if (query.ID > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.ID), query.ID);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.ID), query.ID);
}
if (query.Action_Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.Action_Id), query.Action_Id);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.Action_Id), query.Action_Id);
}
if (query.Role_Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_ActionMenu_ViewModel.Role_Id), query.Role_Id);
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Role_FunctionPermission_ViewModel.Role_Id), query.Role_Id);
}
}
return Get<RB_Role_ActionMenu_ViewModel>(builder.ToString()).ToList();
return Get<RB_Role_FunctionPermission_ViewModel>(builder.ToString()).ToList();
}
}
}
......@@ -7,12 +7,12 @@ using System.Text;
namespace Edu.Repository.System
{
/// <summary>
/// 角色权限表仓储层
/// 角色菜单权限表仓储层
/// </summary>
public class RB_Role_PermissionRepository : BaseRepository<RB_Role_Permission>
{
/// <summary>
/// 获取角色权限分页列表
/// 获取角色菜单权限分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
......@@ -46,7 +46,7 @@ WHERE 1=1
}
/// <summary>
/// 获取角色权限列表
/// 获取角色菜单权限列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
......
using System;
using System.Collections.Generic;
using System.Linq;
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Plugin;
......@@ -89,19 +91,6 @@ namespace Edu.WebApi.Controllers.Public
return ApiResult.Success(data: list);
}
/// <summary>
/// 获取树形菜单列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetTreeMenu()
{
var query = Common.Plugin.JsonHelper.DeserializeObject<RB_Menu_ViewModel>(RequestParm.Msg.ToString());
var list = menuModule.GetTreeMenuModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 添加修改菜单
/// </summary>
......@@ -221,5 +210,22 @@ namespace Edu.WebApi.Controllers.Public
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
/// <summary>
/// 获取角色权限
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetRolePermission()
{
var roleId = base.ParmJObj.GetInt("Role_Id");
if (roleId <= 0)
{
return ApiResult.ParamIsNull(message:"请传递角色编号");
}
var obj = roleModule.GetRolePermissionModule(roleId);
return ApiResult.Success(data: obj);
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment