using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using RIZO.Server.IService; using RIZO.Server.IEFContext; using RIZO.Server.Models; namespace RIZO.Server.Service { public class MenuService : ServiceBase, IMenuService { public MenuService(RIZO.Server.IEFContext.IEFContext eFContext) : base(eFContext) { } public List GetAllMenus() { return (from menu in Context.Set() where menu.State == 1 select menu).ToList(); } public List GetMenusByRoleId(int roleId) { // 获取所有权限 var roles = (from role in Context.Set() where role.RoleId == roleId && role.state == 1 select role.RoleId).ToList(); var query = from menu in Context.Set() join role_menu in Context.Set() on menu.MenuId equals role_menu.MenuId where roles.Contains(role_menu.RoleId) && menu.State == 1 select menu; return query.Distinct().ToList(); } public List GetMenusByUserId(int userId) { // 获取所有权限 var roles = (from ur in Context.Set() join role in Context.Set() on ur.RoleId equals role.RoleId where ur.UserId == userId && role.state == 1 select ur.RoleId).ToList(); // 菜单的去重 var query = from menu in Context.Set() join role_menu in Context.Set() on menu.MenuId equals role_menu.MenuId where roles.Contains(role_menu.RoleId) && menu.State == 1 select menu; return query.Distinct().ToList(); } public void SaveMenu(string data) { var value = Newtonsoft.Json.JsonConvert.DeserializeObject(data); if (value.MenuId == 0) { var index = Context.Set().Max(i => i.Index); value.Index = index + 1; } value.State = 1; Context.Entry(value).State = value.MenuId == 0 ? EntityState.Added : EntityState.Modified; Context.SaveChanges(); } } }