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;
|
|
|
|
|
|
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-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-19 14:50:26 +08:00
|
|
|
|
var menu_data = await _Db.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-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 这个getEntity没有关联子类,怎么能得到子类呢?这是一个错误的接口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="_menu"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-12 18:05:01 +08:00
|
|
|
|
public async Task<List<menu>> GetChildrenByMenu(menu _menu)
|
|
|
|
|
|
{
|
2021-10-12 21:44:50 +08:00
|
|
|
|
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;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 不要返回一个新创的变量,直接返回menu.children,只要id,就不要传一个对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="_menu"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-17 17:35:18 +08:00
|
|
|
|
public async Task<List<menu>> GetChildrenMenu(menu _menu)
|
2021-10-16 23:17:32 +08:00
|
|
|
|
{
|
2021-10-17 17:35:18 +08:00
|
|
|
|
var menu= await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
2021-10-26 00:59:06 +08:00
|
|
|
|
.Where(u =>u.id==_menu.id&& u.is_top == (short)Common.Enum.TopFlagEnum.Children )
|
2021-10-17 17:35:18 +08:00
|
|
|
|
.FirstOrDefaultAsync();
|
|
|
|
|
|
var childrenList = menu.children.ToList();
|
|
|
|
|
|
return childrenList;
|
2021-10-16 23:17:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-18 16:46:40 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 和GetChildrenMenu方法可以合并
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="_menu"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-12 18:05:01 +08:00
|
|
|
|
public async Task<menu> GetMenuMouldByMenu(menu _menu)
|
|
|
|
|
|
{
|
2021-10-19 14:50:26 +08:00
|
|
|
|
var menu_data = await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
2021-10-26 00:59:06 +08:00
|
|
|
|
.Where(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.ShowFlagEnum.Show)
|
|
|
|
|
|
.FirstOrDefaultAsync();
|
2021-10-12 18:05:01 +08:00
|
|
|
|
return menu_data;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<mould> GetMouldByMenu(menu _menu)
|
|
|
|
|
|
{
|
2021-10-26 00:59:06 +08:00
|
|
|
|
var menu_data =await _Db.Set<menu>().Include(u => u.mould).Where(u => u.id == _menu.id).FirstOrDefaultAsync();
|
2021-10-12 21:44:50 +08:00
|
|
|
|
return menu_data.mould;
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 5层迭代
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-16 23:17:32 +08:00
|
|
|
|
public async Task<List<menu>> GetTopMenu()
|
|
|
|
|
|
{
|
2021-10-26 00:59:06 +08:00
|
|
|
|
var menu_data= await _Db.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)
|
2021-10-23 15:47:15 +08:00
|
|
|
|
.Where(u =>u.is_delete == (short)Common.Enum.DelFlagEnum.Normal && u.is_top == (short)Common.Enum.ShowFlagEnum.Show)
|
2021-10-26 00:59:06 +08:00
|
|
|
|
.OrderByDescending(u=>u.sort)
|
2021-10-16 23:17:32 +08:00
|
|
|
|
.ToListAsync();
|
2021-10-19 19:46:16 +08:00
|
|
|
|
return TopMenuBuild(menu_data);
|
2021-10-19 17:33:55 +08:00
|
|
|
|
}
|
2021-10-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 过滤已经被删除的(这个应该是别的地方有方法的,不应该写到service层里面的)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="menu_data"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-19 19:46:16 +08:00
|
|
|
|
private List<menu> TopMenuBuild(List<menu> menu_data)
|
2021-10-19 17:33:55 +08:00
|
|
|
|
{
|
2021-10-19 19:46:16 +08:00
|
|
|
|
for(int i = menu_data.Count()-1; i >=0; i--)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
|
|
|
|
|
|
{
|
|
|
|
|
|
menu_data.Remove(menu_data[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(menu_data[i].children != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
menu_data[i].children= TopMenuBuild(menu_data[i].children.ToList());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-10-19 17:33:55 +08:00
|
|
|
|
return menu_data;
|
2021-10-16 23:17:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 00:59:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 要关联啊,menudata要关联mould,而且能用find就用find
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="mouldId"></param>
|
|
|
|
|
|
/// <param name="menuId"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2021-10-12 18:05:01 +08:00
|
|
|
|
public async Task<bool> SetMouldByMenu(int mouldId, int menuId)
|
|
|
|
|
|
{
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
2021-10-17 17:35:18 +08:00
|
|
|
|
|
2021-10-12 18:05:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|