diff --git a/CoreCms.Net.Utility/Helper/GoodsHelper.cs b/CoreCms.Net.Utility/Helper/GoodsHelper.cs
index 891155fc..de7045a0 100644
--- a/CoreCms.Net.Utility/Helper/GoodsHelper.cs
+++ b/CoreCms.Net.Utility/Helper/GoodsHelper.cs
@@ -80,6 +80,37 @@ namespace CoreCms.Net.Utility.Helper
#endregion
+ #region 递归获取下级所有序列
+ ///
+ /// 递归获取下级所有序列
+ ///
+ ///
+ [Description("递归获取下级所有序列")]
+ public static List GetChildIds(List categories, int parentId)
+ {
+ var ids = new List { parentId };
+ ids = GetChildrenIds(categories, parentId, ids);
+ return ids;
+ }
+
+ ///
+ /// 迭代方法
+ ///
+ ///
+ ///
+ ///
+ ///
+ private static List GetChildrenIds(List oldNavs, int parentId, List 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 获取可用库存
///
@@ -120,16 +151,9 @@ namespace CoreCms.Net.Utility.Helper
return url;
}
}
- #endregion
-
- #region 小程序端获取编码后的分类集合
-
-
-
#endregion
#region 后端判断提交的商品属性值是否符合规则(判断内容,只允许中文,字母,数字,和-,/)
-
///
/// 判断内容,只允许中文,字母,数字,和-,/
///
@@ -139,17 +163,7 @@ namespace CoreCms.Net.Utility.Helper
public static bool FilterChar(string 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
diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
index fd60f369..ea7cecd7 100644
--- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
@@ -172,8 +172,18 @@ namespace CoreCms.Net.Web.Admin.Controllers
var selectTreeSelectNodeId = Request.Form["selectTree_select_nodeId"].FirstOrDefault().ObjectToInt(0);
if (selectTreeSelectNodeId > 0) @where = @where.And(p => p.goodsCategoryId == selectTreeSelectNodeId);
//商品分类ID 关联category.id int
+
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
var goodsTypeId = Request.Form["goodsTypeId"].FirstOrDefault().ObjectToInt(0);
if (goodsTypeId > 0) @where = @where.And(p => p.goodsTypeId == goodsTypeId);
diff --git a/CoreCms.Net.Web.WebApi/Controllers/GoodController.cs b/CoreCms.Net.Web.WebApi/Controllers/GoodController.cs
index 5e827036..205b091e 100644
--- a/CoreCms.Net.Web.WebApi/Controllers/GoodController.cs
+++ b/CoreCms.Net.Web.WebApi/Controllers/GoodController.cs
@@ -25,6 +25,7 @@ using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.DTO;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
+using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -195,16 +196,9 @@ namespace CoreCms.Net.Web.WebApi.Controllers
className = category.name;
}
- var childs = await _goodsCategoryServices.QueryListByClauseAsync(p => p.parentId == catId, p => p.sort, OrderByType.Asc, true, true);
- if (childs.Any())
- {
- 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);
- }
+ var categories = await _goodsCategoryServices.QueryAsync(true, true);
+ var ids = GoodsHelper.GetChildIds(categories, catId);
+ where = where.And(p => ids.Contains(p.goodsCategoryId));
}
}
if (!string.IsNullOrWhiteSpace(obj.brandId))