diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java index 761245da..e13136c2 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/controller/api/ApiAreaClassifyController.java @@ -10,6 +10,7 @@ import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; import com.hzs.sale.product.service.IBdAreaClassifyService; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +43,21 @@ public class ApiAreaClassifyController extends BaseController { return AjaxResult.success(list); } + /** + * 查询分类列表(拼接树形结构) + * @param areaClassifyParam + * @return + */ + @GetMapping("/listTree") + public AjaxResult listTree(AreaClassifyParam areaClassifyParam) { + areaClassifyParam.setEnableState(EYesNo.YES.getIntValue()); + areaClassifyParam.setPkCountry(SecurityUtils.getPkCountry()); + + List> treeList = iBdAreaClassifyService.selectByAreaClassifyListAll(areaClassifyParam); + return AjaxResult.success(treeList); + } + + /** * 查询第一层分类 diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java index 79ec2e29..cf3f2405 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/mapper/BdAreaClassifyMapper.java @@ -4,6 +4,7 @@ package com.hzs.sale.product.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.sale.product.BdAreaClassify; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import java.util.List; @@ -23,4 +24,6 @@ public interface BdAreaClassifyMapper extends BaseMapper { * @return */ List selectByAreaClassifyList(AreaClassifyParam areaClassifyParam); + + List selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java index 1cdffd24..addaf6b4 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/IBdAreaClassifyService.java @@ -1,8 +1,10 @@ package com.hzs.sale.product.service; +import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.sale.product.BdAreaClassify; import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import com.hzs.system.sys.dto.LoginUser; @@ -51,4 +53,6 @@ public interface IBdAreaClassifyService extends IService { * @param pkId */ void deleteAreaClassify(Integer pkId); + + List> selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java index c81a9a5b..039530f1 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/service/impl/BdAreaClassifyServiceImpl.java @@ -1,6 +1,8 @@ package com.hzs.sale.product.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.core.enums.EDelFlag; @@ -11,15 +13,15 @@ import com.hzs.sale.product.controller.manage.params.AreaClassifyParam; import com.hzs.sale.product.mapper.BdAreaClassifyMapper; import com.hzs.sale.product.service.IBdAreaClassifyService; import com.hzs.sale.product.service.IBdAreaClassifySpecialAreaService; +import com.hzs.sale.product.vo.AreaClassifyTreeVo; import com.hzs.sale.product.vo.AreaClassifyVo; import com.hzs.system.sys.dto.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 商品分类 服务实现类 @@ -108,4 +110,31 @@ public class BdAreaClassifyServiceImpl extends ServiceImpl> selectByAreaClassifyListAll(AreaClassifyParam areaClassifyParam) { + List flatList = baseMapper.selectByAreaClassifyListAll(areaClassifyParam); + + flatList.forEach(vo -> { + vo.setId(String.valueOf(vo.getPkId())); + vo.setParentId(vo.getPkParent() != 0L ? String.valueOf(vo.getPkParent()) : "0"); + }); + + + return TreeUtil.build(flatList, "0", (node, tree) -> { + tree.setId(node.getId()); + tree.setParentId(node.getParentId()); + tree.setName(node.getClassifyName()); + tree.putExtra("classifyImg",node.getClassifyImg()); + tree.putExtra("classifyName",node.getClassifyName()); + tree.putExtra("creationTime",node.getCreationTime()); + tree.putExtra("enableState",node.getEnableState()); + tree.putExtra("hierarchy",node.getHierarchy()); + tree.putExtra("pkCountry",node.getPkCountry()); + tree.putExtra("pkCreator",node.getPkCreator()); + tree.putExtra("pkId",node.getPkId()); + tree.putExtra("pkParent",node.getPkParent()); + tree.putExtra("sort",node.getSort()); + }); + } + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java new file mode 100644 index 00000000..74b25b74 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/product/vo/AreaClassifyTreeVo.java @@ -0,0 +1,81 @@ +package com.hzs.sale.product.vo; + +import com.hzs.common.core.web.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AreaClassifyTreeVo extends BaseEntity implements Serializable { + + /** + * 主键 + */ + private Integer pkId; + + /** + * 所属专区 + */ + private List specialArea; + + /** + * 分类名称 + */ + private String classifyName; + + + /** + * 排序 + */ + private Integer sort; + + + /** + * 上级专区主键 + */ + private Long pkParent; + + /** + * 分类图片 + */ + private String classifyImg; + + /** + * 是否启用 + */ + + private Integer enableState; + + /** + * 层级 0 表示 第一层 + */ + + private Integer hierarchy; + /** + * 上级分类名称 + */ + private String parentClassifyName; + + /** + * 下级数量 + */ + private Integer levelCount; + + /** + * 是否推荐 0 推荐 1 不推荐 + */ + + private Integer isRecommend; + + private String id; + + private String parentId; + + private List children = new ArrayList<>(); + + private AreaClassifyTreeVo Extra; +} diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml index 34c6f0a9..ae7a86af 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/product/BdAreaClassifyMapper.xml @@ -73,5 +73,42 @@ order by ac.SORT desc +