master_sxs_new #1
|
|
@ -11,19 +11,43 @@ namespace langguanApi.Service
|
||||||
[ServiceInjection(InjectionType.Transient)]
|
[ServiceInjection(InjectionType.Transient)]
|
||||||
public class MenuService : BaseService<Menu>
|
public class MenuService : BaseService<Menu>
|
||||||
{
|
{
|
||||||
public MenuService(IConfiguration config) : base(config, nameof(Menu))
|
private ILogger<MenuService> _logger;
|
||||||
|
public MenuService(IConfiguration config, ILogger<MenuService> logger) : base(config, nameof(Menu))
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
public async Task<List<Menu>> GetMenusByParentId(string parentId)
|
public async Task<List<Menu>> GetMenusByParentId(string parentId)
|
||||||
{
|
{
|
||||||
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false && filter.ParentId == parentId;
|
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false && filter.ParentId == parentId;
|
||||||
return (await base.GetListWithExp(exp)).OrderBy(x => x.Sort).ToList();
|
return (await base.GetListWithExp(exp)).OrderBy(x => x.Sort).ToList();
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 新增菜单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="menu">菜单实体</param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task<ApiResult> AddMenu(AddMenuDto menu)
|
public async Task<ApiResult> AddMenu(AddMenuDto menu)
|
||||||
{
|
{
|
||||||
var entity = menu.Adapt<Menu>();
|
try
|
||||||
await base.CreateAsync(entity);
|
{
|
||||||
return new ApiResult();
|
var entity = menu.Adapt<Menu>();
|
||||||
|
await base.CreateAsync(entity);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
_logger.LogError($"新增菜单出现异常,请求参数:{Newtonsoft.Json.JsonConvert.SerializeObject(menu)}," +
|
||||||
|
$"请求接口:'api/Menu/AddMenu'," +
|
||||||
|
$"异常信息:{ex.Message}," +
|
||||||
|
$"异常位置:{ex.StackTrace}"
|
||||||
|
);
|
||||||
|
return new ApiResult { code = 1, msg = "保存菜单失败", data = false };
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"新增菜单参数:menu:{Newtonsoft.Json.JsonConvert.SerializeObject(menu)}");
|
||||||
|
}
|
||||||
|
return new ApiResult { code = 0, msg = "保存菜单信息成功", data = true };
|
||||||
}
|
}
|
||||||
public async Task<ApiResult> UpdateMenu(UpdateMenuDto menu)
|
public async Task<ApiResult> UpdateMenu(UpdateMenuDto menu)
|
||||||
{
|
{
|
||||||
|
|
@ -38,32 +62,67 @@ namespace langguanApi.Service
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<ApiResult> Pager(reqpage input)
|
public async Task<ApiResult> Pager(reqpage input)
|
||||||
{
|
{
|
||||||
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false;
|
|
||||||
if (!string.IsNullOrEmpty(input.key))
|
|
||||||
{
|
|
||||||
exp = exp.And(filter => filter.Name.Contains(input.key));
|
|
||||||
}
|
|
||||||
List<MenuTreeDto> dto = new List<MenuTreeDto>();
|
List<MenuTreeDto> dto = new List<MenuTreeDto>();
|
||||||
var MenuList = await GetChildList(null);
|
try
|
||||||
foreach (var item in MenuList)
|
|
||||||
{
|
{
|
||||||
dto.Add(new MenuTreeDto()
|
var MenuList = await GetChildList("0");//获取跟节点
|
||||||
|
if (MenuList.Any())
|
||||||
{
|
{
|
||||||
Id = item.Id,
|
foreach (var item in MenuList)
|
||||||
Name = item.Name,
|
{
|
||||||
Sort = item.Sort,
|
dto.Add(new MenuTreeDto()
|
||||||
ParentId = item.ParentId,
|
{
|
||||||
ParentName = item.ParentName,
|
Id = item.Id,
|
||||||
Children = await GetChildList(item.Id)
|
Name = item.Name,
|
||||||
});
|
Sort = item.Sort,
|
||||||
|
ParentId = item.ParentId,
|
||||||
|
ParentName = item.ParentName,
|
||||||
|
Children = await GetChildList(item.Id)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//筛选数据
|
||||||
|
if (!string.IsNullOrEmpty(input.key))
|
||||||
|
{
|
||||||
|
if (dto.Exists(p => p.Name == input.key) ||
|
||||||
|
dto.Exists(p => p.Children.Exists(c => c.Name == input.key)) ||
|
||||||
|
dto.Exists(p => p.ParentName == input.key))
|
||||||
|
{
|
||||||
|
if (dto.Exists(p => p.Name == input.key))
|
||||||
|
{
|
||||||
|
dto = dto.Where(p => p.Name == input.key).ToList();
|
||||||
|
}
|
||||||
|
else if (dto.Exists(p => p.Children.Exists(c => c.Name == input.key)))
|
||||||
|
{
|
||||||
|
dto = dto.SelectMany(p => p.Children).Where(p => p.Name == input.key).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dto = dto.SelectMany(p => p.Children).Where(p => p.ParentName == input.key).ToList();
|
||||||
|
}
|
||||||
|
return new ApiResult() { code = 0, data = dto, msg = "获取菜单列表" };
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new ApiResult() { code = 0, data = null, msg = "获取菜单列表不存在" };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new ApiResult() { data = dto };
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
//return await base.GetPager(new ReqPaing()
|
_logger.LogError($"获取菜单列表出现异常,请求参数:{Newtonsoft.Json.JsonConvert.SerializeObject(input)}," +
|
||||||
//{
|
$"请求接口:'api/Menu/Pager'," +
|
||||||
// pageSize = input.pageSize,
|
$"异常信息:{ex.Message}," +
|
||||||
// current = input.current
|
$"异常位置:{ex.StackTrace}"
|
||||||
//}, exp);
|
);
|
||||||
|
return new ApiResult { code = 1, msg = "获取菜单列表失败", data = false };
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"获取菜单列表参数:menu:{Newtonsoft.Json.JsonConvert.SerializeObject(input)}");
|
||||||
|
}
|
||||||
|
return new ApiResult() { code = 0, data = dto, msg = "获取菜单列表" };
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 递归获取子菜单列表
|
/// 递归获取子菜单列表
|
||||||
|
|
@ -73,13 +132,18 @@ namespace langguanApi.Service
|
||||||
public async Task<List<MenuTreeDto>> GetChildList(string parentId)
|
public async Task<List<MenuTreeDto>> GetChildList(string parentId)
|
||||||
{
|
{
|
||||||
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false && filter.ParentId == parentId;
|
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false && filter.ParentId == parentId;
|
||||||
|
Expression<Func<Menu, bool>> expDataSource = filter => filter.IsDelete;
|
||||||
var list = (await GetListWithExp(exp))
|
var list = (await GetListWithExp(exp))
|
||||||
.OrderByDescending(x => x.Sort)
|
.OrderBy(x => x.Sort)
|
||||||
.ToList().Adapt<List<MenuTreeDto>>();
|
.ToList().Adapt<List<MenuTreeDto>>();
|
||||||
|
var DataSourceList = (await GetAsync())
|
||||||
|
.OrderBy(x => x.Sort)
|
||||||
|
.ToList();//拿到所有数据源,筛选结果
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
{
|
{
|
||||||
item.Children = await GetChildList(item.Id);
|
item.Children = await GetChildList(item.Id);
|
||||||
item.ParentName = (await base.GetAsync(item.ParentId))?.Name;
|
item.ParentName = DataSourceList.FirstOrDefault(p => p.Id == item.ParentId)?.Name;
|
||||||
|
item.ParentId = DataSourceList.FirstOrDefault(p => p.Id == item.ParentId)?.Id;
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue