/// <summary> /// /// </summary> /// <param name="dto"></param> /// <returns></returns> public PublicResult ConfigMenu(ConfigMenuDto dto) { using (var client = DbFactory.CreateClient()) { var list = client.Queryable <RoleMenu, AdminMenu>((rm, m) => new object[] { JoinType.Left, rm.MenuId == m.Id }) .Where((rm, m) => rm.RoleId == dto.RoleId) .Select((rm, m) => new { MenuId = m.Id, RoleMenuId = rm.Id }) .ToList(); client.UseTran(tran => { var willAddMenus = dto.ConfigedMenus .Where(t => list.All(x => x.MenuId != t.Id)) .Select(t => new RoleMenu() { MenuId = t.Id, RoleId = dto.RoleId }) .ToList(); var willRemoveMenus = list .Where(t => dto.ConfigedMenus.All(x => x.Id != t.MenuId)) .Select(t => t.RoleMenuId) .ToList(); if (willAddMenus.Any()) { tran.Insertable <RoleMenu>(willAddMenus).ExecuteCommand(); } if (willRemoveMenus.Any()) { tran.Deleteable <RoleMenu>().In(willRemoveMenus).ExecuteCommand(); } return(0); }); return(Ok()); } }
public IActionResult ConfigMenu(ConfigMenuDto dto) { var result = _roleService.ConfigMenu(dto); return(Json(result)); }