diff --git a/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Category.java b/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Category.java new file mode 100644 index 0000000000000000000000000000000000000000..b490b996eaaf735a3a7b8ae41566c27b776b6b2a --- /dev/null +++ b/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Category.java @@ -0,0 +1,38 @@ +package io.jpress.module.product.model; + +import java.util.List; + +/** + * anjie QQ489879492 + * 商品层级分类 + */ +public class Category { + //分类 + private ProductCategory productCategory; + //分类的子类 + List plist; + + public ProductCategory getProductCategory() { + return productCategory; + } + + public void setProductCategory(ProductCategory productCategory) { + this.productCategory = productCategory; + } + + public List getPlist() { + return plist; + } + + public void setPlist(List plist) { + this.plist = plist; + } + + @Override + public String toString() { + return "Category{" + + "productCategory=" + productCategory + + ", plist=" + plist + + '}'; + } +} diff --git a/module-product/module-product-web/src/main/java/io/jpress/module/product/directive/ProductCategoriesListDirective.java b/module-product/module-product-web/src/main/java/io/jpress/module/product/directive/ProductCategoriesListDirective.java new file mode 100644 index 0000000000000000000000000000000000000000..1253ff4a6578b510c9dd585ef200f111d39d1a44 --- /dev/null +++ b/module-product/module-product-web/src/main/java/io/jpress/module/product/directive/ProductCategoriesListDirective.java @@ -0,0 +1,80 @@ +package io.jpress.module.product.directive; + +import com.jfinal.aop.Inject; +import com.jfinal.template.Env; +import com.jfinal.template.io.Writer; +import com.jfinal.template.stat.Scope; +import io.jboot.web.directive.annotation.JFinalDirective; +import io.jboot.web.directive.base.JbootDirectiveBase; +import io.jpress.module.product.model.Category; +import io.jpress.module.product.model.ProductCategory; +import io.jpress.module.product.service.ProductCategoryService; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author anjie 安杰 QQ489879492 + * @version V1.0 + * @Title: 商品多级分类 + */ +@JFinalDirective("productCategoriesList") +public class ProductCategoriesListDirective extends JbootDirectiveBase { + + @Inject + private ProductCategoryService categoryService; + + @Override + public void onRender(Env env, Scope scope, Writer writer) { + List categoryList= getCategoryList(); + scope.setLocal("productCategoriesList", categoryList); + renderBody(env, scope, writer); + } + + /** + * 获取菜单列表 + */ + private List getCategoryList(){ + + List categoryList = new ArrayList<>(); + List categories = categoryService._findListByType(ProductCategory.TYPE_CATEGORY); + for(ProductCategory p:categories){ + if(p.isTop()){ + Category category = new Category(); + category.setProductCategory(p); + List cList = new ArrayList<>(); + categoryRecursion(cList,categories,p); + category.setPlist(cList); + categoryList.add(category); + } + } + + return categoryList; + } + + /** + * 子类递归方法 + * @param cList + * @param categories + * @param p + */ + private void categoryRecursion(List cList, List categories, ProductCategory p){ + + for(ProductCategory p1:categories){ + if(!p1.isTop()&&p1.getParentId()==p.getId()){ + Category c = new Category(); + c.setProductCategory(p1); + List cList1 = new ArrayList<>(); + categoryRecursion(cList1,categories,p1); + c.setPlist(cList1); + cList.add(c); + } + } + + } + + @Override + public boolean hasEnd() { + return true; + } +}