2021-10-12 18:05:01 +08:00
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
2021-11-02 14:01:37 +08:00
|
|
|
|
using Yi.Framework.Core;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
using Yi.Framework.Interface;
|
|
|
|
|
|
using Yi.Framework.Model.Models;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Yi.Framework.Service
|
|
|
|
|
|
{
|
2021-10-17 17:35:18 +08:00
|
|
|
|
public partial class MenuService:BaseService<menu>, IMenuService
|
2021-10-12 18:05:01 +08:00
|
|
|
|
{
|
2021-10-29 23:23:32 +08:00
|
|
|
|
short Normal = (short)Common.Enum.DelFlagEnum.Normal;
|
2021-10-19 14:50:26 +08:00
|
|
|
|
public async Task<menu> AddChildrenMenu(int menu_id, menu _children)
|
2021-10-12 22:19:53 +08:00
|
|
|
|
{
|
2021-10-29 23:23:32 +08:00
|
|
|
|
var menu_data = await _DbRead.Set<menu>().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync();
|
2021-10-17 23:17:07 +08:00
|
|
|
|
_children.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
2021-10-16 13:34:05 +08:00
|
|
|
|
menu_data.children.Add(_children);
|
2021-10-15 21:50:42 +08:00
|
|
|
|
await UpdateAsync(menu_data);
|
|
|
|
|
|
return menu_data;
|
2021-10-12 22:19:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-29 23:23:32 +08:00
|
|
|
|
public async Task<bool> AddTopMenu(menu _menu)
|
2021-10-12 18:05:01 +08:00
|
|
|
|
{
|
2021-10-29 23:23:32 +08:00
|
|
|
|
_menu.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
|
2021-10-29 23:23:32 +08:00
|
|
|
|
return await AddAsync(_menu);
|
2021-10-16 23:17:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-29 23:23:32 +08:00
|
|
|
|
public async Task<menu> GetMenuInMould()
|
2021-10-18 16:46:40 +08:00
|
|
|
|
{
|
2021-10-29 23:23:32 +08:00
|
|
|
|
var menu_data= await _DbRead.Set<menu>().Include(u=>u.mould)
|
2021-11-02 00:25:23 +08:00
|
|
|
|
.Include(u => u.children).ThenInclude(u => u.mould).OrderByDescending(u => u.sort)
|
2021-10-29 23:23:32 +08:00
|
|
|
|
.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 == Normal && u.is_show == (short)Common.Enum.ShowFlagEnum.Show && u.is_top == (short)Common.Enum.TopFlagEnum.Top)
|
|
|
|
|
|
.FirstOrDefaultAsync();
|
2021-11-02 23:22:37 +08:00
|
|
|
|
return TreeMenuBuild.Sort(TreeMenuBuild.Normal(menu_data));
|
2021-10-18 16:46:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-11-06 17:13:38 +08:00
|
|
|
|
|
2021-10-30 00:02:11 +08:00
|
|
|
|
public async Task<List<menu>> GetTopMenusByTopMenuIds(List<int> menuIds)
|
2021-10-12 18:05:01 +08:00
|
|
|
|
{
|
2021-11-02 23:22:37 +08:00
|
|
|
|
return await _DbRead.Set<menu>().AsNoTracking().Where(u => menuIds.Contains(u.id)).OrderBy(u=>u.sort).ToListAsync();
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-29 23:23:32 +08:00
|
|
|
|
public async Task<menu> SetMouldByMenu(int id1,int id2)
|
2021-10-12 18:05:01 +08:00
|
|
|
|
{
|
2021-10-29 23:23:32 +08:00
|
|
|
|
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;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-11-02 14:01:37 +08:00
|
|
|
|
|
2021-10-29 23:23:32 +08:00
|
|
|
|
public async Task<List<menu>> GetTopMenuByUserId(int userId)
|
2021-10-12 18:05:01 +08:00
|
|
|
|
{
|
2021-11-06 17:53:54 +08:00
|
|
|
|
var user_data = await _DbRead.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).Where(u=>u.id==userId).FirstOrDefaultAsync();
|
2021-10-30 00:02:11 +08:00
|
|
|
|
List<menu> menuList = new();
|
|
|
|
|
|
user_data.roles.ForEach(u =>
|
|
|
|
|
|
{
|
|
|
|
|
|
var m = u.menus.Where(u => u.is_delete == Normal).ToList();
|
|
|
|
|
|
menuList = menuList.Union(m).ToList();
|
|
|
|
|
|
});
|
|
|
|
|
|
return menuList;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
2021-10-29 23:23:32 +08:00
|
|
|
|
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|