diff --git a/module-product/module-product-service-provider/src/main/java/io/jpress/module/product/service/provider/ProductCategoryServiceProvider.java b/module-product/module-product-service-provider/src/main/java/io/jpress/module/product/service/provider/ProductCategoryServiceProvider.java index e3ba59dd88d90b5fe41394074bdc09045938d98a..d973b1311e430d18b7e9f7e359620fa054337e10 100644 --- a/module-product/module-product-service-provider/src/main/java/io/jpress/module/product/service/provider/ProductCategoryServiceProvider.java +++ b/module-product/module-product-service-provider/src/main/java/io/jpress/module/product/service/provider/ProductCategoryServiceProvider.java @@ -130,6 +130,51 @@ public class ProductCategoryServiceProvider extends JbootServiceBase findOrCreateByCategoryString(String[] Categorys) { + if (Categorys == null || Categorys.length == 0) { + return null; + } + + List productCategories = new ArrayList<>(); + + boolean needClearCache = false; + + for (String cate : Categorys) { + + if (StrUtil.isBlank(cate)) { + continue; + } + + //slug不能包含字符串点 " . ",否则url不能被访问 + String slug = cate.contains(".") + ? cate.replace(".", "_") + : cate; + + Columns columns = Columns.create("type", ProductCategory.TYPE_CATEGORY); + columns.add(Column.create("slug", slug)); + + ProductCategory productCategory = DAO.findFirstByColumns(columns); + + if (productCategory == null) { + productCategory = new ProductCategory(); + productCategory.setTitle(cate); + productCategory.setSlug(slug); + productCategory.setType(ProductCategory.TYPE_CATEGORY); + productCategory.save(); + needClearCache = true; + } + + productCategories.add(productCategory); + } + + if (needClearCache) { + AopCache.removeAll("productCategory"); + } + + return productCategories; + } + @Override public ProductCategory findFirstByTypeAndSlug(String type, String slug) { diff --git a/module-product/module-product-service/src/main/java/io/jpress/module/product/service/ProductCategoryService.java b/module-product/module-product-service/src/main/java/io/jpress/module/product/service/ProductCategoryService.java index 9db0bcb2e1e2327409035e7d1ed4d6517cbc3deb..3acb6014fc9e0a22b496e11ab75be5ebd2334ef9 100644 --- a/module-product/module-product-service/src/main/java/io/jpress/module/product/service/ProductCategoryService.java +++ b/module-product/module-product-service/src/main/java/io/jpress/module/product/service/ProductCategoryService.java @@ -190,6 +190,7 @@ public interface ProductCategoryService { List findListByType(String type, String orderBy, Integer count); List findOrCreateByTagString(String[] tags); + List findOrCreateByCategoryString(String[] Category); ProductCategory findFirstByTypeAndSlug(String type, String slug); diff --git a/module-product/module-product-web/src/main/webapp/WEB-INF/views/admin/product/product_list.html b/module-product/module-product-web/src/main/webapp/WEB-INF/views/admin/product/product_list.html index bc73d8f0c8b59c1e8a824b22548a0ada4f26209d..86a349e26afd97c68228447deb1d7a7c8c73f24d 100644 --- a/module-product/module-product-web/src/main/webapp/WEB-INF/views/admin/product/product_list.html +++ b/module-product/module-product-web/src/main/webapp/WEB-INF/views/admin/product/product_list.html @@ -46,9 +46,9 @@