.net core 实例教程(十七)角色管理相关接口实现代码
本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh
系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V
本文实现用户管理相关模块代码,主要有分页获取用户列表、增加用户、修改用户、删除用户以及批量删除用户接口。下面直接上代码。
一、仓储代码
(一)仓储接口代码
/// <summary>
/// 根据Id获取角色数据
/// </summary>
/// <param name="id">角色Id</param>
/// <returns></returns>
Task<SysRole?> FindOneRoleById(string id);
/// <summary>
/// 分页获取角色数据
/// </summary>
/// <param name="pageIndex">第几页</param>
/// <param name="pageSize">每页条数</param>
/// <param name="wheres">查询条件</param>
/// <param name="sort">排序字段</param>
/// <param name="order">排序分类</param>
/// <returns></returns>
Task<(SysRole[], int total)> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order);
/// <summary>
/// 添加角色
/// </summary>
/// <param name="name">角色名称</param>
/// <param name="remark">备注</param>
/// <returns></returns>
Task<SysRole> AddRole(string name, string remark);
/// <summary>
/// 编辑角色信息
/// </summary>
/// <param name="id">角色Id</param>
/// <param name="name">角色名称</param>
/// <param name="remark">备注</param>
/// <returns></returns>
Task<SysRole> EditRole(string id, string name, string remark);
/// <summary>
/// 根据角色Id删除角色
/// </summary>
/// <param name="id">角色Id</param>
/// <returns></returns>
void DeleteRole(string id);
/// <summary>
/// 批量删除角色
/// </summary>
/// <param name="ids">角色Id数组</param>
/// <returns></returns>
bool DeleteRoleRange(string[] ids);
/// <summary>
/// 根据查询条件获取角色菜单配置项
/// </summary>
/// <param name="predicate">查询条件</param>
/// <returns></returns>
Task<SysRoleDetails[]> GetRoleAuthList(Expression<Func<SysRoleDetails, bool>> predicate);
/// <summary>
/// 添加某一角色菜单项
/// </summary>
/// <param name="roleId"></param>
/// <param name="menuId"></param>
/// <returns></returns>
Task<SysRoleDetails> AddRoleDetails(string roleId, string menuId);
/// <summary>
/// 删除某一角色下面的所配置的所有菜单项
/// </summary>
/// <param name="roleId">角色Id</param>
/// <returns></returns>
bool DeleteRoleAuthRange(string roleId);
(二)仓储接口实现代码
public async Task<SysRole?> FindOneRoleById(string id)
{
return await _dbContext.SysRole.FindAsync(Guid.Parse(id));
}
public async Task<(SysRole[], int total)> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order)
{
//where查询条件
List<DataFilter> searchParametersList = FormatParameters.GetSearchParameters(wheres);
//order排序条件
Dictionary<string, QueryOrderBy> orderBy = FormatParameters.GetOrderParameters(sort, order);
//构造查询条件
Expression<Func<SysRole, bool>> expression = DataFilterConvertor<SysRole>.ToExpression(searchParametersList);
var listAll = _dbContext.SysRole.Where(expression);
int total = listAll.Count();
var list = await listAll.OrderConditions(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToArrayAsync();
return (list, total);
}
public async Task<SysRole> AddRole(string name, string remark)
{
var model = SysRole.Add(name, remark);
await _dbContext.SysRole.AddAsync(model);
return model;
}
public async Task<SysRole> EditRole(string id, string name, string remark)
{
var model = await FindOneRoleById(id);
return model.Edit(name, remark);
}
public async void DeleteRole(string id)
{
_dbContext.SysRole.Remove(await _dbContext.SysRole.FindAsync(Guid.Parse(id)));
}
public bool DeleteRoleRange(string[] ids)
{
_dbContext.SysRole.RemoveRange(_dbContext.SysRole.Where(x => ids.Contains(x.Id.ToString())).ToArray());
return true;
}
public async Task<SysRoleDetails[]> GetRoleAuthList(Expression<Func<SysRoleDetails, bool>> predicate)
{
return await _dbContext.SysRoleDetails.Where(predicate).ToArrayAsync();
}
public async Task<SysRoleDetails> AddRoleDetails(string roleId, string menuId)
{
var model = SysRoleDetails.Add(roleId, menuId);
await _dbContext.SysRoleDetails.AddAsync(model);
return model;
}
public bool DeleteRoleAuthRange(string roleId)
{
_dbContext.SysRoleDetails.RemoveRange(_dbContext.SysRoleDetails.Where(x => x.RoleId == Guid.Parse(roleId)).ToArray());
return true;
}
二、领域服务代码
(一)领域服务接口代码
/// <summary>
/// 分页获取角色数据
/// </summary>
/// <param name="pageIndex">第几页</param>
/// <param name="pageSize">每页条数</param>
/// <param name="wheres">查询条件</param>
/// <param name="sort">排序字段</param>
/// <param name="order">排序分类</param>
/// <returns></returns>
Task<ResponseContent> GetRoleList(int pageIndex, int pageSize, string Wheres, string Sort, string Order);
/// <summary>
/// 添加角色
/// </summary>
/// <param name="name">角色名称</param>
/// <param name="remark">备注</param>
/// <returns></returns>
Task<ResponseContent> AddRole(string name, string remark);
/// <summary>
/// 编辑角色
/// </summary>
/// <param name="id">角色Id</param>
/// <param name="name">角色名称</param>
/// <param name="remark">备注</param>
/// <returns></returns>
Task<ResponseContent> EditRole(string id, string name, string remark);
/// <summary>
/// 根据角色Id删除角色
/// </summary>
/// <param name="id">角色id</param>
/// <returns></returns>
ResponseContent DeleteRole(string id);
/// <summary>
/// 批量删除角色
/// </summary>
/// <param name="ids">角色Id数组</param>
/// <returns></returns>
ResponseContent DeleteRoleRange(string[] ids);
/// <summary>
/// 获取某一角色下面的菜单项
/// </summary>
/// <param name="id">角色Id</param>
/// <returns></returns>
Task<ResponseContent> GetRoleAuthTree(string id);
/// <summary>
/// 保存角色功能列表
/// </summary>
/// <param name="roleId">角色Id</param>
/// <param name="menuIds">菜单Id</param>
/// <returns></returns>
Task<ResponseContent> SaveRoleAuth(string roleId, string[] menuIds);
(二)领域服务接口实现代码
public async Task<ResponseContent> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order)
{
ResponseContent response = new ResponseContent();
(var list, int total) = await _systemDomainRepostory.GetRoleList(pageIndex, pageSize, wheres, sort, order);
return response.Ok(new { total = total, rows = list });
}
public async Task<ResponseContent> AddRole(string name, string remark)
{
ResponseContent response = new ResponseContent();
await _systemDomainRepostory.AddRole(name, remark);
return response.Ok();
}
public async Task<ResponseContent> EditRole(string id, string name, string remark)
{
ResponseContent response = new ResponseContent();
var model = await _systemDomainRepostory.EditRole(id, name, remark);
return response.Ok();
}
public ResponseContent DeleteRole(string id)
{
ResponseContent response = new ResponseContent();
_systemDomainRepostory.DeleteRole(id);
return response.Ok();
}
public ResponseContent DeleteRoleRange(string[] ids)
{
ResponseContent response = new ResponseContent();
bool result = _systemDomainRepostory.DeleteRoleRange(ids);
if (result)
return response.Ok();
else
return response.Error(ResponseType.OperError);
}
public async Task<ResponseContent> GetRoleAuthTree(string id)
{
ResponseContent response = new ResponseContent();
//获取所有菜单列表
var menuList = await _systemDomainRepostory.GetMenuTreeList();
//获取角色已经设置的菜单列表
Expression<Func<SysRoleDetails, bool>> expression = p => p.RoleId == Guid.Parse(id);
var authList = await _systemDomainRepostory.GetRoleAuthList(expression);
return response.Ok(new { rows = menuList, checkedKeys = authList });
}
public async Task<ResponseContent> SaveRoleAuth(string roleId, string[] menuIds)
{
ResponseContent response = new ResponseContent();
//删除角色菜单
bool result = _systemDomainRepostory.DeleteRoleAuthRange(roleId);
//生成角色菜单
for (int i = 0; i < menuIds.Length; i++)
{
await _systemDomainRepostory.AddRoleDetails(roleId, menuIds[i]);
}
if (result)
return response.Ok();
else
return response.Error(ResponseType.OperError);
}
三、Controller代码
/// <summary>
/// 分页获取角色列表
/// </summary>
/// <remarks>
/// 描述:分页获取角色列表
/// </remarks>
/// <param name="req">请求参数</param>
/// <returns></returns>
[HttpPost]
[TypeFilter(typeof(ApiAuthorizeFilter))]
public async Task<ActionResult> GetRoleListByPage(PageGridRequest req)
{
return new JsonResult(await _systemDomainService.GetRoleList(req.PageIndex, req.PageSize, req.Wheres, req.Sort, req.Order));
}
/// <summary>
/// 添加角色
/// </summary>
/// <remarks>
/// 描述:添加角色
/// </remarks>
/// <param name="req">请求参数</param>
/// <returns></returns>
[HttpPost]
[TypeFilter(typeof(ApiAuthorizeFilter))]
[UnitOfWork(typeof(SignUpDbContext))]
public async Task<ActionResult> AddRole(AddRoleRequest req)
{
return new JsonResult(await _systemDomainService.AddRole(req.Name, req.Remark));
}
/// <summary>
/// 修改角色
/// </summary>
/// <remarks>
/// 描述:修改角色
/// </remarks>
/// <param name="req">请求参数</param>
/// <returns></returns>
[HttpPut]
[TypeFilter(typeof(ApiAuthorizeFilter))]
[UnitOfWork(typeof(SignUpDbContext))]
public async Task<ActionResult> EditRole(EditRoleRequest req)
{
return new JsonResult(await _systemDomainService.EditRole(req.Id, req.Name, req.Remark));
}
/// <summary>
/// 根据Id删除角色
/// </summary>
/// <remarks>
/// 描述:删除角色
/// </remarks>
/// <param name="id">角色Id</param>
/// <returns></returns>
[HttpDelete]
[TypeFilter(typeof(ApiAuthorizeFilter))]
[UnitOfWork(typeof(SignUpDbContext))]
public ActionResult DeleteRole(string id)
{
return new JsonResult(_systemDomainService.DeleteRole(id));
}
/// <summary>
/// 批量删除角色
/// </summary>
/// <remarks>
/// 描述:根据角色Id数组批量删除角色
/// </remarks>
/// <param name="ids">角色Id数组</param>
/// <returns></returns>
[HttpDelete]
[TypeFilter(typeof(ApiAuthorizeFilter))]
[UnitOfWork(typeof(SignUpDbContext))]
public ActionResult DeleteRoleRange(string[] ids)
{
return new JsonResult(_systemDomainService.DeleteRoleRange(ids));
}
/// <summary>
/// 获取某一角色配置的全部菜单项
/// </summary>
/// <remarks>
/// 描述:获取某一角色配置的全部菜单项,将返回所有可配置的菜单项,及本角色已经配置的菜单项
/// </remarks>
/// <param name="id">角色Id</param>
/// <returns></returns>
[HttpGet]
[TypeFilter(typeof(ApiAuthorizeFilter))]
public async Task<ActionResult> GetRoleAuthTree(string id)
{
return new JsonResult(await _systemDomainService.GetRoleAuthTree(id));
}
/// <summary>
/// 保存角色配置的菜单项
/// </summary>
/// <remarks>
/// 描述:保存角色配置的菜单项
/// </remarks>
/// <param name="req">请求参数</param>
/// <returns></returns>
[HttpPost]
[TypeFilter(typeof(ApiAuthorizeFilter))]
[UnitOfWork(typeof(SignUpDbContext))]
public async Task<ActionResult> SaveRoleAuth(SaveRoleAuthRequest req)
{
return new JsonResult(await _systemDomainService.SaveRoleAuth(req.RoleId, req.MenuIds));
}
学习交流

附笔者学习 .net core开发时参考相关项目实例源码:asp.net core webapi项目实例源代码锦集下载(72个)
猜您可能还喜欢
- .Nuget Packages 太占C盘,删除后可以放到其他盘(1622)
- net core+webapi+nginx windows 服务器部署(1488)
- ASP.NET Core 配置 Swagger 显示接口注释描述信息(1233)
- vue调用接口后获取不到后端返回的Header响应头(1178)
- .net core 6.0 web API + SwaggerUI + IIS部署(1176)
- .net core 系列实例开发教程-权限管理系统功能介绍(1102)
- .net core 实例教程(十二)配置启用Swagger中的【Authorize】按钮(1070)
- .net core 实例教程(十一)生成JWT格式的token密码配置及代码(996)
- .net core 实例教程(十四)配置 Swagger 显示接口注释描述信息及支持版本控制(963)
- .net core 实例教程(三)仓储及领域服务功能实现(既实现用户表的增删改查接口)(946)
评论列表
发表评论
文章分类
文章归档
- 2025年3月 (1)
- 2024年6月 (2)
- 2024年5月 (2)
- 2024年4月 (4)
- 2024年3月 (30)
- 2024年1月 (4)
- 2023年12月 (2)
- 2023年11月 (4)
- 2023年10月 (4)
- 2023年9月 (6)
- 2023年3月 (2)
- 2023年2月 (1)
- 2023年1月 (1)
- 2022年12月 (1)
- 2022年9月 (21)
- 2022年8月 (10)
- 2022年7月 (3)
- 2022年4月 (1)
- 2022年3月 (13)
- 2021年8月 (1)
- 2021年3月 (1)
- 2020年12月 (42)
- 2020年11月 (7)
- 2020年10月 (5)
- 2020年8月 (1)
- 2020年6月 (1)
- 2020年3月 (2)
- 2019年12月 (8)
- 2019年11月 (3)
- 2019年9月 (1)
- 2019年4月 (1)
- 2019年3月 (6)
- 2019年2月 (1)
- 2018年7月 (7)
阅读排行
- 1.asp.net mvc内微信pc端、H5、JsApi支付方式总结(5876)
- 2.Windows 10休眠文件更改存储位置(3825)
- 3.各大搜索网站网站收录提交入口地址(3478)
- 4.ECharts仪表盘实例及参数使用详解(3431)
- 5.windows 10安装myeclipse 10破解补丁cracker.jar、run.bat闪退解决办法(3422)
- 6.HTML5 WebSocket与C#建立Socket连接实现代码(3179)
- 7.华为鸿蒙系统清除微信浏览器缓存方法(3171)
- 8.CERT_HAS_EXPIRED错误如何解决(2964)
- 9.Js异步async、await关键字详细介绍(lambda表达式中使用async和await关键字)(2600)
- 10.HBuilder编辑器格式化代码(2393)
