【修复】修复后台商品按分类查询,未迭代计算下级分类的问题,同时接口端增加多级判断。

This commit is contained in:
JianWeie
2022-09-16 12:24:16 +08:00
parent ea5d6b14c3
commit 1fc786d39c
3 changed files with 46 additions and 28 deletions

View File

@@ -80,6 +80,37 @@ namespace CoreCms.Net.Utility.Helper
#endregion #endregion
#region
/// <summary>
/// 递归获取下级所有序列
/// </summary>
/// <returns></returns>
[Description("递归获取下级所有序列")]
public static List<int> GetChildIds(List<CoreCmsGoodsCategory> categories, int parentId)
{
var ids = new List<int> { parentId };
ids = GetChildrenIds(categories, parentId, ids);
return ids;
}
/// <summary>
/// 迭代方法
/// </summary>
/// <param name="oldNavs"></param>
/// <param name="parentId"></param>
/// <param name="ids"></param>
/// <returns></returns>
private static List<int> GetChildrenIds(List<CoreCmsGoodsCategory> oldNavs, int parentId, List<int> ids)
{
var model = oldNavs.Where(p => p.parentId == parentId).ToList();
foreach (var item in model)
{
ids.Add(item.id);
GetChildrenIds(oldNavs, item.id, ids);
}
return ids;
}
#endregion
#region #region
/// <summary> /// <summary>
@@ -120,16 +151,9 @@ namespace CoreCms.Net.Utility.Helper
return url; return url;
} }
} }
#endregion
#region
#endregion #endregion
#region -/ #region -/
/// <summary> /// <summary>
/// 判断内容,只允许中文,字母,数字,和-/ /// 判断内容,只允许中文,字母,数字,和-/
/// </summary> /// </summary>
@@ -139,17 +163,7 @@ namespace CoreCms.Net.Utility.Helper
public static bool FilterChar(string inputValue) public static bool FilterChar(string inputValue)
{ {
return Regex.IsMatch(inputValue, "[`.~!@#$^&*()=|\"{}':;',\\[\\]<>?~@#¥……&*&;|{}。*-+]+"); return Regex.IsMatch(inputValue, "[`.~!@#$^&*()=|\"{}':;',\\[\\]<>?~@#¥……&*&;|{}。*-+]+");
//return Regex.IsMatch(inputValue, "[`.~!@#$^&*()=|\"{}':;',\\[\\]<>?~@#¥……&*&;|{}。*-+]+");
//if (Regex.IsMatch(inputValue, "[A-Za-z0-9\u4e00-\u9fa5-]+"))
//{
// return Regex.Match(inputValue, "[A-Za-z0-9\u4e00-\u9fa5-]+").Value;
//}
//return "";
//return Regex.IsMatch(inputValue, "[~!@#$%^&*()_+|<>,.?:;'\\[\\]{}\"]+");
//return Regex.IsMatch(inputValue, "[A-Za-z0-9\u4e00-\u9fa5-/]+");
} }
#endregion #endregion

View File

@@ -172,8 +172,18 @@ namespace CoreCms.Net.Web.Admin.Controllers
var selectTreeSelectNodeId = Request.Form["selectTree_select_nodeId"].FirstOrDefault().ObjectToInt(0); var selectTreeSelectNodeId = Request.Form["selectTree_select_nodeId"].FirstOrDefault().ObjectToInt(0);
if (selectTreeSelectNodeId > 0) @where = @where.And(p => p.goodsCategoryId == selectTreeSelectNodeId); if (selectTreeSelectNodeId > 0) @where = @where.And(p => p.goodsCategoryId == selectTreeSelectNodeId);
//商品分类ID 关联category.id int //商品分类ID 关联category.id int
var goodsCategoryId = Request.Form["goodsCategoryId"].FirstOrDefault().ObjectToInt(0); var goodsCategoryId = Request.Form["goodsCategoryId"].FirstOrDefault().ObjectToInt(0);
if (goodsCategoryId > 0) @where = @where.And(p => p.goodsCategoryId == goodsCategoryId); if (goodsCategoryId > 0)
{
//获取全部数据缓存
var categories = await _coreCmsGoodsCategoryServices.QueryAsync(true, true);
var ids = GoodsHelper.GetChildIds(categories, goodsCategoryId);
@where = @where.And(p => ids.Contains(p.goodsCategoryId));
}
//商品类别ID 关联goods_type.id int //商品类别ID 关联goods_type.id int
var goodsTypeId = Request.Form["goodsTypeId"].FirstOrDefault().ObjectToInt(0); var goodsTypeId = Request.Form["goodsTypeId"].FirstOrDefault().ObjectToInt(0);
if (goodsTypeId > 0) @where = @where.And(p => p.goodsTypeId == goodsTypeId); if (goodsTypeId > 0) @where = @where.And(p => p.goodsTypeId == goodsTypeId);

View File

@@ -25,6 +25,7 @@ using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.DTO; using CoreCms.Net.Model.ViewModels.DTO;
using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions; using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -195,16 +196,9 @@ namespace CoreCms.Net.Web.WebApi.Controllers
className = category.name; className = category.name;
} }
var childs = await _goodsCategoryServices.QueryListByClauseAsync(p => p.parentId == catId, p => p.sort, OrderByType.Asc, true, true); var categories = await _goodsCategoryServices.QueryAsync(true, true);
if (childs.Any()) var ids = GoodsHelper.GetChildIds(categories, catId);
{ where = where.And(p => ids.Contains(p.goodsCategoryId));
var ids = childs.Select(p => p.id).ToList();
where = where.And(p => ids.Contains(p.goodsCategoryId) || p.goodsCategoryId == catId);
}
else
{
where = where.And(p => p.goodsCategoryId == catId);
}
} }
} }
if (!string.IsNullOrWhiteSpace(obj.brandId)) if (!string.IsNullOrWhiteSpace(obj.brandId))