You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using Txgy.EWS.Server.ICommon;
using Txgy.EWS.Server.IService;
using Txgy.EWS.Server.Models;
using Microsoft.EntityFrameworkCore;
namespace Txgy.EWS.Server.Service
{
public class MenuService : BaseService, IMenuService
{
public MenuService(IDbConnectionFactory contextFactor) : base(contextFactor) { }
public List<MenuInfo> GetAllMenus()
{
return (from menu in Context.Set<MenuInfo>()
where menu.State == 1
select menu).ToList();
}
public List<MenuInfo> GetMenusByRoleId(int roleId)
{
// 获取所有权限
var roles = (from role in Context.Set<RoleInfo>()
where role.RoleId == roleId && role.state == 1
select role.RoleId).ToList();
var query = from menu in Context.Set<MenuInfo>()
join role_menu in Context.Set<RoleMenu>()
on menu.MenuId equals role_menu.MenuId
where roles.Contains(role_menu.RoleId) && menu.State == 1
select menu;
return query.Distinct().ToList();
}
public List<MenuInfo> GetMenusByUserId(int userid)
{
// 获取所有权限
var roles = (from ur in Context.Set<UserRole>()
join role in Context.Set<RoleInfo>() on ur.RoleId equals role.RoleId
where ur.UserId == userid && role.state == 1
select ur.RoleId).ToList();
// 菜单的去重
var query = from menu in Context.Set<MenuInfo>()
join role_menu in Context.Set<RoleMenu>()
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<MenuInfo>(data);
if (value.MenuId == 0)
{
var index = Context.Set<MenuInfo>().Max(i => i.Index);
value.Index = index + 1;
}
value.State = 1;
Context.Entry(value).State = value.MenuId == 0 ?
EntityState.Added :
EntityState.Modified;
Context.SaveChanges();
}
}
}