mirror of
https://gitee.com/ccnetcore/Yi
synced 2026-04-05 08:46:35 +08:00
重构接口
This commit is contained in:
@@ -11,118 +11,74 @@ namespace Yi.Framework.Service
|
||||
{
|
||||
public partial class MenuService:BaseService<menu>, IMenuService
|
||||
{
|
||||
short Normal = (short)Common.Enum.DelFlagEnum.Normal;
|
||||
public async Task<menu> AddChildrenMenu(int menu_id, menu _children)
|
||||
{
|
||||
var menu_data = await _Db.Set<menu>().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync();
|
||||
var menu_data = await _DbRead.Set<menu>().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync();
|
||||
_children.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
||||
menu_data.children.Add(_children);
|
||||
await UpdateAsync(menu_data);
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这个getEntity没有关联子类,怎么能得到子类呢?这是一个错误的接口
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetChildrenByMenu(menu _menu)
|
||||
public async Task<bool> AddTopMenu(menu _menu)
|
||||
{
|
||||
var menu_data = await GetEntity(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal);
|
||||
var childrenList = menu_data.children.ToList();
|
||||
return childrenList;
|
||||
_menu.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
||||
|
||||
return await AddAsync(_menu);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 不要返回一个新创的变量,直接返回menu.children,只要id,就不要传一个对象
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetChildrenMenu(menu _menu)
|
||||
public async Task<menu> GetMenuInMould()
|
||||
{
|
||||
var menu= await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
||||
.Where(u =>u.id==_menu.id&& u.is_top == (short)Common.Enum.TopFlagEnum.Children )
|
||||
.FirstOrDefaultAsync();
|
||||
var childrenList = menu.children.ToList();
|
||||
return childrenList;
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetMenuMould()
|
||||
{
|
||||
var menuList= await _Db.Set<menu>().Include(u => u.children).Include(u => u.mould)
|
||||
.Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal )
|
||||
.ToListAsync();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 和GetChildrenMenu方法可以合并
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<menu> GetMenuMouldByMenu(menu _menu)
|
||||
{
|
||||
var menu_data = await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
||||
.Where(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.ShowFlagEnum.Show)
|
||||
.FirstOrDefaultAsync();
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
public async Task<mould> GetMouldByMenu(menu _menu)
|
||||
{
|
||||
var menu_data =await _Db.Set<menu>().Include(u => u.mould).Where(u => u.id == _menu.id).FirstOrDefaultAsync();
|
||||
return menu_data.mould;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 5层迭代
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetTopMenu()
|
||||
{
|
||||
var menu_data= await _Db.Set<menu>().Include(u=>u.mould)
|
||||
var menu_data= await _DbRead.Set<menu>().Include(u=>u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u=>u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Where(u =>u.is_delete == (short)Common.Enum.DelFlagEnum.Normal && u.is_top == (short)Common.Enum.ShowFlagEnum.Show)
|
||||
.Where(u =>u.is_delete == Normal && u.is_show == (short)Common.Enum.ShowFlagEnum.Show && u.is_top == (short)Common.Enum.TopFlagEnum.Top)
|
||||
.OrderByDescending(u=>u.sort)
|
||||
.ToListAsync();
|
||||
.FirstOrDefaultAsync();
|
||||
return TopMenuBuild(menu_data);
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetTopMenusByHttpUser(List<int> menuIds)
|
||||
{
|
||||
return await _DbRead.Set<menu>().Where(u => menuIds.Contains(u.id)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<menu> SetMouldByMenu(int id1,int id2)
|
||||
{
|
||||
var menu_data = await _DbRead.Set<menu>().Include(u => u.mould).Where(u => u.id == id1).FirstOrDefaultAsync();
|
||||
var mould_data = await _DbRead.Set<mould>().Where(u => u.id == id1).FirstOrDefaultAsync();
|
||||
menu_data.mould = mould_data;
|
||||
_Db.Update(menu_data);
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 过滤已经被删除的(这个应该是别的地方有方法的,不应该写到service层里面的)
|
||||
/// </summary>
|
||||
/// <param name="menu_data"></param>
|
||||
/// <returns></returns>
|
||||
private List<menu> TopMenuBuild(List<menu> menu_data)
|
||||
private menu TopMenuBuild(menu menu_data)
|
||||
{
|
||||
for(int i = menu_data.Count()-1; i >=0; i--)
|
||||
for (int i = menu_data.children.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
|
||||
if (menu_data.children[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
|
||||
{
|
||||
menu_data.Remove(menu_data[i]);
|
||||
menu_data.children.Remove(menu_data.children[i]);
|
||||
}
|
||||
else if (menu_data.children[i] != null)
|
||||
{
|
||||
TopMenuBuild(menu_data.children[i]);
|
||||
}
|
||||
else if(menu_data[i].children != null)
|
||||
{
|
||||
menu_data[i].children= TopMenuBuild(menu_data[i].children.ToList());
|
||||
}
|
||||
}
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 要关联啊,menudata要关联mould,而且能用find就用find
|
||||
/// </summary>
|
||||
/// <param name="mouldId"></param>
|
||||
/// <param name="menuId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> SetMouldByMenu(int mouldId, int menuId)
|
||||
public async Task<List<menu>> GetTopMenuByUserId(int userId)
|
||||
{
|
||||
var menu_data = await GetEntity(u => u.id == menuId);
|
||||
var mould_data = await _Db.Set<mould>().Where(u => u.id==mouldId).FirstOrDefaultAsync();
|
||||
menu_data.mould = mould_data;
|
||||
return await UpdateAsync(menu_data);
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,58 +11,52 @@ namespace Yi.Framework.Service
|
||||
{
|
||||
public partial class RoleService:BaseService<role>, IRoleService
|
||||
{
|
||||
/// <summary>
|
||||
/// 该方法返回的是并列角色并列的菜单,无递归
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetMenusByRole(role _role)
|
||||
short Normal = (short)Common.Enum.DelFlagEnum.Normal;
|
||||
|
||||
public async Task<List<role>> GetRolesByUserId(int userId)
|
||||
{
|
||||
var role_data =await _Db.Set<role>().Include(u => u.menus)
|
||||
.Where(u => u.id == _role.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var menuList =role_data.menus.Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToList();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这个接口好像没用,算作废吧,怎么能通过角色获取用户呢?数据库表也得改,不能通过角色获取用户
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<user>> GetUsersByRole(role _role)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u => u.users)
|
||||
.Where(u => u.id == _role.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
return role_data.users.ToList();
|
||||
var user_data =await _Db.Set<user>().Include(u => u.roles).Where(u => u.id==userId).FirstOrDefaultAsync();
|
||||
var roleList = user_data.roles.Where(u=>u.is_delete==Normal).ToList();
|
||||
return roleList;
|
||||
}
|
||||
|
||||
|
||||
public async Task<bool> SetMenusByRolesId(List<int> menuIds,List<int> roleIds)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u=>u.menus).Where(u =>roleIds.Contains(u.id) && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToListAsync();
|
||||
if (role_data == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var menuList = await _Db.Set<menu>().Where(u => menuIds.Contains(u.id)&&u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToListAsync();
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).ThenInclude(u => u.children).Where(u =>roleIds.Contains(u.id) && u.is_delete == Normal).ToListAsync();
|
||||
var menuList = await _Db.Set<menu>().Where(u => menuIds.Contains(u.id)&&u.is_delete ==Normal).ToListAsync();
|
||||
foreach(var role in role_data)
|
||||
{
|
||||
role.menus =menuList;
|
||||
}
|
||||
return await UpdateListAsync(role_data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 好像也不需要通过菜单来获取角色啊,这个数据库也得改
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetMenusByRoleId(int roleId)
|
||||
|
||||
public async Task<List<menu>> GetMenusByRoleId(List< int> roleIds)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u=>u.menus).Where(u =>u.id==roleId && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.ToList();
|
||||
menuList.ForEach(u => u.roles = null);
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).Where(u => roleIds.Contains(u.id) && u.is_delete == Normal).ToListAsync();
|
||||
List<menu> menuList = new();
|
||||
role_data.ForEach(u =>
|
||||
{
|
||||
var m = u.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
menuList = menuList.Union(m).ToList();
|
||||
});
|
||||
return menuList;
|
||||
}
|
||||
public async Task<List<menu>> GetTopMenusByRoleId(int roleId)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Where(u => u.id == roleId).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
menuList.ForEach(u => u.children = null);
|
||||
return menuList;
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetMenusByRole(int roleId)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).Where(u => u.id == roleId).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Yi.Framework.Service
|
||||
/// <returns></returns>
|
||||
public async Task<user> GetUserById(int userId)
|
||||
{
|
||||
return await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.children).ThenInclude(u => u.mould).Where(u=>u.id==userId).FirstOrDefaultAsync();
|
||||
return await _DbRead.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.children).ThenInclude(u => u.mould).Where(u=>u.id==userId).FirstOrDefaultAsync();
|
||||
|
||||
}
|
||||
public async Task<List<menu>> GetAxiosByRouter(string router, int userId, List<int> menuIds)
|
||||
@@ -47,7 +47,7 @@ namespace Yi.Framework.Service
|
||||
List<menu> menuList = new();
|
||||
foreach(var item in user_data.roles)
|
||||
{
|
||||
var m= item.menus.Where(u => u.router.ToUpper() == router.ToUpper()).FirstOrDefault();
|
||||
var m=item.menus.Where(u => u.router.ToUpper() == router.ToUpper()).FirstOrDefault();
|
||||
menuList= m.children.Where(u => menuIds.Contains(u.id)&&u.is_delete==Normal).ToList();
|
||||
if (m != null) { break; }
|
||||
}
|
||||
@@ -73,7 +73,7 @@ namespace Yi.Framework.Service
|
||||
List<menu> endMenu = new();
|
||||
foreach (var item in topMenu)
|
||||
{
|
||||
var p = await _Db.Set<menu>().Where(u => u.id == item.id).Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ToListAsync();
|
||||
var p = await _DbRead.Set<menu>().Where(u => u.id == item.id).Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ToListAsync();
|
||||
endMenu = endMenu.Union(p).ToList();
|
||||
}
|
||||
|
||||
@@ -92,10 +92,7 @@ namespace Yi.Framework.Service
|
||||
for (int i = menu_data.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
|
||||
if (menu_data[i].icon == null)
|
||||
{
|
||||
menu_data[i].icon = "Yi";
|
||||
}
|
||||
|
||||
|
||||
if (!allMenuIds.Contains(menu_data[i].id) || menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted || menu_data[i].is_show == (short)Common.Enum.ShowFlagEnum.NoShow)
|
||||
{
|
||||
@@ -139,7 +136,7 @@ namespace Yi.Framework.Service
|
||||
|
||||
public async Task<user> Login(user _user)
|
||||
{
|
||||
var user_data = await _Db.Set<user>().Include(u => u.roles).Where(u => u.username == _user.username && u.password ==_user.password &&u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var user_data = await _DbRead.Set<user>().Include(u => u.roles).Where(u => u.username == _user.username && u.password ==_user.password &&u.is_delete == Normal).FirstOrDefaultAsync();
|
||||
return user_data;
|
||||
}
|
||||
|
||||
@@ -155,8 +152,8 @@ namespace Yi.Framework.Service
|
||||
|
||||
public async Task<bool> SetRoleByUser(List<int> roleIds, List<int> userIds)
|
||||
{
|
||||
var user_data = await _Db.Set<user>().Include(u => u.roles).Where(u => userIds.Contains(u.id)).ToListAsync();
|
||||
var roleList = await _Db.Set<role>().Where(u => roleIds.Contains(u.id)).ToListAsync();
|
||||
var user_data = await _DbRead.Set<user>().Include(u => u.roles).Where(u => userIds.Contains(u.id)).ToListAsync();
|
||||
var roleList = await _DbRead.Set<role>().Where(u => roleIds.Contains(u.id)).ToListAsync();
|
||||
user_data.ForEach(u => u.roles = roleList);
|
||||
return await UpdateListAsync(user_data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user